The corruption of the getting-kids-coding movement.
Young Rewired State is a national event for under-18s to gain confidence in programming and meet other coders of their age. A side aspect of the event is its competitiveness: participants’ projects are judged and the best are awarded prizes.
As a supposedly coding-oriented event, you might be surprised to learn that last year’s overall winner was not coding-related at all, but a Minecraft map. Here’s a participant in another hack day for young people being similarly productive. Several other winning projects were not even working apps, but just concepts sketched out in PowerPoint. And a judge in this year’s event will by Lily Cole — famous not as a technological innovator or even investor, but as a model and actress who now has some unspecified role in an unlaunched startup.
Clearly, there’s something going wrong with the movements to get kids coding. The actual trend is towards ‘get kids gaming,’ or more kindly, ‘get kids coming up with ideas.’ Anyone can come up with an idea for an app — just ask anyone with shiny shoes at a San Francisco hack-space1 — and building confidence in coming up with ideas just gives us a new generation of excitable would-be entrepreneurs.
So here is what I predict will happen to the movement to ‘get kids coding’ over the next year or so: the government’s new initiative will be corrupted by companies like Microsoft and (the ghost of) Sun to push .NET, VB, C#, and Java on kids; meanwhile the activism of hackers trying to get the really good technologies like Ruby and Python into schools will be corrupted by the temptation to turn ‘extracurricular coding clubs’ into LAN parties.
The end result will be that kids in school will be subjected to crushingly dull lessons on programming, and those few nerdy kids recognise some interest in the field will try to find groups and events to support their interest, and just find a bunch of jocks playing games.
The problem is partly that the get-kids-coding movement is saturated with people who aren’t themselves developers. Seldom are the leaders of these groups bona-fide developers themselves. Rewired State itself now has two management boards (apparently one wasn’t enough) with only one actual developer between them, Sym Roe, who is also the only person on both. (Although Thayer Prime and Ben Nunney were both developers in previous lives, and are now effectively Developer Evangelists.)
There are two sides of the issue that need to be addressed: the power of Microsoft, Oracle, et al. to push boring material into schools,2 and the conversion of programming clubs into gaming clubs.
The solution to both issues is simple: the hackers in the grassroots getting-kids-coding movement ought to draw up their own curriculum, or guidelines for a curriculum, and promote it heavily. (Look, I even started one a few months ago.)3 The goal of this would be make the real developers heard. Teaching C# or Java is useless: almost no startups use these languages, at least not successful ones. And today’s successful startups are tomorrow’s large-scale employers, who probably won’t consider an applicant who doesn’t know the language they use.
And in fact, the startups’ languages have another advantage, which is that they’re more fun. Teaching coding boringly is worse than not teaching it at all. If kids are bored with coding, they won’t even be interested enough to go to the after-school clubs, let alone become software developers in their future career. There’s just too much boring cruft in Java and C# for it to be interesting, whereas Ruby and Python just get out of your way and let you make a cool thing.
The ideal computer science curriculum should be an open-ended invitation for kids to make things which make them, in the eyes of their friends, ‘cool.’ If they make a game everyone likes, that’s cool. If they build some kind of social network for their friends, that’s cool. If they build a seven-layer multiple-inheritance class hierarchy, that’s not cool and it will just make programming seem uncool. Programming should be about the joy of creation, and how amazing it is to make the computer say your name or draw a funny picture — that’s how you make software developers.
When kids are hacking games instead of playing them, a different culture altogether emerges: one of collaborative cooperation; of kids teaching each other how to make neat stuff. I know this because I experienced it myself in the first YRS that I attended.
I have a feeling that there is no way, realistically, that coding in schools is going to be taught without making me a bit annoyed. But let’s try to make it not completely suck, otherwise we may as well just hand out free copies of Learn to Program to kids and hope that some of them take an interest, because that would be more effective in getting kids into software development careers.
I’m thinking about my own position here, and how interested I would have been in programming if this stuff had been taught at my school. The number of bad curricula that put me off working in areas that could have formed a major part of my career is innumerable, and a curriculum that taught me how to build applications in Java would have almost certainly put me off the life in computing which I now enjoy.
-
He might even ask you if you will be his technical co-founder. ↩
-
I’m not saying that Java or C# are bad languages.4 It’s just that somehow, I can’t see kids being excited about creating AdderVisitors and HelloWorldFactorys and MyFirstClassInterfaces, which is the sort of cruft that these languages encourage you to build. All that design-patterns crap seeks to distract from what kids should actually be learning, which is how to make useful tools and programs on their computer. ↩
-
Note that this is the joint work of me, Josh Pickett, and Michael Mokrysz. I don’t think either Michael or Josh would oppose its use in any way, but it’s probably best to check with them. ↩
-
They are bad languages, by the way, but I just don’t want to stir up that controversy in this article. The people who get annoyed by this are probably too stupid to read footnotes, especially nested footnotes. ↩