Laws, Postulate, Axioms, and Rules of Programming


Laws of Computerdom:

Fuzzy project objectives are used to avoid the embarrassment of estimating the corresponding costs.
A carelessly planned project takes three times longer to complete than expected; a carefully planned project takes only twice as long.
The effort required to correct course increases geometrically with time.
If builder's built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.
Computers are unreliable, but humans are even more unreliable.
Any system which depends on human reliability is unreliable.
Undetected errors are infinite in variety, in contrast to detectable errors, which are by definition limited.
Investment in reliability will increase until it exceeds the probable cost of errors, or until someone insists on getting some useful work done.
To err is human, but to really foul things up requires a computer.
Teamwork is essential. It allows you to blame someone else.

Laws of Computer Programming:

Any given program costs more and takes longer than expected.
If a program is useful, it will have to be changed.
If a program is useless, it will have to be documented.
Any given program will expand to fill all available memory.
The value of a program is proportional to the weight of its output.
Program complexity grows until it exceeds the capacity of the programmer who must maintain it.

Programming Postulates:

Profanity is the one language all programmers know best.
If the input editor has been designed to reject all bad input, an ingenious idiot will discover a method to get bad data past it.
Complex problems have simple, easy to understand wrong answers.
If you hit two keys on the keyboard, the one that you do not want will appear on the screen.

Observations:

An expert is that person most surprised by the latest evidence to the contrary.
To spot an expert, pick the one who predicts the job will take the longest and cost the most.

Axiom:

Only errors exist.

Corollary:

One man's error is another man's data.

Last modified: 6/15/95