There is an excellent article over on Grok’s blog about why we should Stop making learning to code easier, I strongly encourage you to take a look. The idea that we’re doing students a disservice by making coding simplistic resonates strongly with my own experience with teaching kids in school clubs.
Younger kids are willing to sit through a learning process which means the easy stuff can be put in context and used as a building block to more sophisticated concepts. But for slightly older kids who have stars in their eyes about building the next million-dollar-game starting off by dragging and dropping things into pre-made sockets builds no clear pathway to the reality of coding. And so they soon end up at a dead-end where they feel they have to regress to actually get anywhere – and far fewer are willing to take steps backwards to go forwards than would have been willing to take the harder steps in the first place.
To be fair this isn’t true only of coding: for years we’ve been simplifying maths and science curriculums to try to encourage more participation. But it is especially true of coding partly because of the huge amount of chatter about the necessity of kids learning to code accompanied by the small number of teachers who are in a position to teach coding. It’s one of the problems with pushing more coding into schools at a fast rate when you simply don’t have teachers with a depth of knowledge – and having played with Scratch for a few weeks is not even a paddling-pool of knowledge. It is like students being taught to cook by being taught to heat ready-made dinners by people who’ve learnt to use packaged food kits.
I’m not casting blame here, but we need to be careful about jumping on bandwagons and pretending that doing really basic drag and drop stuff is really learning coding and giving students the foundations they require to move forward. The most important thing students can learn is not anything to do with syntax – it’s all about problem solving. The key component in learning to code is to be confronted with a problem and see how to break it down, how to untangle the pieces to find a starting point and then to troubleshoot as things don’t work. Those skills are completely missing if you’re just learning to drag and drop into a pre-made model.
At the end of the day there really are no shortcuts to learning to do something properly. There are great ways to give people a taste or to have them play at the edges. But there is no easy way to learn to code properly: there are no easy ways to learn to do anything properly, whether that is coding or cooking or playing a musical instrument. It takes work, and we do students a disservice by pretending otherwise.