Monday, May 25, 2009

Software Development as Tradecraft

While browsing through the New York Times today an article caught my interest titles "The Case for Working With Your Hands." I thought after not updating this blog in a while that this would be a good way to start back in. The article discusses the difference between working in the trades and what is classically termed knowledge work. Many people, myself included, make the analogy of development of software to that of building houses. They state without a good foundation the whole edifice can come crumbling down around your head. I however wonder how many people developing software have experience with the more mundane parts of the trades where the impact of your decisions really can have direct physical consequences. I still remember to this day one of the key lessons that was taught to me in a tiny little crawlspace under a house helping my dad test drain lines.

A little background for those with no plumbing background. When you are doing a new house you are required to fill test your drains. This requires plugging all of the drain lines with plugs and filling the entire system until water runs out over the roof. You then have to make sure all of this water is held for some time and doesn't leak. As you can imagine in a multi-story house the sheer weight of all of this water will give you immediate feedback to your craftsmanship.

This is not the only lesson that you learn, one of the most interesting one relates to subtle timing issues. In order to drain the system you are required to unscrew to remove the force compressing 2 interlocking rubber balls while quickly yanking one of the balls out from the main drain line to have it cover the other 4" hole that you inserted the test plug through (see inset picture for a view of the test plug). If this is done correctly, very little water leaks out and the system. If you do this wrong however, the entire head of water will end up under the house with you making for a cold mud bath.

Over the years I have struggled with how to train software developers and other high tech knowledge workers the ability to see through to the consequenses of their actions. The conclusion I usually come to is that they should be sent to spend a summer working with my dad.