Laws of Computer Programming
Any given program, when running, is obsolete.
Any given program costs more and takes longer.
Any given program will expand to fill available memory.
If a program is useful, it will have to be changed.
If a program is useless, it will have to be documented.
The value of a program is proportional to the weight of its output.
Program complexity grows until it exceeds the capability of the
programmer who must maintain it.
The first ninety percent of the task takes ninety percent of the time,
and the last ten percent takes the other ninety percent.
Adding manpower to a late software project makes it later.
Undetectable errors are infinite in variety, in contrast to detectable
errors, which by definition are limited.
In any collection of data, the figure most obviously correct, beyond
all need of checking, is the mistake.
Complex problems have simple, easy to understand wrong answers.
The solution to the problem changes the problem.
First Law of Revision:
Information necessitating a change of design will be conveyed to
the designer after, and only after, the plans are complete.
(Often called the 'Now They Tell Us' Law)
Second Law of Revision:
The more innocuous the modification appears to be, the further its
influence will extend and the more plans will have to be redrawn.
Corollary to the First Law of Revision:
In simple cases, presenting one obvious right way versus one obvious
wrong way, it is often wiser to choose the wrong way, so as to
expedite subsequent revision.
Murphy's Axiom:
It is impossible to make anything foolproof because fools are so ingenious.
Law of Cybernetic Entomology:
There's always one more bug.