On Shipping Half-Finished Ideas
Finished is a feeling. Shipped is a date. The work is learning how to make the unfinished part obvious and safe.
By Julian Hale · Portland, Oregon

I used to treat shipping as a moral event. Either the work was ready, in which case we deserved to ship it, or it was not, in which case we were hiding. That story made me slow and a little vain. Most useful software I have shipped was half-finished in a way we could see.
The trick is not to lower the bar. The trick is to choose which part of the clay is allowed to be wet. A feature can have a crude interface if the data model is honest. It can have a limited audience if the undo path is complete. It cannot have a vague side effect and a shrug.
A shipping checklist I actually use
- What is unfinished, said in the UI, not only in the changelog.
- Who is allowed to touch it.
- How we turn it off without a hero.
- What we will measure after three days, not after the launch party.
Half-finished work that is labeled is a conversation with users. Half-finished work that is polished is a trap. I would rather ship a clay bowl that still shows the ridges of my hands than a glazed thing that leaks.
Continue
craft
Notes on Reading Code Aloud
A cheap review trick: read the change out loud as if you were explaining it to a skeptical friend who cannot see the screen.
craft
A Small Defense of Boring Software
Boring software is not a lack of taste. It is taste applied to other people’s Tuesdays.
agents
The Agent Is a Loop, Not a Person
An agent is not a colleague. It is a loop with tools, memory, and a stopping rule. Treat it like a person and you will design the wrong system.