Software Stewardship
Product Development as a Sandwich

I’m unsure exactly why but recently I started thinking about “my” product development process as a sandwich. The way I’m thinking about it, at the bottom of this sandwich is quality of software craftsmanship, at the top are customer needs and in the middle is what makes the sandwich: the actual product.

In my experience the best indicator of the quality of software craftsmanship is its most immediate product: code itself. By code I mean not only what it does but also what it doesn’t do and especially why. I’m convinced that one of the best quality assurance (and mentoring) tools in software development teams is code review.

On the top of the “sandwich” and its raison d’etre: the customer needs. Software industry is split into two large branches: product development and project development. Grossly simplifying, in project development you have a known customer and they have their requirements. However, in product development, you don’t have one single, known customers but (hopefully) a lot of them. Thus instead of requirements you have customer needs and you keep collecting data on them, trying to figure out which are the ones that you can best fulfill.

Which all leads me to the middle of the “sandwich”: the actual product - the mapping of software solutions to customer needs. I used to want to build perfect products, whatever that may mean, and it took me (and others) years to convince myself that there is no such thing as a perfect product or even a feature simply because the mapping between solutions and needs cannot satisfy everybody.

The first thing (beside endless discussions on why the perfect is the enemy of good) that lead me to reconsider my attitude was The Inmates Are Running the Asylum After reading it I admitted that I was a “technology apologist” and started changing that. But what hit it home was starting to use Apple’s products starting with iPhone 3GS. There is a lot of stuff that I dislike about iPhone most of them having to do with the actual phoning experience and how hard is to make apps work in concert. But for the most part it was and still is a wonderful experience thanks to Apple’s “curation” in the service (most of the time) of simpler and more effective user experience.

I now believe that this curation is the essence of product development. Just as jamming everything in the kitchen into a sandwich is a lousy way to try to make a great sandwich, putting all the features into products is a lousy way to make a great product. So we curate at the top: we choose which needs to address as we can’t address all of them. We also curate in the middle: we choose how to solve the chosen needs in the simplest way possible. And we curate at the bottom: we choose which implementation to apply out of a myriad of different implementations.


Last modified on 2013-04-16