Teaching Javascript to 10 year olds
Tags: teachingprogramming
Published: 2019-03-21 16:03:14

---
title: Teaching Javascript to 10 year olds
published: true
description: I've just finished my first school term as a CodeClub volunteer and have loved it. There's a few things I'll do differently next time..
tags: teaching programming
---
tl;dr : I volunteer at a primary school teaching kids. Some of them are pretty good at it. I've made some a GitHub repo with stuff I'm trying to get them to learn here: [https://github.com/psedge/codeclub](https://github.com/psedge/codeclub/)

I've never volunteered in any real capacity before, except to scalp some free festival tickets. Now I'm working as a full-time backend developer in an organisation that generously gives me time off for a cause of my choice - I thought there was no better time to start.

I'd heard about CodeClub through my friend, Jess, and her Mum - who teaches IT at secondary school level in our old hometown. In essence, the charity puts programmers and schools in touch and gives them resources to run after-school clubs to teach programming in Scratch (a visual language and integrated IDE developed at MIT), and Python. They also organise coding camps during the summer called CoderDojos sponsored by a few companies. Naturally, it was the second charity to come to mind when I wanted to volunteer (Battersea Dogs Home waitlist is super long it turns out) - so I sent off for my DBS and contacted a few schools in my area. A few weeks later after meeting with Ellie (the teacher), we had the first few weeks of lessons planned and kids signed up.

It was the Friday before my first Monday's teaching that I went to a meetup at the V&A run by CodeClub; an opportunity to ask questions and meet other volunteers/teachers/parents. Having never done this before, I'd asked for tips running a club, which was met with enthusiasm and genuine interest by the crowd - pretty much dominating the conversation for the next half hour. Great community.

Monday rolled around and I jogged out of work at 2.30pm, equal parts fear that the kids might jump me, and mischief of leaving this soon after lunch. The weirdest part of this experience was by far being met on the playground and escorted up to the classroom by a boy no older than 6 or 7. I felt like he was going to yell "stranger danger" at any second and I'd have to explain why I'd just walked off the street into a primary school. I got to the class and was greeted by 20 pairs of eyes staring at me. I walked in and said hi, and stood nervously at the front. After 10 seconds I asked one of the girls if I should introduce myself, and she nodded. "Hi I'm Peter and I'm a programmer..."

After that initial awkwardness, the lesson flew by pretty much according to plan. Things I learned in those 45 minutes:

1. In an hour-long lesson, usable time is probably 30 minutes. It takes kids a long time to get out laptops, find their seats, get logged on etc.
2. There is a huge variety in skill level, even in kids in the same year. Even if Scratch is taught and they have all been exposed to it, basic skills like navigating tabs or how to open a minimised window are not universal.
3. On that note, an instruction like 'copy and paste' that URL into Chrome probably won't do. "Highlight that link, right click, copy, press the Windows key, no that's shift, now type Google, click, right click at the top, and paste" encompasses everyone's abilities.

After a few classes using the provided Scratch exercises, 2 or 3 of the kids asked me about Javascript - something I'd mentioned in the introduction in the first week. I'd actually been recommended against teaching it by CodeClub, as they have examples using Raspberry Pis and Python - but at this school there were a mixture of laptops and devices; ThinkPads, Chromebooks, and iPads - so it was better to be able to teach browser-only. I'd initially thought I had to design the entire curriculum, so had several weeks' examples premade. I set them off on it and they crushed my 'Traffic Lights' introductory class. A few notes from the first Javascript lessons:

* Debugging and useful error messages are super important for them - 'token undefined' makes complete sense when I notice a case error in a variable name, but it confuses and breaks the flow for learners - they need more information.
* You need to give room to explore beyond the initial purpose of the class; they managed to finish it and wanted to do some other stuff. Adding functions like 'shake' and 'wobble' with parameters means they can break things.
* Having something like an API reference helps a lot, as they can see the available functions and how they should be used - otherwise they'll need a lot of one-on-one help.
* Bugs are not only a pain for the kids, but they're a pain for the guy trying to answer 5 tiny hands in the air asking for help. Fixing the bugs in the GUI and weekly exercises saves you more than time: probably a decent lesson to take forward into general software development as well.
* To do this, you need to have a reasonable understanding of the content - I've actually had some good questions from the kids: "why do we need to put quotes around a word", "why isn't this working..." etc. 

I've signed up for doing another class, albeit with fewer kids, next term. I'm definitely going to be more ambitious about encouraging more of them to do the Javascript exercises but still set up the Scratch stuff for those that want to. Reducing class size should mean I have more time with each student, which has been a problem this term - definitely, 10-15 is an easier class size. The interface is improved now, and hopefully some of the bugs which were taking time to remedy in-class should be squashed as well. 

All in all, teaching's been hard - I finish lessons and need to sit in a quiet place for a little while with a G&T - but it's incredibly fun, and the kids in my class are funny, original people. I've given up on trying to garner much respect from them - best left for Ellie anyway.