This post was contributed by a Code the Future volunteer developer Michelle Gleeson.
Michelle has been kicking around the tech scene for 15 years. By day a code-wielding diva crafting beautiful software for Xero, by night a passionate activist helping to level the tech gender imbalance, one empowered coding sister at a time. Supported by two eccentrically-delightful young children, a wonderful husband, and an over-indulged cat, she is living and loving the Melbourne life, indulging a passion for tech, food, wine and all delights her beautiful city has to offer.
Finally! You have found a way to use your coding powers for good. You have connected with a school, and you are ready to go in and inspire the future generation of technologists. That sounds easy…oh wait…there is no Stack Overflow for that. In the words of my colleague, Sam, on the way to our inaugural Code the Future class, “I haven’t spoken to an eight year old since I was one”.
Diversity in tech and teaching children to code is huge in our industry at the moment. There are so many websites offering free tools, tutorials, guides…it is actually overwhelming.
With so many offerings out there how do you choose? To help me decide which tools to go for I went back to the problem I was trying to solve. What was my purpose here? My passion for teaching kids to code stems from my personal experience being a female developer for the past 15 years. I want to achieve two things specifically:
- Impart that passion for creating something amazing
- Give young women the confidence to stay enrolled in tech courses, instead of facing that initial overwhelming imposter syndrome when it seems the boys around them know it all already.
I also wanted to cover the main coding constructs; like conditional statements, incrementers, loops and variable assignments.
You also need to consider your available hardware. Often you can’t get things easily installed on school computers, so free browser-based development environments are your friend.
I decided to choose something that would allow the kids to not just type code, but actually create something, and have it hosted so they could show it proudly. (Remember your first public-facing product when you could say “see mum, I build great stuff – I don’t just fix computers all day”)
With all this in mind, we chose Scratch over something like Code Combat. While coding games are great, and so much fun my 7 year old daughter doesn’t want to stop for dinner, you haven’t built anything in the end.
The following list is ideas we found to be useful. You will find your own style, but you may find these things helpful to get you started.
Form a good relationship with the Teacher
Before you start meet with them to discuss ideas and find out what they want to get out of it. Go in with examples, or proof of concepts, if you can. Figure out how you are going to communicate; like using the Code the Future community slack channel or maybe old-fashioned emails are easier.
Use the Learning Inquiry Unit
This could help set a focus and purpose for your lesson. As part of their curriculum, many schools introduce a new topic of inquiry each term, for example, health and fitness or sustainability. Help the kids to create a game or an application based on their topic. I have been blown away by how creative they are.
Teach them coding practices too
I am in my coding element when I am working in a fun team. For me, coding is social and my colleagues are my friends. Tell them you work along-side designers and testers and how everyone works as a team to deliver a great product. Get them to pair-program and teach them the etiquette (one driver, one navigator, then swap. No snatching the keyboard!)
Teach them collaboration and that its ok to ask for help. Don’t know how to do that? I saw that pair over there do that, why don’t you go ask them?
Talk about the KISS principle: Keep it So Simple (see what I did there) . They will have so many ideas and try to get them all in there, resulting in nothing getting finished (we’ve all done it!). If they are trying to implement something overly complex, suggest an easier alternative. The goal is to get them to see something they created.
Our mantra was “How do you eat an elephant? One bite at a time!” It’s a tough concept to do a little bit, test it, do a bit more and build slowly. When you see a project with code blocks everywhere and nothing’s working, it’s time to reinforce this. This led into my next most popular catch cry, “Test early and test often”.
Use easy words
Variable assignment. Iteration. Operator. Huh? These kids probably learned the alphabet after you got that T-shirt you are wearing. Channel your inner xkcd. Have a think about how you will explain these things before you are standing in front of the class.
Demo Demo Demo
We started every class with a five minute demo showing one new concept. Week one, key press; week two, if statement; week three, loops and so on. Sam also created an awesome game based on their Learning Inquiry topic, which really inspired them! Seeing something in action is so much more powerful than explaining it.
Be specific about what you want them to deliver up front
This should not have come as a surprise to me really, having young children of my own. We found the kids spent a lot of time initially choosing backgrounds and colours and would not get much done. If you tell them at the start of the class what you expect, they are more likely to get down to business. For example, after your demo you could say “Each pair needs to get their sprite moving up & down on key-press, and then you can look at changing the colours. We will all give a demo to the class at the end”
Teaching kids code is such a rewarding experience. Like anything, you get out what you put in. When you see their faces light up with delight at getting their app running, the planning and prep required feels so worthwhile.