Goldacre says "heaven knows where our successive governments think the next generation of nerds is going to come from". But that's not the point. Call us nerds, geeks, hackers or Morlocks, the technological priesthood of humanity isn't going anywhere: this stuff is so goddamn fascinating that enough people will teach it to themselves for the wheels to keep turning. I don't know any programmers who weren't at least partly self-taught. Today's proto-hackers don't have the easily-programmable 8-bit micros that programmers of my generation cut their teeth on, but they've got something much better: a full open-source software stack whose source they can read, resources like Project Euler and Hackety Hack to help them take their first steps, and a huge community of open-source hackers to learn from. The petition talks about narrowing the appalling gender gap in IT, and that's a genuinely important issue, but it's not the main reason we should be teaching coding in schools.
John Graham-Cumming very nearly nails it:
I fully support that idea because I think that 'programming thinking' is an important skill that needs to be taught. Children first need to learn to be literate, then they need to learn to be numerate and finally they need to learn to be 'algorithmate' (yes, I just made that word up)... It's obvious to most people that illiteracy and innumeracy are problems to be tackled at school, but it's not obvious that we are now living in a world where logical and algorithmic thinking are very, very important.Yes, we need some people who know how to instruct the machines if we want to have a viable economy. But the real point is that we currently live in a pre-algorate society¹. People who object that "Kids no more need to know how to code than they need to know car maintenance or how to build a table - useful for some, pointless for the majority" (a quote from one of JGC's commenters) are missing this point entirely. Computers are not like cars. Cars have a well-defined purpose, for which they have been ruthlessly optimised. Computers are more like writing. Writing is a means for expressing and conveying ideas (and here's the key bit: any ideas); computers are machines for executing instructions (and here's the key bit: any instructions). Saying that only a few people need to code today is like saying that only a few people needed to read and write in the 1500s². Their whole society was set up with the assumption that very few people could read: pub signs were carved representations of the pub's name, for instance. Everyone got by, but our society is incomparably richer since the advent of mass literacy. We're in the same situation with regards to algorithms today: a technological priesthood tries to do the algorithmic thinking for everyone, but the shiny toys they produce for non-algorists are often more hindrance than help. And unsurprisingly they miss a lot of opportunities for algorithmic assistance: ever see someone repetitively copying-and-pasting something over and over in Word? Do you feel the same almost physical pain that I get when I see someone doing drudge-work on a computer? In a mass-algorate society, that Word user would realise immediately that they were doing work that the computer could be doing for them, and the software would be set up to make it easy for them to automate their drudgework.

A very, very old description of an algorithm for calculating volumes. From the British Museum's Babylonian collection.
I want to live in a mass-algorate society. I want to use the software that a mass-algorate society would develop: sane and hackable, because everyone would know what computers fundamentally do and how to make them do what they want. I also expect that a mass-algorate society's software would have discoverable, predictable APIs, because 99% of coders would not be specialist programmers and would have better things to do than read endless documentation. But again, that's not really the point; the point is that I expect mass algoracy to have knock-on effects at least as dramatic as those of mass literacy.
Where do you want to go today?
Edit: followup post; Reddit discussion.
¹ "Algorithmate" strikes me as rather a mouthful. I propose "algorate", because it's shorter, easier to say, and a backhanded compliment to the man who, after all, was the first political leader to recognize the importance of the Internet and to promote and support its development. Poor Muhammad ibn Musa al-Khwārizmī al-Majousi al-Katarbali has already lost 14 of his name's 18 syllables by the time we've got to "algorithmate", two more seems like a relatively minor loss.
"Algorist", by the way, isn't a neologism: it's a long-established term meaning "one who invents algorithms".
² Car maintenance isn't analogous to coding; car maintenance is analogous to system administration, which I agree most users shouldn't have to bother with.
September 15 2011, 10:01:37 UTC 8 months ago
This would be great...
Yes, I am rather frustrated that people tend to think of computers as "magic boxes" rather than the programmable things that they are. I wish we did more to teach programming to kids.That said, I was once called a "fascist" by a computer scientist when I suggested that we spend the first two years of an undergrad humanities degree teaching these people how to code.
September 15 2011, 23:24:53 UTC 8 months ago
Re: This would be great...
I wouldn't go so far as to call you a fascist, but one should probably teach some humanities at some point in the first two years of a humanities degree :-)Anonymous
September 16 2011, 15:28:06 UTC 8 months ago
Re: This would be great...
Quite honestly it would be a great idea to teach some humanities to the nerd crowd also. Two years of that before programming might make better citizens.September 15 2011, 11:32:49 UTC 8 months ago
http://www.happynerds.net/
Sorry for the plug, but this is a completely non-for profit project, so I figured it's ok.
September 15 2011, 12:13:37 UTC 8 months ago
September 15 2011, 12:16:53 UTC 8 months ago
September 15 2011, 12:35:26 UTC 8 months ago
September 18 2011, 14:49:00 UTC 8 months ago
September 18 2011, 14:54:28 UTC 8 months ago
September 18 2011, 15:03:50 UTC 8 months ago
For what it's worth, I started out with 'the easily-programmable 8-bit micros that programmers of my generation cut their teeth on' - at around the age of 8 or 9 - and I'm pretty sure that Processing is at least as easy as ZX Spectrum BASIC, even if it is a lot more powerful!
September 15 2011, 11:34:16 UTC 8 months ago
computational thinking
Yeah many agree, and our national science foundation and others are making a big push for this, if you search for phrases like 'computational thinking' or programming for all. Here are some resources:computational thinking:
https://docs.google.com/viewer?url=http%3
programming is the new literacy
http://www.edutopia.org/programming-the-n
Program or Be Programmed - Douglas Rushkoff
http://www.huffingtonpost.com/douglas-ru
Tools for learning some basics of programming for kids:
Scratch http://scratch.mit.edu/
Light Bot http://armorgames.com/play/6061/light-bo
Kodu for xbox http://research.microsoft.com/en-us/proj
For older kids & undergraduates
http://www.yoyogames.com/gamemaker/html5
http://processingjs.org/
http://pixieengine.com/
http://www.playmycode.com/
http://www.greenfoot.org/
http://marshallbrain.com/kids-programmin
I would not recommend starting off with python or ruby or the like. Those were not designed with beginners or kids in mind. Even with older kids / high school students I would emphasize things that let them get productive / make something quickly, like some of the mobile app builder sites, or gamemaker and the like. The point is to let them see what you can do & accomplish with programming, not teach programming for programming's sake.
September 15 2011, 12:15:11 UTC 8 months ago
Re: computational thinking
Good stuff, and thanks for the links![Minor point: IIRC, Python grew out of an earlier language called ABC, which was intended as a first programming language. But I agree that it's possible to do better.]
September 15 2011, 13:39:04 UTC 8 months ago
Re: computational thinking
Go Python! It would be my current first choice for a language around which to base a core coding curriculum.Anonymous
May 5 2012, 12:44:12 UTC 3 weeks ago
September 15 2011, 12:17:49 UTC 8 months ago
We are going to be there
Yeah. The next stage is when coding would be the distinction of a higher class. =) And then we should wait for mandatory coding education.
Fortunately this is going to happen much faster than in case with literacy.
September 15 2011, 13:36:18 UTC 8 months ago
Fast-forward to when I was teaching in secondary schools and covering ICT lessons... idly thumbing through the revision guide for current GCSE ICT courses is just depressing. Apparently knowing the capacity of a floppy disk and what the difference is between a mainframe and a minicomputer are essential, but being able to code? Barely even mentioned.
I think school ICT curricula should be thrown out and re-written from scratch. Start kids on things like Lego Mindstorms toys (with their visual block-based programming tools) and move on up to a nice, tidy language like Python later on.
I think the ICT curricula themselves are only half the problem. Maths teaching is the other half. School maths courses do not teach problem-solving, and the concept of proving something barely gets a mention until A-level. The skills children should be learning in maths classes from an early stage would provide an excellent foundation for algorithmic and logical thought. I reckon the excellent A Mathematician's Lament (pdf), which I suspect you've already seen, has the maths angle pretty well covered.
Anonymous
September 15 2011, 14:47:29 UTC 8 months ago
Petition is for UK citizens only
I'd like to see it open for the U.S.Anonymous
September 16 2011, 08:26:13 UTC 8 months ago
Re: Petition is for UK citizens only
Perhaps start one for US citizens? It doesn't make much sense for you chaps to be voting on a UK poll when the US has the same issues.September 15 2011, 14:55:17 UTC 8 months ago
I want everyone to be able to easily deal with data and repetitive tasks.
Raspberry Pi looks like a lot of fun here.
September 15 2011, 20:41:46 UTC 8 months ago
Interesting Links for 15-9-2011
UserSeptember 15 2011, 21:34:25 UTC 8 months ago
Another literacy
UserAnonymous
September 17 2011, 12:42:43 UTC 8 months ago
This will never work.
If you let kids learn how to program computers some of them will love it and explore it further, others won't bother.If you force them to (by marks/grades) most of them will hate and forget it after just a few weeks.
September 19 2011, 09:17:56 UTC 8 months ago
Anonymous
September 19 2011, 09:22:49 UTC 8 months ago
Petition fail
I agree with your post. I think the wording in the petition is weak and uninspiring which might be why no-one has signed up. Perhaps you could help get that text editedMiss Lake
Anonymous
May 5 2012, 12:40:07 UTC 3 weeks ago