Browse engineering laws
30 principles — full text on each page (crawlable HTML, no JS required).
- Conway's Law — Organizations design systems that mirror their own communication structure.
- Brooks's Law — Adding manpower to a late software project makes it later.
- CAP Theorem — A distributed system can only guarantee two of three: Consistency, Availability, Partition Tolerance.
- YAGNI — You Aren't Gonna Need It — don't build features until they are actually needed.
- KISS Principle — Keep It Simple, Stupid — most systems work best when kept simple.
- DRY Principle — Don't Repeat Yourself — every piece of knowledge should have a single, authoritative representation.
- Pareto Principle — Roughly 80% of effects come from 20% of causes.
- Lehman's Laws of Software Evolution — Programs that are used must be continually adapted or they become progressively less satisfactory.
- Goodhart's Law — When a measure becomes a target, it ceases to be a good measure.
- Occam's Razor — The simplest explanation is usually the correct one.
- Premature Optimization — Premature optimization is the root of all evil.
- Dunning-Kruger Effect — Unskilled individuals overestimate their ability; experts underestimate theirs.
- Hofstadter's Law — It always takes longer than you expect, even when you take into account Hofstadter's Law.
- The Ninety-Ninety Rule — The first 90% of the code accounts for the first 90% of development time. The remaining 10% accounts for the other 90%.
- Peter Principle — People in a hierarchy tend to rise to their level of incompetence.
- Gall's Law — A complex system that works evolved from a simple system that worked.
- Linus's Law — Given enough eyeballs, all bugs are shallow.
- Murphy's Law — Anything that can go wrong will go wrong.
- Hanlon's Razor — Never attribute to malice that which is adequately explained by stupidity.
- Hyrum's Law — With enough users, every observable behavior of your system will be depended upon by somebody.
- Law of Demeter — A module should only talk to its immediate friends, not to strangers.
- Robustness Principle — Be conservative in what you send, be liberal in what you accept.
- Fallacies of Distributed Computing — Eight false assumptions that programmers new to distributed systems commonly make.
- Amdahl's Law — The speedup from parallelization is limited by the sequential portion of the task.
- Knuth's Optimization Principle — Measure before you optimize — programmers spend time optimizing non-critical code.
- Inverse Conway Maneuver — Structure your teams to produce the system architecture you want.
- Broken Windows Theory — Neglecting small issues leads to a culture of neglect and larger problems.
- Boy Scout Rule — Always leave the code cleaner than you found it.
- Kerchkhoff's Principle — A cryptographic system should be secure even if everything about the system is public knowledge, except the key.
- Parkinson's Law — Work expands to fill the time available for its completion.