Ship the Boring Version First

A note on the difference between building something clever and building something that exists.

1 min read ·

Every project I have shipped late was late for the same reason. I built the interesting version before I built the working one.

The trap has a nice shape

You start a feature and you can see the elegant abstraction from where you are standing. Not the version that solves today's problem — the version that solves this whole category of problem, forever, with a clean interface.

It is genuinely more fun to build. That is what makes it dangerous. You are not procrastinating; you are working hard, on the wrong thing, with real conviction.

What boring buys you

The boring version is in front of a user this week. That matters more than it sounds, because roughly half of what you believe about the problem is wrong, and you cannot find out which half from inside your own head.

Every day the clever version spends unbuilt is a day you are accumulating assumptions you cannot test. The abstraction you designed for a category of problems is fitted to an imagined category. When the real usage arrives it rarely matches, and now you have a general solution to a problem nobody has, plus the maintenance burden of having generalised it.

The honest counterargument

Sometimes you do know the shape in advance. If you have built the same thing four times, build the abstraction — you have earned it with evidence.

The test is whether the generality comes from experience or from imagination. Mine, when I am honest, is usually imagination wearing experience's coat.

Build the thing that is embarrassing and works. You can always make it elegant once you know what it is.