Simplicity as a Feature
Mar 1, 2025
The hardest engineering skill isn't building complex systems — it's resisting the urge to.
We are trained, culturally, to equate complexity with sophistication. A simple solution feels like you didn't try hard enough. A complex one feels like you earned your salary. This is backwards.
Simple systems are harder to build. They require you to deeply understand the problem before you can model it cleanly. Complex systems are easy — you just keep adding until it works. Simplicity is a constraint. Complexity is the absence of one.
Some things I keep coming back to:
Complexity is not free. Every abstraction you add is code someone has to read, debug, and maintain. Every layer of indirection is a place where bugs hide. Every dependency is a future upgrade you'll have to do.
Simple doesn't mean naive. The Unix philosophy — do one thing, do it well, compose with others — is simple and powerful precisely because it's disciplined, not despite it.
The question is always: what does this simplify? If I can't answer that, I don't add it.
The measure of good engineering isn't how much you built. It's how much you didn't.