Last week my company hosted an event called
TechBuddies, which aims to introduce kids of age 10-14 to the basics of programming in a fun and exciting way.
I helped out in one of the sessions which teaches the basics of Python. It was awesome to see how quickly all kids got used to syntax. And even more so how excited they got when they finally figured out how to solve a problem they had been struggling with. They had fun and I'm sure some of them will continue having fun with programming.
We hosted three different workshops, in each workshop the kids used a different application to program something. I'll go through them to explain what they do and what makes them awesome.
SonicPi is a really cool program that allows anyone to create their own music using code. The syntax is based on Ruby. You can play single notes and scales easily, and you can use a wide range of samples. There's a lot of documentation to get you started which you can find here.
I was really inspired by a talk given by the creator of SonicPi, Sam Aaron. He really drove home the point that software is used for boring businessy things so much of the time. This video of him performing is a great demonstration of how powerful the tool is:
With Scratch you can create cool animations and games easily. Scratch, in contrast to SonicPi and CodeCombat, doesn't teach syntax directly. Instead you can drag and drop control elements that behave like loops, conditionals, and many others. You'll still get used to the basics of programming, but without the risk of mistyping, which was a common cause of frustration for the other two tools. And don't get me started on Python indentation.
The visual nature of Scratch can make it easier to understand how elements interact. Kids especially can really unleash their creativity using this.
Although these programs may be aimed at kids, they're also a very fun and effective way of learning syntax for adults. My product owner learnt the basics of HTML, CSS and Python by doing a lot of CodeCombat challenges. You're never too old to play games, and you're never too old to learn new things.
Programming skills might become more and more important in the future. It is estimated that at any point in the last couple of years, about 50% of developers had less than 5 years of experience. That's caused by a huge inflow of new developers worldwide. Automation can play a huge role in basically all jobs, which makes programming an incredibly important skill.
Tools like SonicPi and CodeCombat reduce the barrier of entry to programming, which unfortunately is still quite big. Getting started can feel like a grind, there is so much to know. Just having some structure and boundaries might help a lot. To me, a 100-level game seems a lot less daunting than a 100-part tutorial.
We've got a really big opportunity here to inspire kids and maybe even help them find their passion. Kids who would otherwise never even try, because they would feel they didn't fit the stereotype of a programmer.
There are multiple ways you can help inspire the next generation of programmers:
- Contribute to open-source projects like SonicPi and Scratch. These projects often really appreciate you donating your time or money.
- Teach kids in a classroom setting or at a camp. Some interesting examples (I haven't verified these initiatives): Code for fun and TEALS.
- Contribute to an event or organize an event yourself.
If you know any other good resources, please share them in a comment!