NOTE This is an unedited archive post. Links, images and opinions may be broken.

Making Great Software Is Like Making Great Food


Every little thing has to be magic

I was at a moderately fancy restaurant a while ago and it struck me how the food I was eating was just like good software. (I know, I’m a treat at dinner parties.)

I don’t remember exactly what I was eating, but picture a big square white plate. In the middle, some small slices of meat in a light gravy. In each corner, a different vegetable. On each vegetable, a different flavouring. And scattered around the plate, little “drops” of sauce in which to dip the meat and vegetables.

Each item on the plate surely had a lengthly, complicated time-consuming recipe on its own. The meat — tenderized and seared and slow-cooked all day to be soft but retain flavour. The gravy — reduced and stewed for hours. Each vegetable — fussed over to be cooked for exactly the right amount of time, with precisely measured flavour combinations. Each drop of sauce — combined, reduced, strained, adjusted.

Not to mention the number of previous iterations they went through to get all the flavours in this version balanced just right. More salt here, less sugar there, try baking this for longer at a lower temperature.

Care and attention to detail everywhere. Impossible to execute, time and deliver hot if you’re one person in the kitchen. That kind of thing has to be a team effort and every member of that team has to be on their game. Meat guy can’t let it get too dry. Sauce guy can’t forget to stir every few minutes.

I’m hungry for good software

This is what makes good software. Each little detail is fussed over and cared about. Iterated on. Perfected. Then all combined to become a mind-blowing experience.

Even the smallest of drops has to come from a large effort. And nothing can be ignored. Leaving a menu or a settings screen as "good enough" is like leaving a raw unpeeled carrot in the middle of an otherwise stunning plate.

Colors, words, feature selection, speed, menus, forms, errors — every piece in every area that makes up an app or site or even an API has to be perfected.

Perfected not in everyone’s point of view, but to the creators’ — to the chefs’. Opinionated, unique, and catering to an inspiring vision.

It’s hard. It’s damn hard. It's really, bloody damn difficult. And not that enticing in our current startup/VC tech world because it’s not a sustainable growth model. An amazing restaurant doesn’t generally franchise because you can’t scale and maintain that kind of hand-crafted bespoke one-of-a-kind experience.

You don’t have to make great software

The thing is, all software doesn’t have to be great. Every meal we eat isn’t amazing. Some of them are just to serve an immediate need. Raisin Bran and almond milk isn’t winning any awards, but it gets the job down.

But if you want to make truly, amazing, fantastically great software, it might help if you’re a little crazy, obsessive, and kind enough to attract talented people to work with.

And leave your desk long enough to have a great meal now and then so you can really see what you're aiming for.