Dev dictionary
A growing reference of the laws, principles and adages that shape how software gets built — each with the core lesson for developers.
Brooks' Law
Adding manpower to a late software project makes it later.
Lesson: Deadlines cannot be solved by simply hiring more people at the last minute.
Conway's Law
Any organisation that designs a system will produce a design whose structure is a copy of the organisation's communication structure.
Lesson: Fix your team structure before you try to fix your software architecture.
Gall's Law
A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work.
Lesson: Build a simple monolith that works before building a complex distributed system.
Goodhart's Law
When a measure becomes a target, it ceases to be a good measure.
Lesson: Never use code metrics (like code coverage) as strict performance targets.
Hyrum's Law
The Law of Implicit Interfaces
With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviours of your system will be depended on by somebody.
Lesson: Your users rely on your bugs and side-effects, not just your documentation.
Postel's Law
The Robustness Principle
Be conservative in what you do, be liberal in what you accept from others.
Lesson: Write strict outputs, but code your inputs to be highly resilient to variations.