If you look at the widely-retweeted code.org campaign, or the recent petition to add programming to the official Australian curriculum, you see a common theme.
The core of the petition:
The Digital Technologies section of the draft Curriculum for Technologies is a massive step in the right direction. If enacted, it will equip Australian students with the skills they need; not just to become competent consumers of technology, but to design and create our shared technological future.
Or, amongst the quotes from luminaries on code.org, President Bill Clinton:
At a time when people are saying "I want a good job - I got out of college and I couldnt find one," every single year in America there is a standing demand for 120,000 people who are training in computer science.
There just aren't enough people who are trained and have these skills today.
If we want to spur job growth in the US we have to educate ourselves in the disciplines where jobs are available and where economic growth is feasible.
This theme, that we should teach coding because it will lead our children to IT jobs and help our growing software industry, comes across far too strongly from both campaigns, and it's the wrong message.
Sure it might be the right message for bureaucrats, industry insiders and parents worried that their child's grade seven teacher isn't properly preparing them for a lifelong career as a sysadmin, but it's a really bad reason to set educational policy. General childhood education isn't, and shouldn't be vocational training.
Luckily, code.org has some more redeeming things to say.
Learning to write programs stretches your mind, and helps you think better, creates a way of thinking about things that I think is helpful in all domains. — Bill Gates.
I think everybody in this country should learn how to program a computer because it teaches you how to think. — Steve Jobs
Programming is probably the greatest, and most criminally untapped teaching tool we have developed in the last century. At its heart, programming is applied logic, a discipline that requires you:
- to break a problem into its component parts
- to construct those parts from a set of logical building-blocks
- to combine those solved parts into a greater whole
These are powerful, fundamental skills that are worth teaching to anyone. They're not only the building-blocks of a career in computing, they're building-blocks for critical thinking, for scientific thinking, even for creative thinking. Programming teaches all of this in an environment where you can keep students interested by having them use the skills they are learning to build tools, toys and games.
Programming even provides an answer to that question every school kid asks, “What the hell am I learning maths for?” I'm pretty sure my high school trig and calculus would have stuck a whole lot better if I had been asked to build a game with them instead of just solving equations on a piece of paper, or being assessed on my ability to draw a curve neatly on the provided graph paper.
Sadly, though, I suspect the problem with programming at school is far more practical than intellectual. All the willingness to add programming to the curriculum isn't worth anything if we don't also have enough teachers qualified to deliver those lessons. And so long as we as a society continue to devalue teachers and teaching, that's a much bigger challenge.