Wednesday, February 07, 2007

Software Is Like Wine

There is a myth and mystery about software development. It started back with War Games (remember Matthew Broderick, I love that guy!) and continued in the tradition of Hackers and so forth. The engineer creating software is painted as the loner, working in isolation, eating Hot Pockets and drinking Mountain Dew. And sometimes, more and more infrequently, there is an element of truth to this portrait of my brothers.

In reality, the best engineer is a very Social Activity. It requires participation and engagement from many sources, sharing information like wine at a fancy dinner party. Like good wine, there are many steps in the process to produce it, and it absorbs elements of the environment in which it exists.

As I find myself interviewing, training, and growing engineers, I often find myself struggling more for the environment they are growing in, then for the performance of the individual grapes. This tends to not always be obvious to everyone and appreciate how counter-intuitive it can be. We see engineers as isolated and independent. We even call them Individual Contributors. But in reality, they are much like the grapes going into the wine. Sure, they each are unique and add to the end product, but environment has much to do with how they harmonize to create something palatable.

To stretch this analogy even further, consider one step in making this wine (our software product).

When you make wine, you have to squish the grapes. Stomping the grapes can be done in many ways, but I think it could be argued that the most intriguing (read: fun!) way is roll up your pants, wash your feet, hop into the vat and jump around. In many social systems, getting people engaged in the activity of work by releasing the rules of decorum is considered not only an acceptable practice but encouraged. Stomping out the grapes is no exception.

Coming up, I'll explain how a good software methodology is like Stomping Grapes.