Everybody wants to ship quickly.
Yet very few are ready to face the potential embarrassment that comes with shipping quickly.
As a perfectionist, I can deeply relate to this. I always want something to be perfect before shipping.
Uncertainty, loose ends and rough edges make my brain bleed.
Premature optimization provides that instant shot of dopamine espresso my soul craves. Few things grant more joy than spelunking in my mind until something feels just right.
Except I’m completely missing the mark in ways I can’t even comprehend. First versions usually bomb in ways beyond my imagination, but boy does it feel great!
To make matters worse: shipping quickly is a largely solved problem due to AI. But don’t be fooled: shipping quickly is absolutely not the same as iterating quickly.
Shipping != Iterating
You can’t iterate quickly if you ship slowly, but iterating quickly is not the same as shipping quickly.
Read that sentence again and let it sink in.
Shipping slowly is a disaster waiting to happen, because the slower you ship the more disconnected from reality you are.
The longer something takes to ship, the more likely it is to contain wrong decisions that are detached from reality. You’re flying blind. You’re operating based on incorrect and outdated assumptions, plus you’re delaying the necessary feedback from reality that allows you to change course.
Plus, when you do receive the feedback from reality, you’re in the worst position to do something about it, because you’re covered in a mountain of bloat.
The act of shipping something swiftly exposes reality quickly, whether that’s real live code or a quick prototype.
But exposing reality is not even nearly enough. Exposing reality only matters if you use that information and understanding to iterate quickly.
You can iterate slowly when you ship quickly. In fact that’s how most companies like to roll. The companies that care the most about shipping swiftly and speeding up development with AI unfortunately are frequently the worst offenders.
Not because they can’t iterate quickly — they could if they wanted to — but because they’ve already moved on to the next feature they want to put live: Ship and forget.
After a feature is first live is when the work really begins. What can you remove? Where can you add more polish? How can you make it even more simple?
These conversations that require you to slow down and think rarely take place, because we’ve already moved on to the next big thing.
SpaceX operates this way, just look at the raptor rocket in the picture below. The first version is ugly and messy, but does the job. Every version is iterated, perfected and treated as an opportunity to do even better.
If SpaceX can do it with rockets, what’s your excuse for not doing it in your product?
When is the last time you removed something to make it better?
In the age of AI, removing is more important than ever. We should be removing things daily because adding things is easier than ever (plus AI sucks at removing and the default is 10X bloat).
Your first version is usually never the best, in fact if you do your job right, it’s the worst version.
That’s actually the point of the first version: to be the worst.
The first version is about figuring out something that works and should have some rough edges you may want to polish later. If it doesn’t embarrass you in some ways, you probably shipped too late.
But your first version can only be the worst if you iterate on it to make it better. Otherwise it’s both the best and the worst at the same time. Your first version should expose reality and show you all the ways in which you’re wrong.
Many companies never reach this realization, because they’ve already moved on to something new. Or they do but because they’ve built something so complicated that they can’t even tell what works and doesn’t work properly. Or they can tell but the codebase is so complex that they can’t even change it in the way they want to to accommodate the needs of the users and the business.
Remember: most of your users are still stuck with the code you’re not changing because you’re constantly chasing the shiny glitter of something new.
Ship quickly and iterate quickly.
If you're not removing, you’re not iterating.



