Dive 66: Coding Myths and the Illusion of Progress
Hey, it’s Alvin!
I came across an article recently about how my home province of Ontario wants to educate kindergarteners on how to code. As someone who’s been coding software professionally for over a decade, I found the article more funny than accurate. Especially when we get commentary from people who have clearly never coded professionally before.
We like to think we’re more “progressive” than we’ve ever been. But the article is another example of how backwards modern society can be. So, I’m going to break down this article to dispel myths about coding and clarify what it really is. Please share this with those who are confused or curious about what coding is all about.
Let’s start by making one thing clear: software development is about solving problems with software as a solution. Coding is a way of implementing the solution. And it doesn’t always have to be. The software developers who make the most money are those who deliver the fastest, cheapest, and best solutions most consistently.
Coding is one of the least valuable skills because anyone can learn to do it quickly for free. And it will become less valuable as more people learn how to code.
Coding Myth #1: Coding improves logic.
“What coding does is create a logical understanding of if-then relationships, cause and effect relationships,” Todd Cunningham, a clinical psychologist and associate professor at the University of Toronto, told CTV News Toronto.
The irony of this statement is that it confuses cause and effect. Correlation isn’t causation. And this isn’t the first time I’ve come across the argument that coding improves logic.
Logic is fundamental to coding. Meaning: logic comes first; coding comes second. As you get better at logic, you get better at coding.
But the opposite isn’t true.
Practicing coding doesn’t automatically make you better at logic.
That’s a lot like saying that playing baseball makes you better at hitting a ball with a bat. Why isn’t that necessarily true? Because you can play baseball every day and strikeout every time you bat. The game of baseball doesn’t compel you to improve your hitting. Your hitting won’t improve unless you deliberately practice hitting. As you improve on hitting, you improve on baseball because hitting is fundamental to baseball.
Likewise, coding does not magically instill logic. You practice logic to improve logic. As your logic improves, your coding improves. Not the other way around.
Besides, if the goal is to create a logical understanding of if-then relationships, then math should be enough. And math is already taught in schools. Kids already learn that IF you add one to one, THEN you get two.
You don’t need to introduce coding to teach cause and effect. Daily life offers plenty of those lessons. IF you leave a slice of bread out for too long, THEN it will grow mould.
Sometimes it’s funny to hear “experts” speak about coding as if it imparts specialized abilities that can’t be gained more effectively in other ways.
But if you doubt my logic, remember that according to professor Todd Cunningham (not me), I must have an impeccable logical understanding of cause-and-effect relationships because I’ve been coding every week for more than a decade.
Coding Myth #2: Playing “Simon Says” improves coding.
Cunningham added that the game ‘Simon Says,’ where kids are told to follow the actions of a leader, could be an example of how those [cause-and-effect] relationships are taught.
Well, thank goodness I played “Simon Says” and “Red Rover” as a kid. Otherwise, I might not be coding APIs in Python today.
Which is it?
This is an example of someone grasping at straws because this person lacks practical coding experience. Kids have been playing “Simon Says” for ages. If playing this game was anywhere near useful for coding, then what’s the point of adding coding to the kindergarten curriculum, which is the whole point of the article?
Coding Myth #3: Problem-solving skills are for technological problems.
Skills such as pattern recognition and understanding how to break a problem into smaller components can be key when it comes to using technology, [Melissa] Sariffodeen said.
I don’t disagree with what this is saying on the surface. Breaking a problem into smaller components is a valuable problem-solving skill that every decent software developer uses every day. But, here, this problem-solving skill is framed as a second-class citizen to the use of technology.
Being able to solve complex, open-ended problems with creativity is FAR more valuable than coding or using technology. Because if you’re effective at solving problems, then not knowing how to code or use technology is not an obstacle at all. Because not knowing how to code is just another problem to solve.
The opposite isn’t true.
Knowing how to code won’t get you far if you can’t solve problems. Because as I mentioned in the intro, the true value of a software developer ties directly to problem-solving ability.
And remember, coding is for implementing solutions to problems. If a person can’t solve problems, they won’t have a solution to implement. Then, what’s the point of coding?
Problem solving comes first; coding comes second.
The Myth of Progress
The rest of the article gives a few other examples of activities for kids that might improve their coding skills. Like, “creating step-by-step instructions on how to move an object out of a maze.” They’re activities I did as a kid growing up in the 90s when adding “coding” to a school curriculum was not in any educator’s consciousness.
Overall, the article reminds me of what some call “the myth of progress.” On the surface, we appear to be improving and advancing as a species. But below the surface, we’re not.
Because we can’t realistically expect kindergarteners to sit in front of a computer to develop software in Python with VS Code. They’re expected to do activities that supposedly prepare them for the day they type on actual keyboards.
Except, almost all the activities mentioned are activities kids have been doing for decades. They’re just repackaged with a shiny new wrapper called “coding.” A skill that’s still so mysterious to most of the public that it might fool parents into thinking their kids are getting a boost from a new curriculum component.
My biggest beef with this isn’t even the illusion of progress in schooling. One of the biggest gripes people have with the modern North American education system is how it failed to prepare past students for today’s world. Adding a coding component to the curriculum continues this trend of failure.
Even if it did improve coding skills.
Because not only is coding the easiest part of software development. It’s the most replaceable part, too. AI tools like GitHub Copilot have been generating code for a while now. V0.dev can generate entire web-based UI components if you know how to type what you want in plain English. And there are stories of people creating entire software apps with just AI. Not to mention all the no-code tools that have been around for years now.
Sure, none of these tools are perfect. You still need to know how to code. But they are becoming more sophisticated every day. So, coding may be even less important as a skill by the time today’s kindergarteners enter the workforce. Which means the education system is still failing to prepare students for the future.
Failing to prepare students is the one thing the education system has been consistently good at. And it continues to disappoint. Because educators don’t learn. Apparently.
We might not know the exact skills that will be useful in the future. But some skills are always in demand. Some skills are timeless.
Problem solving is a timeless skill.
We’ve needed problem-solving skills since the dawn of time. And we’re far from running out of complex, open-ended problems to solve. There’s a reason the highest paid software developers are also the best problem-solvers. That’s why I’d much rather kids be taught how to solve complex, open-ended problems than a depreciating skill like coding.
Creative problem solving is a skill that’s much harder to replace than coding. Innovations and inventions require thinking outside the box and across domains—something AI still can’t do on its own.
And if you know how to solve problems well, you can figure out how to code if you don’t know how.
For all these reasons, obsessing over teaching kids how to code is just backwards. And it shows us how ignorance can give us the illusion of progress where it doesn’t exist.
Reply to firstname.lastname@example.org if you have questions or comments. I’d love the hear from you.
Thank you for reading. Dispel coding myths. And I’ll see you in the next one.