1. Any running program is obsolete.
2. Any planned program costs more and takes longer.
3. Any useful program will have to be changed.
4. Any useless program will have to be documented.
5. The size of a program expands to fill all available memory.
6. The value of a program is inversely proportional to the weight of output
7. The complexity of a program grows until it exceeds the capability of the
maintainers.
8. Information necessitating a change in design is always conveyed to the
implementors after the code is written. Corollary: Given a simple
choice between one obviously right way and one obviously wrong way,
it is often wiser to choose the wrong way, so as to expedite
subsequent revision.
9. The more innocuous a modification appears, the more code it will
require rewriting.
10. If a test installation functions perfectly, all subsequent systems
will malfunction.
11. Not until a program has been in production for at least six months
will the most harmful error be discovered.
12. Interchangeable modules won't.
13. Any system that relies on computer reliability is unreliable.
14. Any system that relies on human reliability is unreliable.
15. Investment in reliability increases until it exceeds the probable
cost of errors, or until someone insists on getting some useful
work done.
16. Adding manpower to a late software project makes it later.
17. There's always one more bug.