As the chosen speaker at the annual Turing lecture of the British Computer Society last month, IBM Fellow Grady Booch had some moderately alarming comments up his sleeve. The one that resonated most was this: “The average developer does not have, as a core competency, the ability to develop secure, concurrent and distributed systems.”
He was delivering to an audience composed primarily of software developers, so perhaps he was playing to the crowd just a touch when he also cited Bjarne Stroustrup’s comment that, “Our civilisation runs on software.” Stroustrup invented the C++ programming language, so he might also be said to have a vested interest in bigging up his own field. Nevertheless, taking either of the two comments in isolation is a touch worrying, but putting them together makes my stomach go funny in the same way it does when the train pulls out of the station just as you realise you’ve left your bag on the luggage rack.
So let’s have a look at those three core competencies that Booch claims is lacking in this society of ours that runs on software. Oh, and to clarify, when I say “Booch claims is lacking”, what I mean to say is they must clearly be lacking because if you listen to Booch speak for more than two minutes you’ll realise he isn’t a man you can really argue with unless you’ve got four PhDs. Pop over to www.iet.tv and listen to the lecture yourself if you don’t believe me.
So anyway, first there’s security. Security? Yeah, you know, that thing now considered a fundamental part of any application or operating system, including that new one that’s just been released by Microsoft. Then there’s the stuff about concurrent systems – which is another way of saying parallel and multicore systems. Multicore? Yeah, you know, that thing the entire computing world is pinning its hopes on to deliver increased computing power now that clock speeds have hit the buffers.
Finally, we have distributed systems. “That one at least,” I think to myself, notepad in hand ready to jot down clever questions, “doesn’t sound so vital.” Distributed systems would be stuff like computing clusters that do, ooh, I don’t know, weather simulations or whatever. But then Booch explains that what he’s talking about when he says “distributed systems” is basically very large client-server types of things. Like the internet. The internet? Yeah, you know, that thing you probably can’t, when you come to think of it, really imagine doing without any more.
So what we have is a situation where if you take Booch’s word for it – and I do – lots of developers are creating lots of software that’s increasingly connecting up lots of systems. And these systems are increasingly vital to our ways of life. But the developers making these systems aren’t actually much good at it.
Happily, Booch conceded (at least implicitly) that software is still a subservient part of the fabric of society, and we haven’t yet reached the point where it’s the other way around. But he did mention a conversation with someone senior in the US Air Force who told him that the thing that really kept him awake at night was the fact that “there are 10,000 PCs on Air Force bases that are open to the naked web”.
To put the icing on the cake of all his delightful news, he began his conclusion by saying that we’d reach the point of “total dependence” on software by 2020. After that, he mentioned something about 2030 and the rise of the machines. By this point, I had my head down and was doodling furiously in the margin of my notepad while humming the incidental theme from The Sound of Music. As a displacement activity, it blocked things out pretty well.