Scratch or Python? When should my child switch?

“Scratch or Python?”

“Should I be worried that my child is not using Scratch at school, yet?”

“Should I be concerned that my children’s school does not teach them Python at all?”

…and many more questions parents often ask about coding and what their children are or should be learning. Unlike other traditional subjects, programming (this is the preferred term for coding for kids) is not well understood by many parents and teachers, and different schools cover the topic in many different ways.

Most primary schools introduce the kids’ software Scratch to cover some very basic concepts in coding. I hesitate to call Scratch coding software, and it certainly isn't a coding language in the way most programmers would understand. There are too many key programming skills that cannot be learned on Scratch. Still, it has some uses for the very young, perhaps.

However, many schools keep using Scratch well past its ‘use-by date’ as a way of ticking the ‘coding’ box on the curriculum. Unfortunately, this is a disservice to our children for a number of reasons:

  1. Children get the wrong impression of what coding is

  2. They will get bored of Scratch very quickly. And there is the risk that they will get bored of coding under the impression that coding is the same as Scratch

  3. They are not learning ‘proper’ programming and therefore lag behind those children who are.

Should children be learning Scratch at school?

Answer: Yes, maybe, no.

Most schools start using Scratch at some point in the earlier years of primary school. I’m not a fan of Scratch as I don’t think it prepares children for text-based programming. But I don’t think it’s terrible if schools use it (sparingly) for the very young.

Not everyone will agree with the following point, but I don't feel it is required for kids. A better way of getting young children to think computationally is through unplugged exercises. By the age of 7, children should start moving on from Scratch. And by the age of 9 or 10, they should not be using Scratch at all. Which leads me to the next question:

Should children be learning Python at school?

Answer: Yes, yes, yes.

From the age of about 7, they should be getting a flavour of what proper coding looks like and Python is the language of choice for beginners.

I usually advise parents whose children are using Scratch that at this age, both Python and Scratch can be used at the same time. After a couple of years, it is almost certain that the children would have stopped using Scratch without needing prompting as they discover how much more they can do with Python coding, such as writing games, as in the video shown here. Schools often lack the expertise to teach Python, so they often don’t teach it.

How about children who have never used Scratch and start coding straight away with Python (as long as they are 7 or older)? Will they be at a disadvantage?

Answer: No.

The kids who never learned Scratch may indeed have an advantage! They are starting to learn coding without any preconceptions. The basic coding tools can be grasped fairly quickly even if children have no experience with Scratch.

There is a caveat here: Python is harder to teach. It requires someone who is well versed with coding to teach it effectively.

Inexperienced Python teachers often stick with teaching very basic programs. They may struggle to help students with their errors, ofting wasting plenty of time looking for errors in the children's code. It's not uncommon for teachers who are not proficient programmers to teach bad coding practices inadvertently.

It is also harder to develop and run fun and engaging projects in Python for an instructor who is not very confident with ‘grown-up’ programming. If the choice is between teaching Python badly or not teaching at all, perhaps the latter option is preferable.

Update 25/03/2018: we have revisited this topic with a new blog post: 'Scratch or Python' Revisited: It's a no-brainer. Scratch is baby talk. Python is a proper language


Interested to learn more? Access some of our content teaching kids to code in Python.

Next Courses: Summer Term 2022