The “Hour of code” myth
I used to find this a fairly agreeable sentiment, and to my shame, parroted the idea that everybody should learn a bit of code to my own family. However, my opinion changed after reading a fascinating piece at Coding Horror, and the subsequent discussions.
Since then, I have thought more about the issue. And now, it’s my job to step in and be a cynic. The people who think that everybody should learn how to code are WRONG. I especially dislike the idea that it should be taught in schools.
That’s what I say! And here’s why:
1. Coding is not a life skill. And I am tired of people pretending it is! Some subjects at school are fundamental to the way that human beings live. Take reading for example: this one ought to be a given. But believe it or not, I actually have heard people argue that reading is not a necessary life skill. In other words, you could live without it.
But reading represents the fundamental way that humans preserve and transport information. Whether you use hieroglyphics to do this task, or the English alphabet, is irrelevant. People in a given society ought to know what reading is and how to do it – obviously, they will have to use the alphabet and language of their culture. But, regardless of specific languages and scripts, the fact remains that reading itself IS fundamental.
On the flip side, coding is NOT fundamental to life, regardless of what coding language a programmer chooses to use. Coding uses the fundamental concepts of information preservation and transmission, builds on them by adding logic and mathematics, and uses complicated machines to do it.
2. “Coding” is not even how computers basically work. There is a very silly myth going around that if you learn some code, you’ll finally understand how it is your computer does stuff. But the code people have been talking about – languages like C, C++, Java – are all third generation computer languages! This means that they are built on top of second generation programming languages, which are based on earlier languages, down and down to machine code – the little 1s and 0s that actually go through logic gates, and do all the magical stuff that computers do.
People who type commands using code somehow have the idea that they are closer to the true computer than somebody using an interface – but this just isn’t really true. The difference between somebody who bosses a computer around by clicking on an icon, and the person who types in a command is essentially illusory: and that’s the whole reason GUIs were invented. Interfaces merely simplify the task of executing computer functions. Third generation programming languages do the EXACT same thing.
People who want to actually understand how computers work must go deeper than code – especially this kind of code. They must engage in actual computer science. But nobody would advocate going that far in general education. Certainly, nobody would campaign for “an hour of information theory”, or any simple dabbling in the kind of high profile studies which accompany an understanding of computing. But unfortunately, that is the logical conclusion of wanting to understand how computers REALLY work.
Knowing code gives you the basic tools to write PROGRAMS, which is a far bigger pursuit – one which will be carried out by people who are serious about programming. It’s a big job to plan, write, then debug a program – not something the average user is going to do. Nor would he want to! That’s why, until now, nobody has advocated that everybody go and learn “an hour of code”.
Most people with the will to do it will have done it with or without code.org, or its compatriots.
Finally, don’t get me wrong: there ARE things people need to know about computers. Computers are the way of the world.
But coding is only the pipework! We think everybody should know how to use a sink, bathtub, and toilet – even take care of them, unplug them, and keep them clean. But we don’t expect that people will learn “an hour of plumbing”, or anything similar.
The point is this: botnets are running rampant, and millions of computers are under the control of malicious hackers. Only this month, Microsoft busted a a single botnet which was, by itself, running on two million PCs. Thousands of routers still use WEP encryption. Many thousands more use default passwords, which make for a catastrophic security breach.
Simply put, people still need to learn how to use computers correctly. This would make for a very reasonable addition to public education. People need to learn better security habits: how to stay away from malware, hackers, and scammers, and how to keep their digital environments safe and efficient.
Maybe after people know this, we can worry about coding.