The ability to understand how software works, to write code, and to build an application is undoubtedly useful. It's something that most office workers, regardless of whether or not they realise it, actually do on a regular basis - obviously if you've written actual proper "code" then you know this, but if you've ever written an Excel formula or created a mail rule to filter your email then, on a small scale, you've written a computer program too.
Code is a fact of life in any modern office environment.
This raises the question of whether or not everyone should learn to code either at school or in an extra-curricular club like Code Club or Coder Dojo. And that, it seems, is a contentious question.
Am I qualified to the question?
The first thing to note about the question of whether everyone ought to learn to code is that I am hugely biased. I'm a developer, I've been writing software professionally for 20 years, and I code things for fun in my spare time.
I don't think that disqualifies me from looking at the question, but it's worthwhile recognising my bias and taking it in to account.
The case against learning to code
On the face of it there's no good reason why children shouldn't learn to code. In isolation that's completely true. Coding is useful, so why wouldn't we want everyone to be able to do it?
Is coding, as we currently write it, actually useful?
Usefulness isn't enough for something to be added to a curriculum. The utility of loads of things is clear and obvious, but there's limited time and resources in education so we can't just narrow things down to a list of what might be handy to know in the future and teach that. There'd be too many things to teach, and some of them wouldn't be possible to teach. Some things are beyond the scope of school level education. As an argument against code in particular though, that line falls down. Code is definitely useful and certainly within the reach of children. That much has been proven. If we're looking at teaching coding on the basis of utility I believe it passes the test.
Can we teach it properly?
Would we be teaching a redundant skill?
Duh.