I cook software
Why I think of building products as cooking — mise en place, tasting as you go, and never serving something you would not eat yourself.
I have a confession: I do not really think of myself as a programmer. I think of myself as a cook.
A cook gets a raw idea from someone — a craving, a half-sentence, "could we make it do the thing?" — and turns it into something you can put on a table. Programming is just the knife work.
Mise en place
Before a single line of code, I like to line up the ingredients:
- The idea. What are we actually making? Say the dish out loud.
- The constraints. Time, budget, team, and the one weird thing that must work.
- The taste test. How will we know it is good? Write it down before you are hungry.
Skipping this step is how you end up cooking a five-course meal for a party of one.
Taste as you go
You would not cook a curry by throwing everything in and hoping. You taste, you adjust, you taste again. Software is the same:
Ship small, look at it, fix it, ship it again.
Small batches are not a compromise. They are how you avoid serving something nobody ordered.
Never serve what you would not eat
My rule is simple: if I would not use it, I do not ship it. That single question catches more bad product decisions than any planning meeting ever has.
It is also how I ended up caring so much about the small stuff — the loading state, the empty state, the error nobody thought to write.
And the bugs
Every kitchen has pests. In software they are called bugs, and I have a very personal relationship with them: I hunt them, I squash them, and occasionally — you saw the website — I eat them.
Good software is less about never making a mess and more about cleaning it up fast, with a smile, before anyone notices.
Now go cook something.
Enjoyed it? There is more where that came from.
Read more →