This is a parable of home improvement and software development, and applies pretty much equally to both. If you're not a fan of either activity, or at least have never been on a project that spun wildly out of control until you felt sure you would die before it was finished, you might want to skip this one.
I grew up in a family of builders and construction people, and I have always enjoyed working with my hands. I have several small cuts and splinters right now to prove it. Most of my adult work life has revolved in one way or another around building software, and I've got scars from that, too. I've said for years that "you know what would be cool?" are the six most dangerous words that can be uttered when creating software. I have also said that I should take my own advice about eleventy-million times, but that doesn't seem to have any effect, either.
About six or seven months after Hurricane Gustav* reminded me why we refer to nature as a mother, we had completed repairs on everything except our yard, which I don't even want to talk about, and my little storage shed. For a number of reasons, I had decided to keep the new shed much simpler than the last one. It was going to be easy, cheap and take almost no time. I had the floor and foundation from the old shed. Six foot walls and a two foot roof height would let me do it all with a minimum of materials and cutting. Two productive weekends should have it ready to paint.
Just one thing -- it would be nice to have a little overhang because of how damp it is down here. Of course, the easiest way to do that would be to knock together a few simple roof trusses, which means the inside height will be restricted a little by the cross members. And while I could live with six foot clearance inside, I'm a little taller than that and get really tired of hitting my head. And you know that two foot roof pitch looks a little shallow for that height of wall, so let's make it 30 degrees and add another half a foot. It will be easier to cut that way. I can build a little gable vent to cover the space above the eight foot paneling. Oh, and I will need to notch the side paneling for the rafters. And I guess I need lookouts, so I will need to notch all the panels. Anyway, I think you see where this is going.
By initially changing one little thing from the simple, functional -- if not cool-- design that I started with, I have created a cascade of add-ons and extra work. All of the extra cutting, as well as the unknowns that come with designing on the fly, have caused me to do quite a bit more trim work than I had planned on. Oh, and the extra complexity cost me another piece of siding because of the unfamiliar territory of notching for the rafters.
So now we're two days from the first anniversary of the storm that started all of this, and I'm probably two work days from finishing the shed. Granted, it will be somewhat nicer than what I had originally planned, but it will mostly only look nicer, since the core construction is still what was planned when I was doing this on the cheap. And while I think we can all agree that it is better to look good than to feel good, I've always believed that being good trumps both.
So in addition to the building taking all sorts of extra time and costing nearly twice as much to build as planned, we have had to look at the pile of crap in the carport that would normally be in the shed for a year now. And the (much more enjoyable) project that I was working on when the storm hit has been delayed even longer.
If you've ever worked on a project that seemed like it would never end, and just got more and more complicated as time went on, or if you have ever waited for something to be delivered until you despaired of it ever being completed, the chances are very good that the same thing happened that has happened to my shed. One tiny thing makes a thousand other tiny things happen, and the finish line begins to get farther away instead of closer. So the next time you think of something that would make the thing you're working on cooler, keep it to yourself.
* You bastard!