Let me tell you about the product that nearly killed me. Not literally, but in the way that only a project you care about can consume you - the version that was never quite ready, the feature that was never quite right, the design that was never quite polished enough to show to anyone.
I spent three weeks on a single page of Modern Retro before it launched. Three weeks. Adjusting padding, tweaking gradients, rethinking the layout, second-guessing the typography. Three weeks during which the site existed on my laptop and nowhere else. Three weeks during which nobody in the world could see it, use it, or form an opinion about it. Three weeks of perfecting something that nobody had asked for yet.
And do you know what happened when I finally shipped it? Nobody noticed the padding. Nobody commented on the gradients. Nobody had an opinion about the typography. They noticed the idea. They noticed the images. They noticed that this thing existed at all. The stuff I had spent three weeks agonising over was invisible to everyone except me.
That was the week I learned the most important lesson of my building life: shipping beats perfecting. Every single time.
Perfectionism isn't a quality
We've been sold a lie about perfectionism. We've been told it's a virtue - the sign of someone who cares deeply about their work, who has high standards, who won't settle for anything less than the best. Job interviews are full of people claiming "I'm a perfectionist" as though it's a humble brag, a weakness that's actually a strength.
It isn't. Perfectionism is fear wearing a costume. It's the fear of being judged, dressed up as the pursuit of excellence. It's the fear of shipping something imperfect, disguised as having high standards. It's, fundamentally, a mechanism for avoiding the vulnerability of putting your work into the world where other people can see it, react to it, and - worst of all - be indifferent to it.
I know this because I've lived it. Every project I've built has had a moment where I thought "it isn't ready yet." Not because it didn't work, but because it wasn't perfect. The colours were slightly off. The copy could be tighter. The loading time was half a second too slow. The mobile layout had a tiny glitch on one specific screen size. Valid concerns, all of them. And absolutely none of them worth delaying a launch for.
Because here's the truth that perfectionists don't want to hear: nobody else can see the imperfections you're agonising over. You see them because you've been staring at the thing for days or weeks. You've zoomed in to pixel level. You've compared every detail to an imagined ideal that exists only in your head. Meanwhile, the person encountering your product for the first time sees the whole picture, and the whole picture is fine. More than fine. It is impressive. It's something that exists in the world, which is more than most ideas can claim.
The 80/20 of shipping
The Pareto principle applies to product building with almost mathematical precision. Eighty per cent of the value comes from twenty per cent of the effort. That first version - the rough, imperfect, slightly embarrassing version - delivers the vast majority of what the product needs to deliver. The concept. The core experience. The thing that makes someone stop and think "this is interesting."
The remaining twenty per cent of value requires eighty per cent of the effort. The polish. The edge cases. The smooth animations. The perfect responsive breakpoints. The clever error states. The dark mode. The accessibility improvements. The performance optimisation. All important, all worth doing eventually, but absolutely not worth doing before you ship.
I've shipped fourteen products. Not one of them was perfect when it launched. Every single one of them was better than the idea sitting in my head, because ideas in your head have zero users, zero feedback, and zero value to anyone except you.
First Out is the perfect example. When I first launched it, the app had platform positioning data for twelve tube stations. Twelve out of two hundred and seventy-two. That's less than five per cent coverage. A perfectionist would never have shipped that. A perfectionist would have said "we need at least a hundred stations before this is credible" or "we can't launch until we have every line covered" or "what if someone searches for a station we don't have?"
But I shipped it with twelve. And people used it. And they found it useful. And the feedback from those early users told me which stations to add next, which features to build, which problems to solve. The imperfect product taught me more in a week than the perfect plan had taught me in a month.
The graveyard of perfect ideas
For every product that ships imperfectly and improves over time, there are a thousand products that never ship at all because they're waiting to be perfect. The graveyard of perfect ideas is enormous. It's full of brilliant concepts that were sixty per cent built, ninety per cent built, ninety-nine per cent built - and then abandoned because the creator couldn't close the gap between where it was and where they wanted it to be.
I have ideas in that graveyard myself. A daily briefing tool that I designed beautifully, planned meticulously, and never built because I couldn't figure out the perfect data sources. A personal finance dashboard that I wireframed in exhaustive detail and never coded because the design wasn't clean enough. A Japanese flashcard system that I prototyped three times, each time from scratch, because the previous version wasn't quite right.
Do you know what eventually happened with the Japanese learning project? I stopped trying to make it perfect and just shipped something. The version that went live was simpler than any of my three abandoned prototypes. And it worked. People used it. I learned from it. It got better over time. All because I swallowed my pride and shipped something imperfect.
Good enough as a philosophy
I want to be clear about something: "good enough" doesn't mean "bad." Good enough means it works. It means the core value proposition is there. It means someone can use it and get something from it. It means the bones are solid even if the paint is still wet. Good enough is a surprisingly high bar when you actually think about what it requires - you need to have identified the core value, built it, tested it, and deployed it. That's more than most people ever do with their ideas.
Good enough also doesn't mean "never improve." Everything I've shipped has gotten better over time. Modern Retro started with a handful of brands and now has over eighty. The pub guide has expanded its coverage. First Out has quadrupled its station count. CultureTerminal gets new content sources regularly. The improvement never stops. But it starts with shipping.
There's a beautiful simplicity to the "ship then iterate" philosophy. It removes the decision paralysis that comes with trying to get everything right before anyone sees it. It replaces hypothetical problems with real ones. It gives you data instead of assumptions. It turns every launch into the beginning of a conversation rather than the end of a monologue.
And it has a compound effect that perfectionism never achieves. While the perfectionist is still working on their first product, the shipper has launched five, iterated on three, killed one, and learned more from the failures than the perfectionist has learned from their plans. Speed is a strategy. Imperfection is an advantage. Getting it out there's the entire game.
I've fourteen products live right now. Not one of them is perfect. All of them are better than they were on launch day. And every single one of them exists, which is the only thing that matters.
Ship the eighty per cent. The other twenty will come. Or it won't, and that'll be fine too.