Lessons in Software Development from a Sandwich

I’m really lucky with where I work because it just so happens to be very close to an amazing sandwich shop from where I fetch my lunch on most days. Every time I visit I am served by one of two people, both of whom now know my personal preferences (as far as sandwiches go at least). All the sandwiches are freshly made and most of the ingredients (like the fabulous chicken tika strips) are also prepared on the premises. Most important of all: everything always tastes delicious.

Now the other day I caught a train in to London and, as it was around midday, I purchased a pre-packaged sandwich from the on-board buffet bar. Technically speaking this sandwich was fine. I couldn’t say there was anything wrong with it. But somehow it could not compare to my normal lunchtime feast.

This got me thinking about the different approaches used to prepare and sell each product:

  • Personal vs faceless
  • Tailored vs standard
  • Fresh vs pre-prepared

There can be no doubt that, by being prepared in a factory to a pre-defined recipe by someone I will never meet, the pre-packaged sandwich provides an impressive example of modern industrialisation. I bet I could go back and buy the same product again on a different day and, even though it would have been prepared and served to me by different people, it would taste exactly the same: very average.

There can also be no doubt that the personalised sandwich prepared in front of me by the same person each day is not always exactly the same. Sometimes their chicken tastes different. Sometimes they’re out of ham. Sometimes there are no bagels. But you know what, despite all of that, it always tastes really good.

All this led me to the following question: is using a standardised approach to developing software just a great way of consistently delivering something that doesn’t taste so great?

In my first post on this blog I suggested that the promise of repeatable processes is a hollow dream. And yet all around me I see a continuing trend to the industrialisation of software development. A trend to a world where a factory consumes requirements and defecates software that meets them. Except the requirements turn out to be wrong. And the software is unusable. And in the mean time the business it was meant to support has changed.

Repeatability might sound great but by itself it is worthless. Being able to do a bad thing over and over doesn’t somehow make it good.

I say: get to know your customers. Tailor your software to their needs. And keep it fresh.


No comments yet

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: