On Nuclear Power...
March 18, 2011

As a computer programmer, science fiction fan, card carrying geek, you might be forgiven for assuming that I’d be in favour of nuclear power. It’s shiny, sexy, the future. It’s the appliance of science. What’s not to like?

In fact, the opposite is true - for as long as I can remember, I’ve been against it.

Perhaps this is just due to my inherent pessimism, but I’d like to think that it’s an intelligent response to the balance of risks and benefits. One thing I can definitely say is that it’s an opinion heavily influenced by my experience as a computer programmer.

Writing software is a strange hybrid of art, craft, science, but it most definitely involves engineering. When you make software, you’re effectively building very complex machines, albeit ones without much in the way of physical manifestation.

Like any engineering discipline, you have to make hundreds of decisions based on what you want to happen, think will happen, fear might happen, definitely want to avoid happening. You typically have a plan, and a way to put it into action, but you also know that your assumptions might be wrong. You have to design for situations where some data is missing, or too big, or the wrong format. You have to cope with the computer running out of space, or going to sleep, or randomly being reset half way through the program’s execution.

How well you do this ultimately determines how solid your software is. There are other factors that also influence whether it’s good software, but it definitely won’t be good if it isn’t solid.

What programming teaches you is that reliable engineering is very hard to achieve. No matter how good you are, and how sensible your methodologies may be, you are endlessly reminded of how bad you are at correctly guessing exactly what is going to happen. Programs go wrong - all the time. Testing is a major part of the process, and testing is always breaking things. More to the point, things that have been exhaustively tested are always breaking as soon as they get out of the test lab and into the real world.

Programmers are endlessly claiming to have it all sorted out and to know that their code definitely works (the smart ones claim it to themselves, quietly, but they still do it). They are endlessly proven wrong. I’m not talking about stupid people here. I’m talking about mostly young, mostly male, often very smart people. Admittedly people who sometimes find personal hygiene and interpersonal communication skills a bit of a challenge, but seriously, scarily clever people - smart enough to be rocket scientists, or… nuclear engineers…

The scary thing is how many of these very clever programmers are possessed with an abundance of testosterone and hubris, and a distinct lack of humility and perspective. Again and again they tend to say things like “that can never happen”, “we thought of all the possibilities”, “we’ve tested it extensively”.

If you’re smart, you learn not to think like this after a while. You also learn to be very, very sceptical when you come across people who do. Luckily, most of these people write word processors and computer games. Admittedly, some of them write software for nuclear power stations, which ought to give us pause for thought. Even they aren’t the ones I’m really worried about though. Software is a lot easier to test than hardware, but the same mindset is prevalent in both. The people I’m really scared about are the ones who are making the hardware…