'Scratch or Python' Revisited: It's a no-brainer. Python is a proper coding language, Scratch isn't.
Updated: Jun 3, 2019
Do you ever speak to your 10-year old in baby talk?
“Doggie. Woof Woof.”
“Oven. Hot. Ouch”
I didn’t think so? There may or may not be reasons why we speak like this to babies (I personally never did), but by the time they’re toddlers or pre-schoolers we just use “normal” English to speak with them, or whatever language is spoken at home. Indeed it is critical that we speak to them using the correct grammar and vocabulary as that’s how they are learning the language.
What’s this got to do with coding?
Programming is a way of communicating with a computer and the programming language we use is, well, the language. There are many languages we could choose (Python, Java, C++, Swift and many more). This is not too different from having many spoken languages to speak (English, German, Mandarin, Maltese…)
Recently however we have seen a proliferation of children-specific platforms for children to code in, Scratch being the most popular one.
This is the equivalent of baby talk.
Perhaps, it may be useful for a very brief introduction with 5 or 6 year olds (personally I’m not too convinced of this either) but not beyond that, and certainly not for 9, 11 and 13 year olds.
So, why is Scratch used so extensively then? I have discussed moving from Scratch to Python in what has since become our most popular blog post by far. Here I revisit and revise those thoughts. Spoiler alert: It’s not looking good for Scratch et al.
The real answer is that schools do not mostly have the expertise to teach programming using a ‘grown-up’ language. This is not a criticism of schools, on the contrary, it’s a reflection of the fact that programming is a high-level skill that can only be fully mastered through years of experience.
Indeed, in the same way that you wouldn’t want someone who can just about order a croissant and a coffee in a Parisian café to teach French to your child, it is best if Python (or other full programming languages) are not taught at all rather than being taught poorly.
We often get children who tell us that they have done some Python at school and they find it boring and difficult. Almost always it’s because all they’ve done is a few short, unimaginative programs that simply print out a few names and that they don’t really understand fully anyway.
Of course there are exceptions. I cannot proceed without saying that there is a small subset of teachers who do a great job at teaching coding - I follow many of them on social media and they do great stuff. The reality is that the likelihood that your children are being taught by them is nearly zero.
There is no easy short-term solution to this problem that doesn’t require significant investment that schools do not have. And even in the longer term, there are no clear paths since programming requires someone with a significant level of proficiency to teach even the basics well.
In the interim though we need to recognise (schools, parents and children) that programming in real life does not look like Scratch.
I am often asked for advice on how children should learn programming and my short version is:
Don’t worry about Scratch - you can very well live without it.
Don’t worry about coding before the age of about 7 or so, other than encouraging logical and systematic thinking and unplugged exercises.
From the age of about 7 or 8 (or even a bit later), children can start learning programming directly using Python, but, importantly, following a program that is both thorough and engaging. Python is often introduced to children either in a rather dull way, or alternatively programming is buried in complex software or hardware that detracts from the real task at hand: learning how to think like a programmer.
Let’s stop talking to our children in baby talk. They need to learn a proper language.