Software Engineering is not always fun and sometimes we face results we never except, but there exits a set of laws people came up with over time to answer these failures and patterns.
1. Amara's Law
We tend to overestimate the effect of a technology in the short run and underestimate the effect in the long run.
2. Brook's Law
Adding manpower to a late software project makes it later.
3. Conway's Law
Organizations design systems that mirror their own communication structure.
4. Cunningham's Law
The best way to get the right answer on the internet is not to ask a question; it's to post the wrong answer.
5. Gall's Law
A complex system that works is invariably found to have evolved from a simple system that worked.
6. Goodhart's Law
When a measure becomes a target, it ceases to be a good measure.
7. Hofstadter's law
It always takes longer than you expect, even when you take into account Hofstadter's Law.
8. Kerckhoffs's principle
A cryptographic system should be secure even if everything about the system, except the key, is public knowledge.
9. Knuth's optimization principle
Premature optimization is the root of all evil.
10. Linus's law
Given enough eyeballs, all bugs are shallow.
11. Moore's Law
The number of transistors in a dense integrated circuit doubles about every two years.
12. Murphy's law
Anything that can go wrong will go wrong.
13. Ninety-ninety rule
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.
14. Norvig's Law
Any technology that surpasses 50% penetration will never double again.
15. Pareto Principle
For many outcomes, roughly 80% of consequences come from 20% of causes.
16. Parkinson's Law
Work expands so as to fill the time available for its completion.
17. Postel's Law
Be conservative in what you do, be liberal in what you accept from others.
18. Peter principle
In a hierarchy, every employee tends to rise to his level of incompetence.
19. Price’s law
50% of the work is done by the square root of the total number of people who participate in the work.
20. (5) Laws of Software Estimates
Software estimates are waste, non-transferable, wrong, temporary and necessary.
21. Sturgeon's Law
Ninety percent of everything is crap.
22. Wirth's Law
Software is getting slower more rapidly than hardware is becoming faster.
These laws are collected from various sources and I learned a thing or two in the process. There are still some laws and principles I might have missed since I tried to avoid more technical one. While these are not absolute by any means, being aware of these helps us save ourselves from chaos sometimes.