Wednesday, March 29, 2006

The Snowfort

This past winter, I was out in the snow playing with my kids. We were building a snowfort. My wife had come up with a great idea on how to go about it: use some small tubs to pack the snow into and up-end them as "snow bricks." So, there we were, up-ending our tubs of snow and stacking our "bricks" to make a snowfort.

Then I realized a problem: the brick idea was great, but there wasn't anything holding the bricks together. Not being a mason, I hadn't put a whole lot of thought into our structure. However, it became fairly obvious to me after we'd put up several rows of bricks that we needed some mortar. So, I switched everyone to stuffing snow in the cracks.

Once caught up with mortar, I went back to bricks. However, a couple of my kids kept at the mortar work. With so many on the mortar, the brick building was going slowly (I'm getting old). Hence, I asked my "mortar" kids to help with the bricks. They refused: it was too hard of work and they kept at the mortar work.

I got to thinking about this impasse: they didn't want to help with the bricks, but that was the whole point of the exercise, to build bricks and build the snow fort. The mortar was certainly necessary, but didn't require all the extra time they were putting into it (though the snowfort was definitely solid, given the amount of mortar they were putting in).

In building software, it's important to add the "filler" to make sure things run smoothly (the development methodology and its related practices), but if you concentrate too much on it, you lose focus on what you're doing: writing code. Writing code is hard work, but it's the fundamental aspect of producing an application. The "mortar" of software development helps to keep it together (and keeps it from falling to pieces), but there's a limit to what help it can provide.

Of course, given our poor choice of location, all the mortar in the world wasn't going to help us when the sun came out. If we'd been at the North Pole, we'd have been okay.