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.