Murphy’s Laws About Programming
- 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 inversely proportional to the weight of its output.
- Any given program will expand to fill all the available memory.
- Program complexity grows until it exceeds the capability of the programmer who must maintain it.
- Any given program, when running, is obsolete.
- Any given program costs more and takes longer each time it is run.
- Every non- trivial program has at least one bug
- Corollary 1 – A sufficient condition for program triviality is that it have no bugs.
- Corollary 2 – At least one bug will be observed after the author leaves the organization.
- Bugs will appear in one part of a working program when another ‘unrelated’ part is modified.
- The subtlest bugs cause the greatest damage and problems.
- Corollary – A subtle bug will modify storage thereby masquerading as some other problem.
- A ‘debugged’ program that crashes will wipe out source files on storage devices when there is the least available backup.
- A hardware failure will cause system software to crash, and the customer engineer will blame the programmer.
- A system software crash will cause hardware to act strangely and the programmers will blame the customer engineer.
- Undetectable errors are infinite in variety, in contrast to detectable errors, which by definition are limited.
- Adding manpower to a late software project makes it later.
- Make it possible for programmers to write programs in English, and you will find that programmers can not write in English.