A couple of years ago at Velocity Europe conference I saw a keynote presentation by John Wards called “An introduction to Code Club”. The keynotes at Velocity don’t always interest me; they tend to be too short to convey enough detail or are all-out sales pitches. However this one really caught my attention. I suggest you go watch it.

Background

My own education

I’ve long considered myself lucky to have a career in something that I enjoy and which pays well. It wasn’t something that I ever planned or formally studied for.

Growing up I was fortunate to have access to computers at home due to my Dad’s job. They weren’t the best; I remember being slightly jealous of friends new computers running Windows 95 which I didn’t know how to use. But in hindsight I was much better off, with large amounts of hardware and the freedom to assemble, disassemble, and install a variety of free operating systems. That stuff later turned out to be the foundation of real paid work.

What I learnt at home quickly surpassed anything that I was taught about computers at school. There was no computing subject at GCSE and the closest approximation was Business Studies, mostly because it involved using computers rather than teaching about them. I went on to college because I felt that I had to but A-level Computing only served to frustrate me. In two years the only programming that we did was two weeks of using Pascal, which was the only part that I enjoyed and learnt something.

I don’t blame either the school or college. They both provided a very good education in maths, science, English, etc. All things that I couldn’t have succeeded without. It was the computing curriculum that didn’t serve me well. Without access to computers at home I might be doing something very different and perhaps less enjoyable today.

Paying it forwards

Thankfully things are changing for computing education. In September gone a new curriculum came into effect starting at primary schools and new GCSE content is due to come into effect in 2016. However there are valid concerns about whether schools and teachers have been suitably equipped to teach the new content. Not to mention that the content will need iterating in years to come as technology continues to advance.

So the presentation about Code Club really resonated with me (in fact it left me feeling a bit emotional). I don’t think that everyone needs to learn how to code, but everyone should feel comfortable using computers and have the opportunity to express themselves and thrive through computing if they wish to. The presentation demonstrated a way that I could pay forward some fortune I had to people that may not have similar opportunities.

Getting started

It was some time before I actually did anything about it. Mostly because I was quite scared about the prospect of standing up in front of a classroom of children. It wasn’t until a year later that I started making arrangements, starting with my employer, who understood the value to my personal development and was incredibly supportive.

I signed up to STEMNET’s Abassadors programme which Code Club recommends as a means of getting training and support, plus the necessary DBS checks and insurance. As it turned out the school I started the club with provided their own insurance and their local council insists on performing their own DBS checks, but I still found the STEM induction course useful and would recommend it. After waiting for the first DBS check to come through I started looking for a school to start a club with.

The first school that I contacted through the website responded promptly to say that they (the person who signed them up) no longer worked at the school. I could have contacted the school directly to find a new contact, but decided that for my first time it would be better to go with a school that already knew about Code Club and were keen to do it, rather than also needing to sell the idea myself. I contacted another school who were registered and got no responses. I then contacted a third who weren’t registered, said they’d pass the information on and didn’t get back to me.

I left ample time between contacting each school because I didn’t want to over-promise myself to multiple schools, plus it spanned over the Christmas break period. The combination of which meant that it had been three months since I first contacted the first school and I still hadn’t got any interest. Just when I was starting to get a bit frustrated a school which had just registered on the website contacted me and in less than a week we’d met up and set a date for the club to start.

Code Club recommend that you give a short presentation at a school assembly to generate interest for your club and make sure that you get the keenest attendees. I didn’t do this because the school had already offered to send out leaflets to parents and I still had a touch of The Fear. Nonetheless I got a really good club of 12 children (even split girls/boys) who have been brilliant. In practice I’m not sure whether the assembly makes a difference, but it might depend on whether you are under or over subscribed.

Incidentally, one of the schools did get back to me to express their interest, but it was another three months later and I had already started the club at the school which contacted me. The lesson was that schools are busy and they don’t all actively use email. I’m not sure whether it would have been better to contact them all tentatively at the same time. Don’t be disheartened though, it’ll soon work out fine.

Our club

When I first started writing this we had just finished the fifth week of our club and were on a three week break for Easter. This seemed like a good time to reflect on how it’s gone so far before we begin the remaining five weeks. Before the club started I read all of the blogs and mailing lists that I could find to get an idea of what to expect. Hopefully this write up will supplement someone else’s search.

We’re starting off with the first term Scratch projects from Code Club at the moment. My hope is that we might later move onto the HTML/CSS or Python projects. I might also mix it up before the end of the term with something from code.org, which I think they’ll feel familiar with having used Scratch.

Learning

I spent the first few weeks worrying an awful lot about whether I was doing a good job. Not during the club, because I was too busy and enjoying it, but always before and afterwards. I really expected to leave each week feeling elated about doing a good thing but instead I’d spend the following two days thinking about what I could have done better. My wife reassured me that I was only worrying about it because I really cared and that was the most important thing.

It has definitely been a continual learning process for me. Although I have a child of my own, I don’t think it gave me any competitive advantage when it comes to teaching a large group of older children. As the weeks went by I eventually became more comfortable with my own progression. Each week would be a number of small improvements on the last - iterative, if you like.

I’m pretty certain that it will have some effect on how I behave at work. If you can explain something clearly and patiently to a 10 year old, without also patronising them, then you stand a much better chance of doing the same to your colleagues when talking about your normal work. If you can present to a class of noisy and easily distracted children then you can probably do the same to your well behaved colleagues at work. If you can prioritise questions from three children that are calling your name and another five that have their hands up then you can probably remain calm and effective during an outage.

I haven’t gained those skills from running the club. But I have been learning how to improve them and apply them to different situations.

Preparation

Preparation is the single most important thing you can do. Like an adage about sysadmins; they won’t notice if you’re prepared, but they will if you’re not. We lost a lot of time in the first couple of weeks due to various technical difficulties. An hour goes surprisingly fast.

Code Club recommend that you go in and test the computers before the first club, but I was told that they had already been using Scratch and the correct version was installed. It later turned out that there were two sets of laptops which had different versions on and which laptops we got depended on whether any other classes were using them in the prior lesson. I’m not sure I would have foreseen this even if had I tested it myself but it’s worth doing anyway.

By the third week I realised that we were losing quite a lot of time each week fetching the laptops, powering them on, logging in and loading up Scratch. In some cases children weren’t able to login or laptops wouldn’t turn on because they’d run out of battery. I cut this down by collecting the laptops and doing all of the setup when I arrived at the school each week, so that they were ready to go when the club started.

You should also take the time to test each project before the club. Seriously, do not skimp on this. It’s only by doing this that you’ll recognise the pitfalls that the children (and yourself) will get stuck on. When they ask for help you won’t need to read the description and repeat it yourself in order to offer advice. There are many things that you won’t identify from just reading the sheet alone, like how do you draw a musical note or how do you make the sprite stopping spinning off-center.

You can also include nice touches like giving them personal folders/wallets to keep their project sheets. It might not seem like much, but it goes a long way to making it feel like a real club. We have been keeping the folders at school because I’m a bit worried about children forgetting to bring them in and not having a record of their progress, plus I don’t want to disadvantage children that don’t have the facilities at home. Your mileage and opinions may vary though.

Progress rate

One of the things I really stressed about was whether we were progressing fast enough. I had assumed that most clubs completed one project each week and couldn’t find much evidence to suggest otherwise. The first project (Lost in Space) took us at least three weeks. It felt like this was abnormal and somehow my fault.

It could however have been the result of any number of things; my inexperience, the school not having laptops previously (until recent), the children not having used Scratch before, etc. Or it could have been entirely normal. I still don’t know.

It wasn’t until the third week when most of the club had started their second project that I started worrying about it less. They’re definitely more comfortable with using Scratch now and our progress has sped up. It also helped that a child who joined us late in the third week completed the first project in one sitting and completed the second project the following week.

I did notice that some of the children were getting “stuck” trying to perfect the result of certain tasks. The way that some of the projects are structured, especially the first one, introduces one way of achieving something and then later improves it by introducing another concept. This meant that the thing they were perfecting would either be resolved or replaced by the next task, but they weren’t getting there because they were too busy trying to fix it now. I hadn’t foreseen this happening, but I’m getting better at spotting it by asking them how they’re getting on and is there anything they’re stuck on.

There were a lot of questions, especially in the early weeks, about whether they could choose their own backgrounds, sprites, sounds, etc. There seems to be mixed opinions and results about how well this works. You don’t want to stifle their creativity and fun, but on the other hand you don’t want them to deviate so far from the instructions that they struggle to follow later tasks. I’ve stuck with saying that their should follow a project until it’s completed and then they can customise it all they like at the end. Which seems to have worked out well.

Printing

Printing project sheets turned out to be a much bigger deal than I expected. Each project is up to 20 pages of A4 paper. For a club of 12 children that’s up to 240 pages a week, which was beyond what the school or I could afford to print. It also seemed like quite a waste of paper. I tried duplex printing A4 sheets but was concerned that it was hard to follow from one page to another unless you’re used to reading and folding documents like that.

I compromised by making smaller A5 booklets. This reduced the amount of paper used by 3/4 and the ink used by 1/2. The smaller size has made them easier to handle and doesn’t appear to have affected the readability. I used the application Create Booklet for Mac to imposition the PDFs available on the Code Club website.

It does help to print the project sheets in colour if possible. Not only do they look more exciting, but it makes it easier to find where code blocks are in the colour-coded Scratch interface. But don’t stress if you can’t - we used black and white prints for the first project and didn’t have any significant problems.

One thing to bear in mind is that no matter whether you use the provided PDFs or print from the website, the text and images of some tasks will flow past the page breaks. So you’ll need to remind children to turn the page if the description of a task doesn’t appear to make sense by itself or it looks like it’s missing an accompanying image.

The obvious is not obvious

Be prepared to state things that might seem obvious to you but may not be to the children. Not necessarily to do with the Scratch interface, which they picked up really quickly, but mostly about working practices.

I’d heard a few people recommend that you stress the importance of reading the tasks carefully and ticking each one off as you progress. I explained this at the beginning of the first week, but it took reminders in following weeks before it stuck. The checklists are of equal benefit to you and the children. The progress between tasks can be too subtle to determine just from looking at their screen, so it’s good when someone asks for help to be able to look at their sheet to determine how far they are and whether they’ve missed any steps. Besides, humans (not just children) are forgetful creatures.

Another thing that I read about was encouraging children to help each other if they were stuck. I thought that this would just happen organically, especially amongst friends that sat together, but the first week proved this not to be the case. Children would ask questions that their neighbour had asked only minutes earlier. In hindsight, I guess this is to be expected; a lot of school lessons are about individual contribution unless they’ve been explicitly told to work in groups. I hadn’t told them anything. In the second week I told them to ask the person near them when stuck because they might be further ahead and able to help. This dramatically reduced the amount of questions that I had to field and made the club feel more relaxed and collaborative.

Rewarding

Aside from worrying (which is not uncharacteristic of me) and learning, it’s been a really good thing to be involved in. The children seem to really enjoy it. They like adding personal touches to the projects. They find it hilarious when they make a mistake and the earth flies to the spaceship instead of the other way round. They’re proud when they show of their completed work.

Even more affirming though is hearing the children and the one parent that I saw in passing say thank you for volunteering. That stuff really sticks with you.