“Scratch or Python?”
“Should I be worried that my child is not using Scratch yet at school?”
“Should I be concerned that my children’s school does not teach them Python at all?”
…and many more questions parents often ask about the coding their children are or should be learning. Unlike other traditional subjects, programming (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 that are similar to coding. I hesitate to call Scratch a coding software (and certainly not a coding language) as there are too many key programming skills that cannot be learned on Scratch. Still it has some uses for the very young, perhaps.
Many schools however keep using Scratch well past its ‘use-by date’ as a way of ticking the ‘coding’ box. Unfortunately this is a disservice to our children for a number of reasons: (a) children get the wrong impression of what coding is; (b) they will very quickly get bored of Scratch, with the risk that they will get bored of coding under the impression that coding is the same as Scratch; and (c) they are not learning ‘proper’ programming and therefore lag behind children who are.
Let’s start answering the questions at the top, but not before recalling the famous saying: “Put 100 economists in a room and you will get 100 different opinions” – replace ‘economists’ with ‘computing educators’ and the joke still stands.
Should children be learning Scratch at school?
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. I personally don't feel it is required, though, as a better way of getting young children to think computationally is through unplugged exercises. My view is that by the age of 7 children should start moving on from Scratch, if they are using it, and by the age of 9-10 they should not be using at all. Which leads me to the next question:
Should children be learning Python at school?
Yes, yes, yes.
From the age of 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 in parallel, and after a couple of years at most 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 often they 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?
If anything they might be better off as 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 and not waste all the time they have with the children looking for errors in their code or teaching them coding bad 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.