Systems & Structure
Models for decomposing systems, placing boundaries, and designing interfaces that survive contact with real consumers and real change.
- No. 015
Coupling and Cohesion
Keep things that change together close together, and things that change independently apart.
- No. 016
Separation of Concerns
Divide a system so each part addresses one distinct concern and can be reasoned about on its own.
- No. 017
Bounded Context
A model is only valid inside an explicit boundary; the same word can mean different things in different contexts.
- No. 018
Law of Leaky Abstractions
All non-trivial abstractions leak; eventually you have to understand what is beneath them.
- No. 019
Postel's Law
Be conservative in what you send and liberal in what you accept.
- No. 020
Hyrum's Law
With enough users, every observable behaviour of your API will be depended on by somebody.
- No. 021
Theory of Constraints
A system's throughput is set by its bottleneck; improving anything else is an illusion.
- No. 022
Feedback Loops
Outputs that circle back as inputs either stabilise a system (balancing) or amplify it (reinforcing).
- No. 023
Emergence
The behaviour of the whole arises from interactions between parts and cannot be predicted from any part alone.