Don’t rush it: what ScratchJr and simple block-based programming languages teach children

ScratchJr projects :: animated story

I wrote this post because I heard a few parents of kids aged 5 or 6 who did a few simple ScratchJr projects mentioning that they wanted to go to the next step. With the end of Hour of Code week, it’s easy for young coders (or their parents) to succumb to the lure of a more advanced programming language. After all, these programs offer more options. You might feel that you know everything there is to know about the simple block-based language you used so far. In many cases, that would be a huge, huge mistake! Let me explain why I think this way.

There’s more to coding than to write lines of code.

You need to grow a computational mindset. You need to figure out how to structure your code, how to test it, how to debug it. You need a methodology to start and execute your coding projects. You need first-hand experiences in design thinking and problem-solving. Using a simpler coding language enables the coder to hone these basic computational thinking skills, to grow their coding logic, to experiment different approaches to complete a coding project.

My guess is that, too often, simple block-based languages bore grown ups or grown ups failed to imagine more difficult challenges for their kids to solve. To prove what I just said, I did a little experiment using ScratchJr. ScratchJr is as simple as it can be. My idea was to demonstrate that you can learn computational thinking and deepen your coding logic with ScratchJr.

Teaching a coding method and a mindset, not just a language

In real-life, any developer would start a project with a client’s request or out of their desire to solve a specific problem. In real-life situations, a programmer is faced with a problem or a request that is expressed in terms that don’t account for how coding works. The programmer figures out how to code the deliverables using the strengths and the constraints of the coding language they planned to use. I took this challenge under the same convention.

I asked my 5-year-old son to be the client. He drew the first scenes on paper. We discussed it. He imagined a short story filled with action scenes and sound effects performed by 5 characters. Now, we needed to translate his vision into an animation using ScratchJr. This means that we had to determine the assets, separate the elements, think about how to produce the actions. We needed to test it, debug it and determine which methods work best in that particular situation. Completion of this project required general knowledge, using what we knew about ScratchJr, creative problem-solving skills and some tinkering.

Coding a simple animated short story like this raised deeper questions:

  • Can we stop the sound of the guitar after the giant crushed it or should we record for the amount of time the guitar needs to play?
  • How many pages do we need to tell the story?
  • Is there a better way to do this?
  • What are the other ways to do this?
  • When do we determine that it’s impossible to do with ScratchJr, could we find a workaround or adapt instead the story to suit what’s possible in ScratchJr?
  • Do we need more scenes, to refine the actions, or to add something else to bring more life to our story?

The complexities of some questions are too much — at least initially — for young school-age kids. Children need the help of an adult or an older kid to find a solution. The more you (parent and child) deal with these questions or problems, the better your child will become at solving them. Using a simple block-based programming language makes experimenting, failing and trying all over again easy. Kids are motivated because they can quickly code and see the results immediately with a simple language like ScratchJr.

My food for thought

Coding projects and robotics projects make great parent and child activities. Have fun! Make sure to capture your child’s attention before you start a ScratchJr project. Ask your child to invent a new story or challenge. Experiment more with what you have or with what you learned so far. Take the time to foster your child’s skills and to turn your child’s creative ideas into reality. Once you grew a solid foundation together, you and your child will be better equipped to explore more complex programming languages. There’s no rush!