Laws of Software Development

Published on February 10, 2008

This entry is quoting from BlueFlavor, GlobalNerdy and haacked. Very interesting and worthy-of-remembering laws regarding software development.

Sturgeon’s Revelation

Ninety percent of everything is crud.

The Peter Principle

In a hierarchy, every employee tends to rise to his level of incompetence.

Hofstadter’s Law

A task always takes longer than you expect, even when you take into account Hofstadter’s Law.

Murphy’s Law

If anything can go wrong, it will.

Brook’s Law

Adding manpower to a late software project makes it later.

A corollary:

The bearing of a child takes nine months, no matter how many women are assigned.

Conway’s Law

Any piece of software reflects the organizational structure that produced it

Another way of putting it:

If you have four groups working on a compiler, you’ll get a 4-pass compiler.

Linus’s Law

Given enough eyeballs, all bugs are shallow.

Wirth’s law

Software gets slower faster than hardware gets faster.

Fitt’s Law

Time = a + b log2 ( D / S + 1 )

Which means: The time to acquire a target is a function of the distance to and the size of the target.

Hick’s Law

The time to make a decision is a function of the possible choices he or she has.

Mathematically:

Time = b log2(n + 1)

Lister’s Law

People under time pressure don’t think faster.

Occam’s Razor

The explanation requiring the fewest assumptions is most likely to be correct.

Hartree’s Law

Whatever the state of a project, the time a project-leader will estimate for completion is constant.

Augustine’s Second Law of Socioscience

For every scientific (or engineering) action, there is an equal and opposite social reaction.

Clarke’s Third Law

Any sufficiently advanced technology is indistinguishable from magic.

Dilbert Principle

The most ineffective workers are systematically moved to the place where they can do the least damage: management.

Joy’s Law

smart(employees) = log(employees), or “No matter who you are, most of the smartest people work for someone else.”

Pesticide Paradox

Every method you use to prevent or find bugs leaves a residue of subtler bugs against which those methods are ineffectual.