• Question: Why is the computer software so hard to build?

    Asked by helenabrown to Sarah on 22 Mar 2010 in Categories: .
    • Photo: Sarah Mount

      Sarah Mount answered on 22 Mar 2010:


      This is a great question! Most software projects either fail (around 30%) or end up being much more expensive than people expected. There are a few different reasons why, but here are some of them:

      Programming is a creative activity, like art and music, so different people write software in different ways. Whenever I write software with someone else, I can tell long after the project was finished who wrote which bit because the style of the code is different. This leads to some interesting factors. Firstly, programmers vary widely in their “productivity” — how much they can get done every day. The best programmers may be 500 more productive than the worst. Secondly, if different people organise their code in very different ways it can be impossible to put everyone’s work together. In the old days it used to be that big programs were split up between different members of the programming team and you only put the whole thing together at the end, that caused a number of disasters.

      Also, Fred Brookes discovered when he ran the team that wrote the code for the famous IBM 360 machine in the 60s that adding more people to a project that is already late only makes it later! This is because it takes so long to train the new programmers to understand the code that has already been written. Of course, all the time that the current team is training the new people they also aren’t working on their own code. So, if one person leaves the team or goes off sick that can have very serious consequences.

      Lastly, when you build something physical like a bridge, you know how far across the river (or whatever) you need the bridge to reach, you will know what sort of bridges can be built (suspension bridges, cantilever, etc), what tools are needed, how much of each sort of material you need and so on. This is partly because people have a lot of experience in building bridges and houses and so on, but it’s also because these physical things can all be measured. Estimating how long a software project will take is very, very hard because it’s a creative process that can’t be measured. In that sense asking how long a programmer will take to finish a job is a bit like asking a composer how long a symphony will take to write — he or she might have a good idea if they are very experienced, but lots of things can throw the work off course!

Comments