Coding is not meant to be easy
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.
I have to agree. That brings up a question for you, in CoderZ, which is an online learning environment for programming virtual and real robots, students start with Blockly, which is snapping visual blocks together, but can also program in Java. Students can either start new projects in Java or export a blockly project to a Java project, so they can start easy and move on to Java. What do you think of such an approach? from your experience that is.
My ideal is that if they are using drag and drop they can switch to seeing the underlying code behind the blocks. Then as their needs get more complicated they will turn more and more to using the underlying code until they stop using the blocks at all. That’s an evolutionary progressions rather than requiring a hard jump.
tnx,
CoderZ offers side by side view of the Blockly code and Java preview. Students can also use this preview as base code for their Java project so it looks like you would find it ideal. If you like I can set you up with an account.