Comparison
Accidental complexityvsEssential complexity
Accidental complexity
half the file is there to work around a framework decision that has nothing to do with the feature.
Complexity that comes from the tools, the history and the workarounds rather than from the problem. Build configuration, three serialisation formats, a caching layer added for a load spike in 2021 — all of it real work that would not exist if the problem were solved fresh today. It is the only kind you can actually remove, which is why separating it from essential complexity is the first move in any 'this is too complicated' conversation.
Full entry →Essential complexity
the rules really are that fiddly, because tax law is that fiddly, and no rewrite will make them simpler.
The complexity that belongs to the problem itself and would exist in any correct solution. Pricing with regional tax rules, a booking system with cancellations, a payroll with statutory edge cases — none of that shrinks when you change language or framework. Naming it matters because it ends a certain kind of unproductive argument: you cannot design this away, you can only decide where to put it.
Full entry →