Laws and principles
Software development has accumulated a folklore of laws, rules, principles, and philosophies. Some are informal observations, some are backed by data, and some are no more than adages, but they all compress hard-won lessons into a memorable abstraction.
Some laws and principles describe forces that act on software regardless of process or technology. Conway’s and Metcalfe’s laws are examples. Others are heuristics for individual or team behavior, such as the boy scout rule and bike shedding. A handful, like Goodhart’s law, are cautionary tales about what happens when a measure is mistaken for the thing it measures.
The following laws and principles are distinct from design principles, which guide the shape of a computer program itself. The best known example is probably the five SOLID design principles. The laws and principles listed below tend to operate at the scale of teams, projects, and organizations, rather than statements, classes, and modules. But a few, such as the Law of Demeter, sit close to that boundary.
Index of laws and principles
- 10x programmer
- Atwood’s law
- Bike shedding (or the Law of Triviality)
- The Bitter Lesson
- Boy scout rule
- Brooks’s law
- Cargo-culting
- Commit early, commit often
- Conway’s law
- Cunningham’s law
- Curly’s law
- Do the simplest thing
- Do what I mean (DWIM)
- Doerr’s law
- DRY
- Feature creep
- Feature factory
- Fitts’s law
- Forcing function
- Gall’s law
- Goodhart’s law
- Greenspun’s tenth rule
- Hock principle
- Hofstadter’s law
- Hyrum’s law
- Jevons paradox
- Kerckhoffs’s principle
- Kernighan’s law
- KISS principle
- Lady Lovelace’s objection
- Law of Demeter
- Laws of software evolution
- Leaky abstractions
- Lindy’s law
- Linus’s law
- Little’s law
- Maker’s schedule
- Metcalfe’s law
- Moore’s law
- The Mythical Man-Month
- Ninety-ninety rule
- Norvig’s law
- Not invented here!
- Optimize for deletion
- Pareto principle
- Parkinson’s law
- Peter principle
- Premature optimization
- Principle of least astonishment
- Project paradox*
- Postel’s law
- Rule of least power
- Scaling laws
- Semantic diffusion
- Shirky principle
- Silver bullet
- Software bloat
- Software rot
- Tesler’s law
- Uniform access principle
- Walking skeleton
- Wicked problem
- Wirth’s law
- Worse is better
- Yak shaving
- Zawinski’s law