Laws of Computer Science and Software Development
Like in any other field there are laws in computer science as well. Knowing laws of computer science helps you make better decisions and create better software.
Work expands so as to fill the time available for its completion.
Abraham H. Maslow’s law
If all you have is a hammer, everything looks like a nail.
Adding manpower to a late software project makes it later.
Anything that can go wrong — will go wrong.
Anything that can go wrong, will — at the worst possible moment.
It always takes longer than you expect, even when you take into account Hofstadter’s law.
Software is getting slower more rapidly than hardware becomes faster.
The speedup of a program using multiple processors in parallel computing is limited by the time needed for the sequential fraction of the program.
Any piece of software reflects the organizational structure that produced it.
Each unit (method) should only talk to its friends; don’t talk to strangers.
Ninety ninety rule by Tom Cargill
The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.
All problems in computer science can be solved by another level of indirection.
There is always one more bug.
The list is not limited, so let’s make a break here.