4th June 2012
It's not often I write opinion pieces but the whole 'learn to code' thing seems to have been building since the beginning of the year. It's time to add my voice to the squabble.
The big recent news of course is that Jeff Atwood added his voice to the fray with the rather comment baiting "please don't learn to code". Atwood's post appeared to be in response to the buzz around Code Academy's Code Year; an initiative to get people learning to code.
If we go back to the beginning of the year though we can see this idea was hitting the headlines in the UK for difference reasons. Michael Gove, darling of the teaching unions, was reported by the BBC as wanting to overhaul ICT teaching in schools.
Now, this idea wasn't a sudden epiphany from Gove. The BCS had been pushing for change for a long time, and so too have a number of individuals in the creative technology industries. And although an American organisation pushing the learning of code (with figures like the Mayor of New York taking them up on it) and the British Government potentially encouraging schools to teach computing may seem unrelated both are anchored in the core principle that 'coding' is a fundamental thing to be learned.
To me, that's the key pivot point and the main thing that people like Jeff Atwood were getting at. No-one is suggesting people should be dissallowed to learn or even discouraged if they want to. It's more whether it is a fundamentally useful thing to learn even if you do not intend to take a career path making direct use of it.
Back when the UK curriculum was in the news I remember discussing it with Rob. What became clear is it's actually quite hard to be objective about it. If you've spent most your life using computers, did a degree in it and are now working in that field of course you are going to think it would have been useful to learn it back at school and of course you're going to think everyone should experience how awesome you find it. But then arguably that's true of a lot of fields. Should a Lawyer expect to learn how a court works at school?
There are probably two main aims for curriculum:
So does 'computing' fit into either of these categories? Well you definitely need to know how to use a computer. They are pervasive in the workplace and in terms of dealing with governments, banks and media. But then is using a computer as key as being able to read and communicate effectively through the written word?
Arguably the subjects we see as core were baked into our concept of a curriculum before computing. The need to be able to use computers was met, although often heavily criticised, by ICT.
However one of the key things I think ICT has failed to do is address the second point in terms of giving the student that taste of computer science that can allow them to run away with it, turning it into a life passion and career. ICT never really said, to me at least, "Hey guys these apps you're using, these games you're playing you can do this shit and get paid for it and here's how".
This whole 'user vs creator' argument is often put forward but then I use a lot of things that I'm unable to create or fix from plumbing through cars and electrical hardware. In most cases if I wish to get into it there are courses available but they are generally later in life and optional. I call bullshit on every comment saying people need to know coding to avoid things like, as Mortiz Schlarb put it "How can my download limit be exceeded, I haven't downloaded anything, I just watched streams?!". Knowing how to code doesn't suddenly make you a general computer expert it's a very specific aspect of computer knowledge.
In fact it isn't even the only way you 'create' with a computer. If I use applications to create 3D art or craft a level for Portal I'm creating, but I'm not coding.
Similarly there are those who try and argue that coding isn't what it's about. It's actually all about critical thinking and analysis. Well is it? surely coding is not the only mechanism for that. Should we add philosophy classes to the list of 'must haves'?
In fact, for the pros the best argument is actually sticking to their guns and saying that programming really is a new fundamental building block (along with literacy, numercy etc). Afterall it's applicable to many jobs (probably more so going forward) and you don't really get a job as a general purpose 'programmer' in the same way that you don't get a job as a general 'writer' you use those skills and further them into your particular career niche. A digital artist can be a programmer as much as an engineer or a journalist or the various flavours of web, app, game and OS programmers.
In this way I think I'm left leaning to the pro camp in terms of teaching 'computing' in some form. But to me that shouldn't just be coding it should be a more up to date well rounded IT/Computing education. As Scott Hanselman puts it it'd be useful for a user to know a bit more, say on DNS and HTTP. As some of the commenters on the Atwood article put it it might be useful to know more about what streaming or what a browser is. Many of the arguments people put forth argued for technical topics much of which is aside from, or at least in addition to, knowing how to code.
In fact, I might be more open to a relatively stripped back computing curriculum in it's own right but with specific time and resources set aside for integration with existing subjects such as maths, technology (whether its D&T, Graphics etc), geography etc. It's value as a cross-cutting concern is surely huge.
As a developer I can't help but be struck by Roridge's words:
When more and more people come to me with 'the next facebook' and a budget of 'around five hundred pounds' I might shake my head in the direction of the 'learn to code' movement.
Having not made the trip down to Bournemouth for re:develop 1 or 2 it was great to be in attendance for it's third incarnation.
Making games over a weekend... competitively... and we chose a dead technology... why the hell not!
Hack Days are awesome. How could they not be? you get to make stuff with like minded people with no bosses, no client deadlines, no point but the love of it.
It's been a while since I posted. I'd like to say that's because a lot's been going on. In reality I got lazy and now I just happen to have something to write about that can make it sound like a lot has been going on.
My first smashing coding article is now available! It's main aim is to convince people that .NET isn't all bad.