Complexity is a Choice
essay
Fred Brooks distinguished between essential complexity — the irreducible difficulty of the problem — and accidental complexity, the difficulty we introduce through our own choices. Most codebases suffer far more from the latter.
1. The Ratchet Effect
Complexity ratchets upward. Each small decision to add an indirection, introduce a framework, or split a service adds a thin layer of accidental complexity. No single layer is the problem. The accumulation is.
2. Simplicity as Discipline
Simplicity is not the absence of thought but its distillation. Writing simple code requires understanding the problem deeply enough to see what can be removed.