Recently, Jeff Atwood discussed “why software projects can’t be treated like any other construction or engineering project“. He suggested that:
“But software projects truly aren’t like other engineering projects. I don’t say this out of a sense of entitlement, or out of some misguided attempt to obtain special treatment for software developers. I say it because the only kind of software we ever build is unproven, experimental software.”
Now, his point has merit in many senses; particularly in the sense that ‘if someone has already written it, who will pay you to write the same thing?’.But I want to examine some of the things he has not said.
For example; there are endless opportunities to take shortcuts in your average kitchen remodelling.
In fact, I want to go back a step further and suggest that kitchen remodelling may not be the best task to suggest as a comparison to writing virgin code. In fact, Jeff gets half way there by including an image of the Spruce Goose, and saying that:
“We’re paid to build high-risk, experimental airplanes.”
Wait a minute? Isn’t building an aircraft an engineering / construction project? I think so, and it is of course an example of a project that went over budget (or I assume so, considering the Senate War Investigating Committee investigation into the use of government funds).
So I would suggest that it might be better to say that “It’s Never Been Built Before – so it is just like most interesting engineering projects”.
Here in London, we are already getting news of increases to the expected cost of the 2012 Olympics. The new Wembley stadium is also experiencing budget and serious time overrun problems. And don’t start me on the Millennium Dome (finally now about to get a new lease of life as the O2 Dome). The dome’s costs spiraled upwards over £750million – which is quite a lot for a tent 😉 Oh, and let’s not forget the millennium bridge, which opened months late, and then closed three days later due to the wobbles. Happily not all of the structures noted are / were built by UK contractors, so it can’t be solely that our builders are bad!
Clearly, there is some sort of gap here between the sort of engineering that it took to design (invent) and build these structures, than say ‘build the 25th Boeing 747’, but surely it is time to emphasise the similarities with these larger engineering projects than the smaller projects like renovating a kitchen?
If anything, as one of my friends told me, renovating a kitchen is far from a ‘safe’ engineering project, as half way through their renovation the work had to stop for damp repairs to be made to the underlying structure. This sounds to me far more like software maintenance!
In summary, I believe that it is (relatively speaking) a ‘surprise’ when an engineering project comes in on time and budget. But, engineers at least do have a whole raft of tests that they make before even starting the build (aerodynamic modeling etc); and I am not sure that we in programming really have similar testing mechanisms to test concepts before building a full system – of course things like stress-testing do exist, but I suspect that these are the areas that are less well used by IT specialists.
Finally, there is one last point to make. When I had my bathroom floor re-tiled, I was given a quote of 0.5 days for a couple of labourers to prepare the floor with boarding, and then 3 days for the tiling. The first part went fine, but I have to admit my hackles were raised when the tiler took 5 days to finish – it was most annoying due to the issues of not being able to shower easily, etc. But I have to admit in hindsight that I am glad the tiler took his time. He did a Quality job, and in many senses I considered him an artist.