Complex Is Better Than Complicated
The Distinction Matters
These two words get used interchangeably, but they mean different things.
Complexity is inherent. Some problems are genuinely hard. A distributed consensus algorithm is complex. A tax calculation with fifty jurisdictions is complex. You can’t make these simpler without losing correctness.
Complication is incidental. It’s the complexity you add on top of the problem – the unnecessary layers, the premature abstractions, the clever indirection that serves no current purpose. Complication doesn’t come from the problem. It comes from the solution.
When Complexity Is Warranted
Not all complexity is bad. A circuit breaker in a distributed system adds complexity, but it prevents cascading failures. A caching layer adds complexity, but it keeps your application responsive under load. These are deliberate trade-offs: you accept the cognitive cost because the benefit is real and immediate.
The key word is warranted. Warranted complexity solves a problem you actually have. You can point to the requirement, the failure mode, or the constraint that demands it. If you can’t articulate why the complexity exists, it’s probably complication in disguise.
How Complication Sneaks In
Complication rarely arrives as an obvious mistake. It accumulates through reasonable-sounding decisions:
- “Let’s add an abstraction layer so we can swap implementations later.” (You never swap.)
- “Let’s make this configurable so it works for every team.” (Only one team uses it.)
- “Let’s build a plugin system in case we need extensibility.” (You don’t.)
Each decision makes sense in isolation. Together, they bury the actual logic under layers that exist to serve hypothetical futures. This is the same instinct that drives over-engineering – building for problems you don’t have yet.
Choosing Complexity Over Complication
The discipline is knowing when to accept complexity and when to refuse complication. A few heuristics:
- Can you explain the complexity in one sentence? If the justification is clear and concrete, it’s probably warranted. If it takes a paragraph of hypotheticals, it’s probably complication.
- Does removing it break something today? Warranted complexity is load-bearing. Complication can be removed without consequence.
- Did you add it to solve a problem, or to prevent one? Solving real problems creates complexity. Preventing imaginary problems creates complication.
The goal isn’t to minimize complexity at all costs. It’s to ensure that every piece of complexity earns its place.
The Zen Got It Right
“Complex is better than complicated” is not a license to build complex systems. It’s a reminder that when a problem demands complexity, the answer is to embrace that complexity honestly – not to paper over it with layers of complication that make the system harder to understand.
Simple when you can. Complex when you must. Complicated never.
This article was originally posted on LinkedIn.