This week’s column about fallibility and computer systems was inspired by the gently bubbling controversy over the NHS “Connecting for Health” system, grandly and completely inaccurately described as “the biggest computer program in the world ever”.
It is in the nature of human beings that we cock everything up the first time. We also cock everything up the second time. After that success is a possibility.
Building big computer systems is actually surprisingly simple if you accept this premise: you will not get it right first time and almost certainly not the second time either. I have been involved in software development projects big and small many times, a reasonable percentage of which have succeeded and I can’t recall a single occasion when we actually knew what we were doing at the start. On one or two memorable occasions, we didn’t know what we were doing at the end either.
The point is that prototyping to understand a problem is an intrinsic part of software development, more so than in any other engineering profession because we really do not understand what we are doing at the beginning.
When I see student projects handed in with a requirements stage, a specification stage, an implementation stage and so on, all carefully partitioned using one or other of the numerous software process models, I honestly weep for them. The real world is almost never so clear and it’s not just software development. One example I frequently use is Beethoven’s Fifth Symphony, the da-da-da-daaaa one. It is a masterpiece of organisation which uses elements of mathematics in its structure (it’s built on the sonata principle with sections of length deliberately very close to the “perfect ratio” of mathematics).
So how many of you think that it fell out of Beethoven’s head in this form? I hope none. The beauty and awesome structure of the Fifth emerged by systematic refinement. We know this because Beethoven kept early versions, which were frequently naive and relatively formless. The greatness emerged from a process of prototyping. If a software developer had written Beethoven’s Fifth, it would have been version 1. Very, very few musicians go with the first version. Software developers nearly always go with the first version even though experiments in the 1980s showed that this is a stupid thing to do.
So what’s the problem with the NHS development? Quite simply, we don’t know what the hell they are doing and there are few signs of prototyping. The controversy is over whether it should be independently reviewed or not. How could this possibly be controversial? All such projects should be reviewed. If they were, and the dictum of “never right the first time” was followed using open prototyping, we wouldn’t have quite so many, many disastrous projects.
Two of the clearest signs that projects are going awry are a) the results are kept under wraps and b) talking heads tell you that there’s no problem. It’s your money, shout about it.





reader comments