May 30, 2011

...Learn TDD with Codemanship

Educating The Next Generation of Programmers - Time For Practitioner Power?

With the 100th anniversary of the birth of computing pioneer Alan Turing approaching (June 23rd 2012, in case you were wondering), this leaves many of us in the UK- the birthplace of computing (don't argue, it is!) - wondering just what the hell happened to all that potential.

We now find ourselves in a country where computing continues a long and sorry decline. We're caught in a vicious loop. As interest in computing ebbs away year on year, we end up in a ridiculous situation where we have so very few teachers that can really program a computer, and kids who are being put off programming by that lack of practical support they get in the classroom.

As a practitioner, and someone who was once a a teenager (don't argue, I was!), I would have found the new OCR GCSE in Computing - which is admittedly a step up from GCSE ICT - more than a little insulting.

Kids are expected to write programs to move characters around non-visual mazes, or to validate passsword, or to store highest scores for a computer game they're not expected to write.

The programming concepts 16 year-olds are expected to grasp are missing such things as functions, modules, classes, windows, events and other stuff that more than a few 9 year olds have somehow mastered.

It appears GSCE Computing stops short of anything useful or contemporary. To end discussion of "design" at simple algorithms robs kids of an opportunity to stretch and show us the smarts and the ingenuity that had much younger kids creating software empires from their bedrooms during the home computing boom of the 1980's.

And I really do think that starting kids on programming at 14 is leaving it too late. We generally start kids on foreign languages much younger, because frankly 2 years isn't anywhere near enough.

I believe kids should be exposed to the kind of very simple programming GCSE Computing covers at ages 9+, and by the time they're 16, I'd expect them to be able to create working applications with multiple features/functions, a graphical user interface of some sort, and to have unit tested the damned thing. I'd expect a 16 year old to be comfortable coding with objects and classes. I'd expect a 16 year old to be intellectually mature enough to cope with these techniques. Maybe if we didn't waste so much time teaching them how ard drive works or about registers or about the Von Neumman architecture, which, let's face it, is pretty irrelevant to getting programs written in C# or Java or Ruby to work.

If we approach programming as a practical skill, like speaking a foreign language, then GCSE Computing is still selling kids far short of what our own experiences as kids tell us unequivocally they should be capable of.

I see only one practical impediment, and only one justification for the lack of ambition in the GSCE's design - teachers. It's the teachers who find this stuff hard. And I can't help feeling that the GCSE has been designed to make it easier to teach, not to make it useful and just-enough-of-a-challenge for kids.

Many schools lack a single teacher who can program to an acceptable level of ability. Among the 10,000 or so teachers who qualified in 2008 in the UK, apparantly only 3 (not 3% - THREE!) had computing educations.

And herein lies what I believe is the bottleneck. An impediment not just to computing education, and to our childrens' interest in computing careers. No, this is an impediment to our society and our economy. We've been living in an information age for longer than many of us are aware, and the importance of computing and software increases exponentially as our computing skills base declines.

And programming's not just a great career option; it's a fantastic career option. Good money, smart people, solving puzzles every day for a living, great working conditions, and most of us don't even have to wear a suit. You can telecommute. You can get involved in an international community and see the world (well, you can see the insides of airports, taxis and hotels of the world - but you know what I mean). And we probably have one of the lowest barriers to entry for starting a business, and demonstrably the best scalability for rapidly growing a business, of any line of work I can think of. If you're interested in making your fortune, it's probably ten times harder to make it out of cakes or hotels or golfing lessons as it is to make it out of code.

And we're genuinely one of the nicest professions. Try working in sales, or media, or law, or medicine. Trust me - we're probably the most welcoming, forgiving, co-operative, generous bunch of people you're likely to end up working with.

So why aren't kids - and especially girls - stampeding to join us?

Firstly, I get a real sense that the computing they learn about at school (and see in the media - it's not all the education system's fault) bears little or no resemblance to the profession we know and love. It's dry, boring, academic, and mostly populated by blokes with beards in sandals. I suspect a month spent at a start-up in Shoreditch would completely dispel that myth. These days it's hard to tell whether you're a programmer or a TV researcher or a graphic designer or a stand-up comedian. Of course, the easiest way to tell would be to check their bank balance - the programmer will have the biggest disposable income.

Secondly, there's the bottleneck: teachers. Kids who see beyond the mythology and are interested in learning to program can expect little support in the classroom.

I think we can address both of these obstacle in one strategy: it's time for practitioner power.

Some statistics, which I quite literally just dreamed up. Well, okay, I Googled a bit, too.

There are about 4,000 secondary schools ("high schools") in the UK covering about 3,000,000 pupils.

There are about 300,000 professional programmers working in the UK.

If we wanted to set a goal of at least one skilled programmer-teacher in every school, there are a number of ways we can go about it.

The direct route would be to put skilled and experienced practitioners in the classroom. If 1/1000 programmers spent one year teaching in any given year, then that would just about meet our goal. That would mean than 1/20 professional programmers would have to give up one year in industry once in their career. There are obstacles, of course. Not anyone can just walk into a school and start teaching. A 1-year sabbatical to teach could have to be preceded by another year qualifying to teach, and then there's a heap of checks and bureaucracy to climb over.

An indirect, but more pragmatic route would be to coach 4,000 teacher-programmers. If 1/1000 practitioners coached one teacher for maybe 2-3 years (on weekends, evenings, summer camps etc), then this could produce the army of skilled teacher-programmers we need. The effects would take much longer to be felt, of course, and it wouldn't expose kids to people with real industry experience, but it would be less of an ask for practitioners.

Option 3, of course, is to do both. A bit of industry experience drafted into schools (and maybe some teachers drafted into industry at the same time), as well as oodles of coaching for teacher-programmers.

We would have to be clear that the end goal here is to raise the standard of programming in schools well beyond where the bar is currently set by GCSE Computing. We should all get together - teachers, practitioners, employers - to review the expectations year-on-year, review our performance, and incrementally raise the bar until we have 16 year old kids writing proper software, as we know they can.

Involving the education boards and examiners introduces some difficulties, particularly given the speed at which they work, so it may be desirable for the first few years to side-step all of this and push programming as an after-school activity to show how much further kids can go if they're given the opportunity to progress far beyond what the syllabus gives them credit for.

In our schools, we have some very successful non-academic programs run for the schools by external bodies (like the Duke of Edinburgh Awards, and music qualifications), and it's entirely conceivable that something like that could be created for programming, led by teachers, parents and especially practitioners. Kids could progress from age 9+ and end up writing real software with real-world applications that have real benefits. So by the time they reach university, the bit where you make the computer do what you want will be second nature to them.

Posted 9 years, 9 months ago on May 30, 2011