Joel Spolsky linked to this article about how the building industry cant build anything on schedule or on budget either.
Reading this article though did remind me of another way that the software industry is similar to the construction trades.
When building a house, or any kind of structure, everything starts with the foundation. While a foundation that runs off 1/8 inch every foot may not seem too bad. If you stretch that out to the width of your foundation (let’s say 80 feet), your foundation has now run off 10 inches total.
Think of the foundation of your construction project as the design for the latest project you worked on. Did you take the time to make sure that you didnt lose that 1/8 inch every foot, or were you willing to live with it? What happened when you went to build your project on top of your foundation? Did everything come together as smoothly as it could have? Would you have spent less time bringing everything together if you would have spent a little more time paying attention to that 1/8 of an inch?
When building a house, if the foundation is just a little off, it carries all the way through, all the way up to the roof. Same goes for software, if you build on top of a poor design, the price is paid down the road trying to make up for the foundation.
I’m sure we’ve all worked on projects that were thrown together on a whim, with no thought given to design or architecture. Less of us, I think, have spent that extra time in upfront design discussions and architecture meetings.
The projects that I’ve worked on that have spent that time have always seemed to come in on time and under budget. These same projects ultimately also ended up being much easier to extend and maintain.