13 June 2012
It’s good to see that education secretary Michael Gove will be putting programming and computer science back on the school curriculum. Programming is an incredibly valuable skill and no-one should leave school without having had the opportunity to learn it.
That said, the best reason for putting programming back into schools generally isn’t the one that’s been most widely discussed. That is, to help train the next generation of professional programmers.
The UK certainly needs an ongoing supply of people looking for careers in programming coming out of our schools and universities. I’m sure we could do with more programmers and better ones too. But programming as a career has a relatively limited appeal. It takes a particular mindset to write code all day every day, especially on unglamorous projects that don’t hold any personal interest. That’s the reality for most people who program as a job. So yes, anything that helps people into careers in computing is a good thing but by itself it’s not the best reason for teaching programming in schools.
Computer literacy is a very misleading term. Generally it means learning to use a computer, that is, learning to use programs that other people have written for computers. But if we take the analogy with literacy seriously, computer literacy is learning to read but not learning to write. Real computer literacy means learning to write our own programs as well as to use other people’s. Programmability is the definition of a computer, a device that can be taught to do different things, one that’s malleable rather than rigid.
Yet we have millions of people, intelligent people, skilful people, ambitious people, spending hundreds of hours a year sitting in front of these immensely powerful machines whether at home or at work, and all they can do with them is use them to run software that other people have created. Software that reflects the values and imperatives of the people who made that software which don’t necessarily coincide with the desires of the people who use it. That’s a waste of the equipment in front of them, but more importantly, a waste of the equipment in the users' heads.
So imagine if everyone with a computer knew enough programming to write a 50-line program. That’s not enough to get you a job as a programmer but it’s enough to transform your relationship with computers. Suddenly you’re no longer a tool-user, you’re a toolsmith. Repetitive jobs are scriptable, saving hours of error-prone manual work. Files and data can always be wrangled into exactly the format you need them, no matter how they started out. You can break out of the often poorly-specified and designed systems that have been provided for you and can start to knit together your own systems using APIs and command-line scripts. You start to challenge the IT department at work: Where’s the API for this system? Why can’t I import and export data in open formats? Forget about professional programmers. Wouldn’t these skills be useful for every doctor, teacher, manager, lawyer, architect, musician, estate agent and insurance clerk? Everyone with a computer on their desk?
So while we need more professional programmers, what we need far more is professionals who can program. Millions of them. Those outside the computing professions who can program right now are as gods among men, all else being equal. In an information society, those that can discover, acquire, transform, analyse and communicate information better than their peers will do best. Among a whole set of other skills, that means programming. If you ever need to use a word processor, a spreadsheet or a database for work or pleasure you’re in the information wrangling business. Learning to program will transform how you see those tasks and what you can achieve with them.
Adrian Short works to get people the information they need, when they need it, in a way that they can understand.