Every once in a while I hear someone say something like “If only software development was as well done as house building, it would always be done on time and on budget” or “If software engineering was as good as bridge building, programs would never crash!” Those arguments are pure bullshit.
First for the house thing: anybody who has had anything built of any size knows there are delays and cost overruns. Really big projects are worse — I’ve never heard of a major governmental construction project being done on time. Construction is just as bad as software engineering when it comes to schedules and budgets.
As for the bridge thing, it’s true that bridges tend to be very reliable (although they do sometimes fall), but bridges have more room for small mistakes than software does. If a bolt isn’t tight enough in a bridge’s beam, nothing is likely to happen even though the bridge is theoretically less solid. If a single instruction is slightly wrong in a piece of software, the program will crash. Computers demand perfection, reality is a bit more forgiving.
Moreover, bridges aren’t attacked daily by people trying to make them fall. Popular software has hundreds of hackers trying to find every possible way of making it fail.
So please, if you’re one of those who compare software development to real world construction, please stop. Really, construction work isn’t nearly as perfect as you’d like to think it is. The two fields are completely different anyway — I’m sure bridge building has plenty of challenges that are entirely different from those of software development.
January 26th, 2008 at 12:30 am
There’s also the fact that, well, bridges are bridges. There’s hundreds of thousands of them, they all serve the same purpose, and a very large part of the design, techniques and materials used in one can be reused as-is in another.
In software, on the other hand, every function you write is new material. If it wasn’t, you’d just reuse the existing one and be done with it. So coding has more to do with research than with construction - and, well, research isn’t generally known for its predictability.
“If we knew what we were doing, it wouldn’t be called research.”