When we think of a programmer, a very black and white image often comes to mind: a 20-something year old sitting alone in a dark basement continuously staring at a black screen with white letters that to most wouldn't make any sense. Recently, a much more colorful picture has been coming to my mind: a 10 year old excitedly showing her friends the tennis match she has just programmed, with a large smile emerging on her face as she explains how it makes a sound every time one of the tennis players hits the ball, or how she made the sky color change depending on the hour of the day.
But how can we turn the black and white zeros and ones that govern our computers into something so colorful and engaging?
My answer consists of two parts: the first is making coding a little bit less about computers, and the second is, when actually using computers, choosing the right tools to start.
Make coding a little bit less about computers
This might seem odd at first since, after all, coding is what makes computers work. Endless lists of "programming languages you need to learn to find a job in 2021" or "top 5 programming languages of the future" might make you think that learning to code means learning a programming language. If you ask any computer scientist, however, they will tell you that, once you learn computational thinking, programming languages become the easy part of coding. This might make computational thinking sound very complicated, but the good news is that it's very present in our daily lives.
Algorithms are the sequences of instructions that we give a computer to perform a task. We also give people sequences of instructions when we write a recipe or teach them how to take care of a plant. We follow a sequence of instructions when we play a sport, or use our phone's map app to get somewhere new. These, too, are algorithms. When learning computer science, we need to learn how to turn our instinctive, automatic algorithms into precisely detailed instructions, and we don't need a computer in this process.
Instead of increasing our children's screen time, we can simply ask them to give us precise instructions to make a PB&J sandwich (https://www.youtube.com/watch?v=Ct-lOOUqmyY), or have them find the word "programmer" in the dictionary in some way faster than going through each of the letters up to P.
Choose the right tools to start
At some point, however, if you want to learn to code, you have to...well, code. But then again, learning the programming language itself is eventually going to be the easiest part, so there's no need to learn Python or Java in the beginning. For kids, there are some amazing tools out there that can help.
Programming tools that use blocks avoid the need for memorizing commands all while giving users a visualization of the options they have. Websites like code.org or Tynker provide step-by-step instructions for children to program fun games or videos with few commands. LEGO Mindstorms allows kids to create code that affects a real-world, physical object: a LEGO robot they can build themselves. Scratch gives children endless tools and possibilities while instantaneously showing them the results of their work—and anyone who has spent more than half an hour with a youngster knows how excited instant gratification can make them. Through such engaging resources, children will know all the possibilities of programming and think algorithmically before moving on to written programming languages.
By bringing computational thinking to tasks we already know how to do and using tools that are appropriate for early learning stages of computer science, we allow children to become budding programmers, and we allow ourselves to change our image of a programmer to a much more colorful one.