The next generation: teach your kids to code?
For back-to-school month, we got our front-end developer Marijn digging into the sense and nonsense of teaching kids to code.
I’ve always liked the idea of teaching kids to program. A year ago, I joined an initiative called Coderdojo that does just that – it’s like a music academy or sports clubs, but for coding!
There’s loads of writing out there about the necessity or desirability of teaching children to code – and initiatives and tools are popping up everywhere, from Kickstarter projects to Mark Zuckerberg and Bill Gates’s Code.org project.
In short: some people think it’s essential, especially to convince more youngsters to get into STEM professions and future-proof careers; others think it’s a waste of time or will teach them skills that’ll be obsolete by the time they’ve grown up.
There’s fair arguments on either side, but volunteering at Coderdojo taught me a number of things about the value of teaching kids some programming skills.
Coderdojo and other similar initiatives like Codefever, use a handful of tools – like Scratch, Mbots, an Arduino – and we’ll dive into them later. But the real goal is similar to a lot of after-school activities: to teach them to create something, and not just consume!
Which brings us neatly to the main question…
Why should kids learn computer programming?
If you ask proponents of the idea – especially those who insist that coding should be taught in schools – the reasons are often practical.
Coding has become increasingly important in the job market, with a knowledge of programming becoming an asset in more and more fields. Analytics, maths, and technology are becoming a part of larger and larger parts of the working world!
On top of that, there is the lurking threat of automation and AI to all sorts of jobs, even creative ones.
That being said, I think the real reason for teaching programming to children is even more important.
Parents may be less surprised at this, but when volunteering, I frequently found myself amazed at how creative these kids were, how many wild ideas they could come up with and how quickly they learn.
And this is the key of why I think it is a good idea to teach children some “coding awareness”.
Programming doesn’t necessarily mean coding, and it doesn’t steer kids towards a career as a developer.
Instead, it’s a great way to help kids learn general technical skills and to expose them to computational thinking.
Programming makes learning to learn fun.
At its core, programming is about logic and patterns – and a better understanding of those will carry weight far beyond “coding” as such. Much like other man-made processes – like drawing, sculpting, making music – it can boost enthusiasm for learning and help foster both creative and logical thinking.
Programming specifically can teach you to describe a problem and break it into small components, find patterns, and use logical algorithms to solve the problem – all worthwhile skills that will serve you well in any line of work!
So how do we teach them?
A decent argument against teaching children how to code concerns the computer language: not only are there many different ones in use today, but it’s also almost guaranteed that they will have changed by the time those kids are adults.
But like we said earlier, the focus should be on the underlying skills and principles that inform every language – and paradoxically, that means inventing another, more visual one, just for teaching.
One of the most popular ones of those visual languages is Scratch, a free, open-source environment developed by MIT for that exact purpose. There’s even a ScratchJR version for children aged 5-7, based on visual coding blocks and allowing young kids to make simple stories and games on the tablet.
The “regular” version of Scratch is a multilingual, multi-platform visual coding language for people aged 8 and up. It lets kids make games or stories by thinking creatively, reasoning systematically and working collaboratively – all in a fun and playful way!
It divides everything you might want to achieve into a set of different visual blocks, each block controlling a different aspect: simple things like motion, sound and the way something looks, and more complex aspects like variables with data, events (clicks, keyboard entries, …), sensing blocks (distances, current time, mouse movements…), and mathematical functions.
There is also a drawing zone, where you can paint your own assets or upload images to make the program even more personal.
Because the language has such a lively online community, you can find large collections of ideas and exercises online to get started, regardless of your age. If you’d like to experiment with a few ideas in Dutch, you can go here or here…
Bring out the robots
Of course, a computer program is just that – but one of the things that even really young kids can do to really get into the coding experience is using a robotics interface.
There’s plenty of options for robotics coding projects. Products like Bee-bot and Cubetto target the youngest children with very simple projects, while an interface like Mblock, combined with robotics from Mime, takes it to the next level with an interface based on Scratch and a connection with Arduino.
And of course, programmable robots are cool enough to get into the mainstream, too. Lego launched their Mindstorms range a while ago, combining the power of lego with the brain of a computer. It’s a well designed piece of software that’s easy for children to understand, and the projects (factories, cars, robots…) are extendable with sensors and motors.
Of course, at some point you might want to go further and get into “real” coding…
When that happens, Python is a nice and simple language to get started, while Arduino is a good starting point for robotics and the Internet of Things. And for all kinds of projects, there is the undefeated Raspberry Pi, a very small and cheap computer that’s a good basis for getting creative.
Will you be introducing your kids to code?