“It’s not about what’s right. It’s about what survives contact with the world.”
1. The Idea That Shouldn’t Have Worked
“Worse is better” sounds like a joke. Or an excuse. But Richard Gabriel was dead serious when he said it in 1990 — and it still hits a nerve.
He was living in the world of Lisp: expressive, correct, deeply elegant. The kind of system you’d build if you wanted to do everything right. It wasn’t just technically beautiful — it was philosophically beautiful. A kind of Platonic software ideal. But he noticed something unsettling: the systems that spread weren’t the best. They were the ones that worked. That were simple. That were just good enough.
Meanwhile, Unix — clunky, global-stated, full of edge cases — was taking over the world. And it wasn’t winning because it was better. It was winning because it was there. It was small enough to port, simple enough to understand, and flexible enough to evolve.
Gabriel’s insight was harsh but true: the world doesn’t reward the right thing. It rewards what survives. The uncomfortable truth is that survival often looks like compromise.
2. Two Cultures, Two Philosophies
MIT wanted cathedrals: internally consistent, theoretically pure. Bell Labs wanted bazaars: good enough to be useful, simple enough to live.
This wasn’t just a technical difference. It was cultural. Emotional. Philosophical. It was about values. About what you honour when you write code. And more importantly, who you’re writing it for.
Design Value | MIT / The Right Thing | NJ / Worse Is Better |
---|---|---|
Simplicity | Interface over impl. | Implementation over interface |
Correctness | Must be correct | Correct enough to be useful |
Consistency | Non-negotiable | Sacrificed if needed |
Completeness | Cover all cases | Focus on common cases |
One aimed for timeless elegance.
The other just wanted to ship. And once shipped, to spread.
MIT’s version of simplicity was abstract — the kind you see on a whiteboard. New Jersey’s was brutal and honest: can someone fix this at 2am on a production box?
Both are valid. Both have their place. But they build very different kinds of systems.
3. Elegance vs. Evolution
The Right Thing tries to cover everything upfront. Worse is Better starts with as little as possible and fills in the gaps over time. It assumes you can’t see the whole game from the beginning. So you design for change instead of control.
It’s not about being messy — it’s about being responsive.
Small systems evolve. Big systems calcify. Modularity helps, but what really helps is humility.
Evolution needs constraints. Simplicity isn’t just easier to write — it’s easier to rewrite. And that’s where the real power lies. If you’ve ever worked on a legacy codebase, you know the difference between clever and clear. Clear gets edited. Clever gets avoided.
That’s why Worse is Better doesn’t mean worse forever. It means worse now — in order to get better later.
4. The Graveyard of the Good
Lisp. Smalltalk. Plan 9. Beautiful systems. Brilliant ideas. And almost nobody used them.
They were elegant — but not portable. Complete — but not simple.
And they died quiet deaths while Unix, C, JavaScript, and Git kept spreading.
You see this again and again. A language with hygienic macros and dependent types can’t make it past the devs who can’t install it on Windows. An OS that solves distributed systems elegantly dies because no one can boot it on bare metal. They’re right — and still gone.
The lesson?
Software that needs the world to change first will never get the chance.
The tragedy isn’t that these systems weren’t good. It’s that they were too good, too early, too brittle. They aimed for the stars, and hit a wall called reality.
5. The Real Lesson
“Worse is Better” isn’t permission to be sloppy — it’s a reminder to stay real.
The systems that win are the ones that survive contact with the world.
The ones that are easy to adopt. Easy to change. Easy to forgive.
Simplicity is portable. Portability is power. Evolution is forgiveness over time.
Start small. Ship early. Listen more than you architect.
Use elegance where it earns its keep — not where it gets in the way.
If you optimise for beauty, you might get something perfect.
If you optimise for reach, you might get something lasting.
Worse isn’t always better.
But if it works — it gets the chance to become better.
And in the end, that’s the real game: not being right, but being around long enough to become right.