I was a little surprised to see a news report about Andreas Schleicher, the director of education and skills at OECD — the Organization for Economic Cooperation and Development. Speaking at the World Innovation Summit for Education in Paris, Schleicher thinks that teaching kids to code is a waste of time. In particular, he seems to think that by the time a child today grows up, coding will be obsolete.

I can’t help but think that he might be a little confused. Coding isn’t going away anytime soon. It could, of course, become an even deeper specialty, and thus less generally applicable. But the comments he’s made seem to imply that soon we will just tell smart computers what we want and they will just do that. Somewhat like computers work on Star Trek.

What is more likely is that most people will be able to find specific applications that can do what they want without traditional coding. But someone still has to write something for the foreseeable future. What’s more, if you’ve ever tried to tease requirements out of an end user, you know that you can’t just blurt out anything you want to a computer and expect it to make sense. It isn’t the computer’s fault. People — especially untrained people — don’t always make sense or communicate unambiguously.

But there’s a larger issue at hand. When you teach a kid to code, what benefit do they actually get? I mean, we can all agree that teaching a kid Python isn’t necessarily going to help them get a job in 10 years because Python will probably not be the hot language in a decade. But if we are just teaching Python, that’s the real problem. A Python class should teach concepts and develop intuition about how computers solve problems. That’s a durable skill.

Schleicher almost agrees. He said:

For example, I would be much more inclined to teach data science or computational thinking than to teach a very specific technique of today.

I’m not sure what computational thinking is, but I would expect it is how computers work and how to architect computer-based solutions. That’s fine, but you will want to reduce that to practice and today that means JavaScript, Java, Python, C, or some other practical language. It isn’t that you should know the language, you should understand the concepts. I do a lecture with kids where we “code” but not for a real computer and it illuminates a number of key ideas, but I would still classify it as “coding.”

This isn’t a new problem. Gifted math teachers or gifted math students build intuition about the universe by understanding what math means. Dull teachers and students just learn rote formulae and apply patterns to problems without real understanding. Many programming classes turn into a class about the syntax of some programming language. But the real value is to understand when and why you would want, say, a linked list vs a hash table vs a binary tree data structure. It seems like teaching those concepts in the abstract with UML diagrams and hand waving won’t be very effective.

You also have to wonder about unintended consequences. Kids aren’t taught to write in cursive in many schools, yet that’s really good for fine motor skill development. While the slide rule was harder to use than a calculator, it forced you to think about scales and estimation.

If you listen to Schleicher’s other addresses and his TED talk, he has a lot of great ideas about education. Perhaps he doesn’t mean the word “obsolete” as strongly as I’m taking it and only means most people don’t need to know specific coding techniques. Maybe this is the press taking things a bit out of context. Oddly enough at the last summit, one of Schleicher’s colleagues appears to disagree with his position, as you can see in the video below.

I would submit that as more people try to do more with computers, they need to be increasingly able to think logically about how a computer solves problems. And the best way we have to do that today is through teaching coding, but teaching it in the right way.

What do you think? Have you taught kids to code? How do you get past the specifics and develop the general understanding required to formulate computer-based solutions to real-world problems? Do you want kids to learn about coding in school? Why or why not? Let us know in the comments.

Photo credits: