The first time I saw Scratch* being used, in its early days, I remember thinking what a great idea it was. Having long held the belief that coding should be taught to children because it is a skill that’s becoming more and more important in our society, this seemed like genius.
I was wrong.
Scratch and similar software, as well as the myriad of robots and circuit boards with flashing lights that seem to crop up by the day, are certainly a brilliant way of engaging children in the world of computer programming and to introduce them to some of the very basic concepts that form the foundations of coding such as loops and decision making statements. So what’s my issue with them?
Let’s get this out of the way first: despite frequent claims stating otherwise, these kids' software and hardware do not teach children how to code, they merely introduce them to the basics. Of course we all need to start learning the basics of anything we want to master — but we quickly move on beyond the basics once we’ve grasped the concepts.
However, I regularly have 13 and 14-year olds attending courses who are still using Scratch, and encouraged to do so by their schools who still teach it. This is similar to having a 7 year old reading board books having a single three-letter word per page, or a 12-year old who can add and subtract but can't do much else in Maths.
So why is ‘pop computing’, as this style of teaching computing has been dubbed (Idit Harel, "American schools are teaching how to teach kids all wrong"), so popular? My guesses are as follows:
It is easy to teach even by those who have no or little expertise in programming. I have seen it ‘taught’ in many schools by teachers whose subject speciality was not even remotely close to computing (anything from PE to history through English) but “were good with computers”.
It is easy to make fun stuff with pop computing software and hardware, mainly because most of the coding happens underneath the hood — the software does it for you. Typing ‘forward’ and ‘left’ to make a robot move forward and left is hardly the pinnacle of coding, to put it mildly. Making games with the various kids' software is equally easy as the hard stuff is done by the software itself.
For the children, pop computing feels like playing games — indeed it is. Now there’s nothing wrong with learning through play, but our children are not really learning how to write computer programs when they make a game using one of these software. Kids like this stuff because they can get away with playing games while doing school work. Of course they are using their imagination, which is great, but they can let their imagination loose even more with text-based programming where there is very little stopping them from writing whatever program they think of.
Now, before going on, I should say that there are some very talented computer science teachers (you can follow some of them using the #caschat hashtag on Twitter) who can use these resources brilliantly and I have no doubt that their students learn coding well. We have to accept however that these are a small minority of teachers.
A report by the UK Parliament’s Science and Technology Committee ("Digital Skills Crisis", June 2016) highlighted the shocking facts that only 35% of computer science teachers have a relevant degree (and there’s no guarantee that all of them are proficient with practical coding) and that 30% of computer science teachers required have not been recruited. Chances are your daughter or son is not being taught by someone who can conjure up computer programs with their eyes closed (figuratively speaking, of course). Would you be happy if they were taught Maths by someone who wasn’t that confident with algebra? Or if they were taught English by someone with shaky grammar? I wouldn’t.
The tools used in ‘pop computing’ are fine, as long as they are used for what they are meant for: engagement and introducing the basic concepts. It is important to realise their limitations and to know when to move on from them to proper, grown-up programming languages (text-based programming.) This is the only way to learn about using functions, writing robust and efficient code, using the right data structures for the right tasks etc… Our view is that 7 year olds are ready to start moving on to Python or similar languages, and roughly from the age of 9 or 10 they should only be learning to code using proper languages. Once they get the hang of Python, they should not look back. They will be on their way to help change the future.
* Scratch is a program for kids that allows you to drag and drop blocks that perform basic coding tasks. If you have children at school you’ve probably heard about it and maybe you’ve seen your child use it at home too.