Skip to content
Thoughts

Complexity is a trap

March 21, 2026·2 min read

Last month I refactored a feature in Phora. The original was a small architecture project in itself — multiple systems coordinating with each other, managing transitions, routing messages. The replacement was 40 lines of straightforward logic. Same result. A fraction of the moving parts.

The original wasn't written by a bad engineer. It was written by someone who confused thoroughness with quality.

Complexity gets rewarded

There's a reason overengineering persists: it looks impressive. An elaborate multi-layered system tells a better story than a single function that just works. In technical reviews, "what about scale?" puts the burden of proof on simplicity. Nobody asks, "do we actually need this?"

Engineers build elaborate systems not because the problem demands it, but because simple solutions don't make compelling career narratives. You can't build a reputation on the abstraction you chose not to create.

This dynamic is invisible until you're the one maintaining everything. When you work solo, every unnecessary layer is a future 3am problem.

When complexity is earned

Not all complexity is a lie. Some problems are genuinely hard — systems serving millions of users simultaneously, real-time data that has to stay consistent, or compliance requirements across multiple countries. That complexity is earned. It maps directly to a constraint that exists right now.

The test is simple: can you point to the specific problem this complexity solves? If the answer involves hypothetical futures — "when we scale," "if requirements change," "in case we need to" — it's speculative. And speculative complexity has a 100% maintenance cost with a near-zero probability of payoff.

I apply one rule: if I can't explain why something is complex in one sentence, it shouldn't be.

The hardest skill

Adding code feels productive. Removing it feels risky. But the real engineering skill — the one that takes years to develop — is the restraint to build less.

AI makes this worse. It generates complex solutions effortlessly, and complexity that costs nothing to create still costs everything to maintain.

The best code is code you didn't write. The best architecture is one you can hold in your head.

Simplicity isn't the absence of thinking. It's the result of it.

There's always a next level.

If you like what you see — whether you're building a product or a team — I'd love to hear about it.