August 19, 2014

...Learn TDD with Codemanship

Programming In Schools - My Final Word (Honest!)

So, the nights are drawing in as we drift towards autumn and a new school year. And my thoughts turn to the teachers and children from ages five upwards who will be doing computer programming starting in September.

This is the culmination of several years of campaigning by groups like Computing At School to bring programming and computer science (well, let's be honest: mainly computer science) back into schools after a couple of decades of unchallenging "ICT".

While the return of programming to British schools is very welcome, I'm afraid that, when it comes to the question of how we're solving the problem, I cannot escape the feeling that the Emperor has no clothes.

And I'll tell you for why:

Firstly, computing has been shoehorned into an already bulging syllabus as an academic subject like mathematics. And we all know how much five-year-olds love maths.

This is a mistake, in my opinion. I try to imagine myself as a five year old being taught computer science and "computational thinking". I suspect it might have put me off programming for life.

Programming should begin with creativity and fun. Make games, make noises, be silly, do cool stuff, impress your friends, take it home to show your parents. It should be treated in a similar vein to making bread, or collages, or space man costumes. Freely available tools like MIT's Scratch and Microsoft's Kodu present teachers with an opportunity for supervised creativity, during which kids can wrap their heads around basic programming concepts and accustom themselves to the whole business of giving instructions to a computer and seeing what the results are. That's actually how most professional programmers learned; trying stuff out and seeing what happens.

So, the emphasis - especially with younger children - should be on shits & giggles. Not theory and maths.

Secondly, let's look at the money and the time being invested.

Schools haven't known for more than a few months that computing will now be a mandatory part of the syllabus. There's been precious little time to prepare, and the help that's available to teachers is being spread very thin.

The total being invested in training teachers across the UK - bearing in mind that now all state primary and secondary schools must teach this from September (many tens of thousands of teachers) - is less than £4 million.

That's off by a couple of trailing zeros, when you consider the sheer size of the undertaking and how long it really takes to learn how to program a computer well enough to teach others.

Our government - not just today's, but going back decades - quite merrily blows billions on failed projects. We blew £10 billion+ on 2 weeks of running and jumping, for example. We're blowing hundreds of millions on aircraft carriers we can't use.

After all the talk of a high-skill, high-tech future economy, it seems we're not prepared to put our money where our mouth is. For this reason, I believe teachers and schools are being set up to fail.

Finally, let's assume that all of these little wrinkles get ironed out, and the path from primary education through to a computer science degree is smoothed to the extent that CS courses are full-to-bursting and their cups runneth over with eager young minds...

Does this solve the problem of there being not enough good software developers to stoke the boiler of the British digital engine?

Probably not.

There's been an underlying assumption running through all of this that computer scientists and software developers are the same thing; that young people who study the theory at college or university will be exactly the kind of employees software organisations are screaming out for more of.

Nope. That's not what they teach at university - with very few exceptions. I hear it time and again: "I learned more useful stuff in my first 6 weeks in this job than in my entire degree."

And that's not to denigrate CS degree courses. They're quite right not to devote much time to software development vocational skills, for the same reason that physics courses are quite right not devote much time to building fibre optic telephone exchanges.

We have time to address that question, though. While a new generation of programmers finds their feet in our schools, we must figure out how best to train and nurture great software developers.

So, for what it's worth, here are my predictions:

1. In the short term, computing in schools is going to be a bit of a train wreck. Many teachers and schools will not be ready to deliver this in September. It will hurt when they try.

2. The government - probably not this current one - will figure out that more time and much, much more money needs to be invested. Hey, it turns out this stuff isn't as easy as they told us. Go figure!

3. The emphasis of computing, especially from ages 5-11 will be forced to shift from academic subject to practical fun creative la la time. This will be welcomed by anyone who had their own practical fun creative la la time programming experience when they were kids, leading to a lifelong love of doing it.

4. (not so much a prediction as a commitment) As a profession, we need to get our shit together on apprenticeships and other vocational routes into software development, before a horde of crappy Python programmers fresh out of school descends upon us.

Posted 3 years, 4 months ago on August 19, 2014