Learn to code at any age

This is a cross-post of something I wrote for The Guardian, but just thought would be handy to have on the blog over here. It is also a small update from an old post: How to teach kids, or anyone, how to code – that’s the history bit done! Now the science…

The beauty of programming is that it does not matter how old you are (within reason – under 7 is possibly a bit optimistic) you can learn using exactly the same, mostly free resources to be found on the Internet. You can learn basic programming easily within a year and then you can choose to hone and refine whichever aspects of coding most excite you. Done! It’s not hard.

For the purposes of this post I have referred to resources aimed primarily at younger people – but they are all useful for the beginner.

Two of the most common questions are:

1. What language (programming language) should I learn/teach?
2. What resources are there out there to learn how to code?

The answer to question 1 is easy: any/all. The younger programmers are typically polyglottal coders, applying different languages to different challenges, with fewer specialising in one language.

The answer to 2 is also easy: there are many and I will list some here. (Do keep an eye out, there are more resources put online every day and it is always worth watching out for more/better/easier ones.)

Please note, I am deliberately *not* going to recommend one language over another, nor opine the benefits/pitfalls of each – find out which one suits you and start there. Another tip is once you have found a language you are keen to learn, then do search YouTube for further free support and tutorials, there are far too many to name-check here, but it is brimming with people willing to share knowledge in an easy to digest fashion.

To really get you in the mood

Whenever I talk about teaching kids to code, or online resources, I always encourage people to watch Randy Pausch’s last lecture and read the introduction to Douglas Rushkoff’s Program or be Programmed. Randy Pausch’s Last Lecture can be watched here

(If you don’t have an hour or so free right now, then come back to it, but watch the ten ish minutes from this point in the video)

Free online resources

By far the most intuitive and simple website released lately is http://codecademy.com It teaches javascript through a series of very short and simple lessons. My 9 year old daughter started coding using this and it just got her into understanding how written code works.

Kids Ruby http://kidsruby.com is also simple, free and fun.

Scratch http://scratch.mit.edu/ is taught in an increasing number of schools now. Created by MIT it is a programming language that helps computational thinking as well as collaborative working as you build, create and share.

For those of you who love to really get into the meat of a subject, then http://learnpythonthehardway.org/ is a great book/free download. It would not be suitable for the very young coder, but do not be put off by the title – it is surprisingly compelling.

Code Project has a great page on Android programming (for mobiles) http://www.codeproject.com/KB/android/AndroidGuide.aspx there are many tutorials for Android but I found this to be the best place to start.

Blitz Academy has a whole list of resources for those thinking about getting a job as a games developer (in fact the reading and link list is interesting for anybody even vaguely interested in anything)

The Bytes Brothers books [http://www.gamebooks.org/show_series.php?id=1171] are a “…sort of a cross between Encyclopedia Brown and Micro Adventure, each volume in this series contains several short mysteries. The user must read carefully and run very simple BASIC computer programs in order to guess the solutions.”

I can’t really leave you without the links to Alice, having started with the Randy Pausch lecture; it is a programming environment not a language:

Alice

Alice is a 3d programming environment, designed to “create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a teaching tool for introductory computing. It uses 3D graphics and a drag-and-drop interface to facilitate a more engaging, less frustrating first programming experience.”

So there is Alice 2.0 and Alice 2.2 as well as Story Telling Alice. The latter was the one mentioned by Randy as being developed by Caitlin Kelleher and is “… designed to motivate a broad spectrum of middle school students (particularly girls) to learn to program computers through creating short 3D animated movies.” You can download Story Telling Alice here, but it is not hugely tested, is only available for windows based machines, has no support – but I certainly play about with it with Amy (9).

‘Proper’ Alice has full support and documentation and teaching materials and so on.

And that’s it, but there is a constant stream of useful stuff being built and recorded every day, so this post will date quickly! But once you have learned how to code, join us over at Young Rewired State!

Open Education and freedom to teach computing

I think anyone vaguely awake in the education and digital space cannot have failed to notice that 2012 is the year of Computer Science, of coding and kids. 2011 was a cacophony of noise about why this was so terribly important, and 2012 is reaping the rewards.

Government is making commitments for fundamental change and industry is running out of developers fast – and kids have no jobs.

In September of last year I wrote a blog post about how Open Education could work; indeed people have been writing about this for years but it was only really at this point that you could see anything actually happening.

Teachers and freedom

Can giving teachers freedom to teach a subject in any manner they see fit possibly work? This is a fundamental change from the micro-managed curriculum we currently enjoy, with the focus on exam pass-rates and associated funding streams.

I am not wholly sure that it would work easily and immediately with other STEM subjects, Science, Engineering and Maths – it can definitely work with Technology. But boy is it going to take some doing.

Speaking from experience

My eldest daughter is 14 and goes to a school that has just attained academy status, specialising in brilliance in Science – this does not include computer science. Me being me I have been a royal pain in the backside, whilst trying to be helpful, speaking to the deputy head about all I was doing in the coding for kids space and how my experience and contacts could help the school up its game with teaching coding and computer science.

Six months ago they ignored me.

Three months ago they called me in for a meeting.

Two months ago they asked for help.

One month ago we made a plan:

  • inter-form hacking competitions
  • programming computer club working with free online resources, local geek industry and gaming bods
  • an annual assembly
  • participation in Young Rewired State for the coders who had already taught themselves how to programme

This is the stuff dreams are made of. Relevant cross-curricular learning, with a skill that not only de-nerds coding, but simultaneously teaches each child something about programming the digital world they live in, regaining control, knowledge and new Summer jobs. What’s not to love?

Well…

The reality

It takes a lot of work and time to co-ordinate and set up a computer club with local enterprise and free online tools. Done individually, school by school, this will fail at the first missed meeting.

Senior schools operate on a time-poor, information-rich merry-go-round of priorities and logistics. There is an awful lot of information that needs to be imparted in very few hours over very few years – you can only imagine the eye-bleeding decisions that have to be taken.

As a result, senior schools are not the most malleable of organisations to effect immediate and affective change, regardless of good intent and recognition of a problem. New stuff has to become a part of the old stuff – traditional corporate change mechanics: communication, education, management, reward, story-telling and so on.

I tell you – even with one school, regardless of the work I do with Young Rewired State, Coding for Kids and Government – this could be a full time (voluntary) job.

So, I still hold out hope that in 2012 this school will be able to live its dream of being one of the first to market – but there is no kidding about the fact that this is a behemoth of a task.

How can this scale? We’re stuffed

I can hear the Computing at School teachers sharpening their pencils to send me a strongly worded letter about how they are succeeding in their own schools without parental interference, thank you very much – I know. But you face the same problems I saw, I think, judging from the posts on CAS.

So, let me be clear, I have read up on this subject, I work with young programmers, I am a parent to two children, one (aged 9, girl) obsessed with programming the other (14, girl) not so much – so it is with this that I plant my flag firmly in the camp of Year 8 is too late.

Senior school is not the place to focus attention right now. Yes, there will be things that can be done, that teachers can do – but the seeds of need must be planted in junior education.

Equip our young, time-rich juniors with the basics of computer science, take time to make it fun and exciting across the curriculum. The children will then enter senior school with an enthusiasm and expectation that is simply not there right now. And senior school teachers will, for a while, have to play to the masses who see no relevance at all between their BBMing, Facebooking and Tumblr blogs and what they could potentially be learning at school.

Trying to solve this problem with a top-down, managerial (half-hearted) cry to throw open the digital doors in Year 8 and force change in education and interest is going to be a long and bloody process. If this is the way we choose to go, then accept that it will take time, money (lots of money) and it will affect the whole of the education system, not just ICT reform.

Can we focus on the long term by paying attention to junior schools and exciting those teachers and children? And can we work with the kids currently negotiating their way through senior education who have already applied the principles of Open Education by teaching themselves? Young Rewired State focuses relentlessly on these kids and I can tell you the need to support them gets greater every year.

In light of this please can I encourage anyone reading this to still take the time to sign the e-petition and to consider supporting Young Rewired State.

Before I get slated by the Computer Science purists, coding is only one bit of computer science, but it is the only bit I know anything about.