There's a peculiar paradox in building things: the simpler something appears, the harder it usually was to make. This seems counterintuitive. Shouldn't simple things be... simple to create?
I've been thinking about this a lot lately. Every time I sit down to build something "simple," I end up in a rabbit hole of complexity. A basic to-do app becomes a meditation on state management. A landing page spirals into typography hell. A "quick script" evolves into a distributed system.
Simple things are hard because simplicity is the result of ruthless editing. It's not the absence of complexity—it's complexity that's been carefully hidden, resolved, or eliminated entirely.
Think of an iceberg. The visible part—the simple interface, the clean design, the obvious feature—is just 10% of the work. Below the waterline sits the other 90%: edge cases handled, decisions made, alternatives rejected, and compromises reached.
"I would have written a shorter letter, but I did not have the time." — Blaise Pascal (maybe)Pascal's quote captures it perfectly. Brevity takes effort. Simplicity takes even more.
In my experience, simplicity has three main enemies:
The solution is deletion. Not just of code, but of ideas. Of possibilities. Of the fear that you're missing something important.
Every feature you don't build is a feature you don't have to maintain. Every option you don't offer is a decision your users don't have to make. Every line of code you don't write is a line that can't have bugs.
This is harder than it sounds. We're wired to add, not subtract. Removing something feels like loss, even when that something was making things worse.
There's a distinction worth making here: simple is not the same as easy.
Simple is a destination you reach through difficulty, not a shortcut that avoids it.
How do you get better at making simple things? A few approaches I've found helpful:
Why bother with all this? Because simple things are better. They're easier to use, easier to understand, easier to maintain, and easier to love. They respect the user's time and attention. They solve the problem without creating new ones.
And perhaps most importantly: simple things last. Complexity is fragile. Simplicity is resilient.
So next time you're building something and it feels too hard for how simple the result should be—take heart. That difficulty is the price of simplicity. And it's worth paying.