Last fall, my 4th grade son was playing on a recreational soccer team in Mill Valley, California. Since I was a software developer, a few parents from the team (including a Google exec and a VC) asked me if I knew of anyone who could teach kids to code.
I grabbed 12 kids from the soccer team and some laptops, and convened an 8-week program in my living room. Before each session, I beta tested the lesson on my son for final tuning. I put those initial lessons up on GitHub and regularly blogged about the experience. I planned out what would happen each week in detail, in about 15-30 minute increments. Since I had a plan to follow, this made the time less stressful.
I chose MIT Scratch as our platform, and spent a few days learning how to use it myself. Rather than planning the full 8-week curriculum in advance, I created a general schedule and tweaked the lessons week by week, depending on how the students were performing. Watching the kids interact helped make the program more effective.
The program has since grown to over 100 kids from 1st through 9th grade, and has evolved from a class model to a “club” where students work with trained instructors. Today we teach a wider variety of subjects, such as Python, Arduino, 3D Design and Javascript. Here’s what I learned along the way.
Do I need to know how to code to teach it?
It doesn’t make much sense to teach coding if you don’t understand how to do it yourself. It would be like teaching music by giving kids an instrument and a book. If you are a professional developer, you can probably start teaching after a few hours of preparation. If you are not a developer, you can still get to a basic level of teaching proficiency in a few days or weeks, if you have any kind of background that in technology. Either way, don’t worry--learning to teach coding to kids is not like preparing them for a professional career as a developer.
Don’t expect that you can just show up to a coding class and learn for the first time with the kids. You’ll need to prepare, and you’ll need some quiet focus to do that. The goal of coding instructors is to help keep kids motivated and unblocked; it’s important to give projects that will keep them challenged, but not get too frustrated.
Starting From Scratch
A great tool to start from is MIT Scratch. It can be used on most browsers, which means that you can get started on any modern computer or laptop you have. (You don’t want to go through the hassle of installing software on every machine.) Scratch has a lot of resources available for students and teachers, and offers a variety of exercises for kids to quickly build different programs.
Many students also start with Code.org’s popular puzzle-oriented platform. It’s a great start, but there is not much follow-up content to support a longer class structure. Another tool similar to Scratch is Tynker, which comes with a physics engine and student management modules and offers more interactive games. Although there is a free version, lessons in Tynker are not free and may add cost to your classes.
Recruit kids and volunteers
Interest in coding has skyrocketed over the past two years, which may make it easier for you to recruit volunteers. If you have children, try asking their friends or parents. Volunteers need not be programmers--but it’s important that they know how to work with kids, and be willing to be patient.
Try to limit the number of kids to less than 5 or 6 per adult volunteer. If you are short on volunteers, ask kids with more experience to help others that are just starting.
Getting set up
You will need a computer or laptop for every student. If you are using a tool like Scratch, you should be fine with any computer that’s less than four years old. (Older computers might still work, but be a little slow.) Take 30 minutes to get kids set up on the WiFi, logged in to Scratch and creating accounts.
Try to standardize on a browser, as it makes it easier to give instructions and help students quickly. I prefer to use Google Chrome, since it is available on all operating systems (unlike Safari or Internet Explorer). Since Scratch requires Adobe Flash, you may need administrative rights to enable it. Flash is disabled by default on some browsers like Safari. Firefox is also a good option, but won’t work if students use Chromebooks (popular and affordable laptops that run Google’s ChromeOS).
Create a schedule and a time limit
A program that is around 8-10 weeks is a good way to start. It aligns with school schedules and is enough time to learn to code and make a project. You will probably want to organize the session by age range, either grades 1-2, 3-5, 6-8, and high school. Try and keep sessions less than 2 hours if possible, and closer to one hour for younger kids.
At the Mill Valley Code Club, we started creating our own step-by-step programming guides in bite-sized pieces that seem to work better for kids. If you are teaching Javascript or HTML, I highly recommend using Codecademy. It is free!
Use video games as a motivational goal
My promise to kids when they started coding was that they would make their own game. This was an important motivator for them, and they made a lot of progress. Maze games, animations set to music, and platformers are good goals to achieve in this time frame.
At younger ages, it’s more important for students to be excited than it is for them to learn a particular programming language or concept. Capturing their imagination and enthusiasm is going to be more effective than learning a particular skill or technology.
Kids won’t learn at the same pace
Some will miss classes if they play sports or have other activities. Make sure you don’t force everyone to be focused on the same thing. If a student misses a session or needs more time, it’s important that they are allowed to continue where they left off. Have kids keep a journal or notes of some kind to keep track of what they are doing. Doing this online is also valuable since they can share their progress with friends and parents.
Have a demo day and let them show off
Like any activity, a code club should culminate with a show and tell. “Demo days” are an established tradition in technology. Have kids imagine themselves being Steve Jobs on the stage at Apple introducing the iPhone, or Elon Musk unveiling the latest Tesla.
Kids can just share what they are doing each week, informally, or you invite parents and siblings to demo their games. Demos also a great way to educate parents about coding and what their child is learning.