Expert Says Don’t Teach Kids to Code

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:

  • Boys at Computer (Tallinn Digital Summit) by [Arno Mikkor] CC BY 2.0
  • Student with Cursive by [OakleyOriginals] CC BY 2.0

216 thoughts on “Expert Says Don’t Teach Kids to Code

  1. Teaching coding/programming as a way of thinking is a valuable skill. Teaching that it is not the only way of thinking is an equally valuable lesson.

    Having not read the report, I almost wonder if it is a response to the panacea of “teach your baby to code” and “STEM toy” fad. While I am all about teaching kids about science and technology, “STEM” is the “Green” of our time. Most of the products with this branding do little beyond separate worried parents and their money. I have a saying: STEM toys are like fishing lures: most of lures are designed to catch the angler and not the fish. In the same way, most STEM toys are designed to catch the parents, not teach the kids.

  2. Back in the day, I learned Fortran, Pascal, and DOS. I don’t think they are used anymore, either, but it did exactly as you said–it taught me how computers ‘think.’ A lot has changed since the 80s, but I still understand the basics and know how to troubleshoot a problem with my computer.

    1. Same here. They taught me the basics of how hardware works, how to access real world devices, how assembly language works, etc. None of it went to waste.

      And I still program in Pascal and BASIC, it may not be cool and trendy like Python or C++ but it gets the job done.

  3. Don’t JUST teach kids to code.

    Seriously we don’t need every person to grow up to be a computer programmer. There are still other jobs to be done.

    What we do need is an intelligent population filled with people that actually UNDERSTAND their own f@#$ng world that they inhabit and that surrounds them. The agricultural and industrial revolutions happened. We aren’t naked in the savanna anymore. Ours is a TECHNOLOGICAL world.

    Schools should have a mandatory tech class. How many semesters? I don’t really know. Some basic coding should definitely be a PART of that class though. As should hardware, the basics of how the machines we all use and depend on work, their use and maintenance.

    Teach the kids that there is no such thing as a “magic black box”. That will do more good than any hyper-focus on code.

  4. Had Andreas Schleicher been around during the early years of the computer revolution when kids were getting Sinclairs, Apples, Ataris and Commodore computers and learning to program on their own, he would have put a end to that.

    He would demand they put in years learning abstract stuff they may never use and kill their curisoity in the process.

    And comments from those teaching kids are just depressing. I would not want any of them near my family’s children at all. These guys can’t teach and can’t think.

  5. My $.02 worth — if the student is inclined to work with information technology, teach said student decent math skills, Boolean logic, and flowcharting. Specific coding languages and markups are easy to learn once these basics are mastered.

  6. All of the programming languages I learned in high school, at home and in college are obsolete.
    All of the software packages I learned in college are not being used anymore.

    The programming books I bought today are worse than my teachers teaching style in college.

    2% of the population today knows how to code so basically “BASIC” failed in teaching people to code.

    Many people teach by telling people to do something which is not teaching. Many people don’t teach people how to do something.

    And a lot of people are only teaching people familiar with something instead of teaching at the level of a complete noob.

    Some of my teachers were great at remembering so they taught what they remembered but were bad at explaining because they didn’t pass from their understanding; they passed because they could remember.

    And the architecture will change on computers so we’re back at square one.

    1. Not sure where you are living, but not only did I start with Basic but I still use it in my work for automation. Additionally, all of the logic concepts I learned with Basic are still relevant today in ALL of the other 12 languages I work in. ALL of the platforms I use C, C#, Python, PHP, VB, Ruby, XML, HTML, Java, Javascript, JQuery, SQL and more STILL use loops, conditions, data selection and more…. the these things were taught using basic and made it much easier for me to learn other languages. Basic has not failed, if you didn’t get any practical skill or learn any useful logic concepts from the basics then it is you that failed. The books and software you mentioned no longer being useful is just progress, but they are far from useless. They teach the concepts and foundation that all current software was built on. It’s sad you didn’t learn what you needed.

  7. Not quite sure how to teach “data science” to children. Data Visualization or how to use Programming to help solve math problems or other types of computational problems makes sense. I guess you can teach them the high level stuff in Data Science but without at least some college level calculus and statistics, understanding the backpropagation algorithm or the concept of classification can be quite a challenge….even for high school students

  8. One thing I have learned, is that educators are still clueless about how kids learn, what to teach them, what is the best way etc. Each generation become guinea pigs for whatever the latest fad theory is. There is a generation who were taught set theory instead of basic mental arithmetic, and now don’t understand set theory or mental arithmetic. But they are fine with doing what the computer tells them.

    School is really about getting kids conforming to social rules, being eager consumers, and believing the propaganda. Do we actually want citizens who think for themselves? ;)

    The one size all approach is bound to fail as well. Some kids might take to abstract concepts, most will need concrete skills and then learn to generalize later (if at all). I’m not even sure you can teach “logical skills”, it appears to be an innate talent.

    Anyway, I am currently working on an update to a PL/M 86 system from about 1995.

  9. The value in coding as a career is significantly less than it was in the past, and it continues to rapidly decline as the number of software engineers are pressed out of universities around the world like plastic trim on a GM assembly line. If you’re thinking of this way of life, familiarize yourself with terms like Agile, Automation, Autism, Age discrimination, and H1B.. all of which are rampant in today’s tech industry. While it’s undeniable that tech surrounds us (and we must understand it), it’s also undeniable that tech is an exploitive race to the bottom. Learning to code is now akin to learning to spell. It’s a necessity with commodity value. Although complexity has increased dramatically, value has not. These trends are systemic and global.

  10. 20 years from now 40% of humans will be of no use to society whatsoever, this percentage will continue to rise until we are all effectively redundant in terms of what people are needed for, what they contribute to our current societies. Humans will need to completely reinvent their set of drives and goals, but all that is hiding the real issue, many people are simply not intelligent enough to grasp enough of “coding” to really benefit, it is these people who need to learn something else more aligned to psychology and clear thinking, they (we all) need to learn how to manage our own minds more than any other skill and computation is just one facet of sophisticated thinking.

  11. Even if we don’t need more people to develop and maintain programs professionally, widespread scripting ability might be nice. A good deal of flexibility can often be gained from some rudimentary ad hoc automation, though it could be that those cases would be more easily served by providing graphical tools based on the same Blockly-esque systems currently being touted as introductions to programming. One geared toward simple browser extensions, for instance, could be handy.

  12. This century AI will outperform hackers in all fields. From its ability to acquire and process general knowledges, it will deliver in a snap all imaginable applicatiosn from a set of requirements stated verbally, textually, graphically, schematically, ….
    Refuting this is futile.

  13. This type of person must removed of any leadership role. They just try make educational fracture and probably they don’t understand what is behind learning coding.
    Learning coding is not about learning a language but is about mastering problems solving and this is a knowledge that you can apply on any science if you do philosophy and also on any aspects of your life.
    This is an insult to the human brain.

  14. I wanted to add in reference to bad teaching; perhaps bad teaching of computer languages is worse than not teaching it all. If the aim is to teach fundamentals in logical thinking if you get that wrong you produce a generation of those who have confidence in their abilities as problem solvers and programmers when the reality could be the furthest from the truth.

    Also, they’ve been going about the death of programming for decades now, it’s like fusion, always seeming to be just ten years away from practical implementation. Misplacing faith in AI is a terrible fallacy, I suspect as a result of the big technology companies marketing bumphf and over the top sci-fi stories around the subject to make it sound way more impressive than the current and medium term reality of it. i suspect we’ll all be stuck in the reality of trying to explain to a computer how to be human and have human perspectives, maybe in a hundred years we’ll have something we can trust not to murder 1/10th of the population because it was the logical choice.

    I got into programming for the fun of creating something, if you’ve got enough determination the other fundamentals tend to fall into place, you learn because you want finish something cool to show your friends. Not sure any teaching not built around this core value is worth a great deal.

  15. Teaching my son to program only required having achievable goals.
    His desire to program in basic was fueled by making the stick man jump on his Sinclair Z80.
    He was 8 at the time.
    Later, teaching networking in college, I gave extra credit to students who could hack the instructors server. (Mine)
    This gave the students “Ownership” of their education.
    It’s all about the technique..
    Clearly, yore mileage will vary.

  16. In a 1996 book, “The Global Trap”, two authors describe a future society filled with unemployed, dissatisfied and unable people, quite similar to the modern “smart”phone generation that assumes there is an “App” for everything already, believing in the idea that achieving or solving something today must be easy and would never require effort, hard work, sweat and dedicated endurance for months or years or simply long attention spans.
    In particular, the book is known for defining a possible “20/80 society”. In this possible society of the 21st century, 20 percent of the working age population will be enough to keep the world economy going. The other 80 percent live on some form of welfare and are entertained with a concept called “tittytainment”, which aims at keeping the 80 percent of frustrated citizens happy with a mixture of deadeningly predictable, lowest common denominator entertainment for the soul and nourishment for the body.

  17. I wonder if you could make the same argument for not teaching kids much of anything, like reading/writing, math, history, etc.. because by the time they grow up, they’ll all have a smart personal A.I .assistant/servant which will read and write their messages for them, do any calculations they need, notify them of any historical information relevant to the current context. Why do we need people that can count change if we have register terminals that tell clerks exactly what to give back?

    I guess that is until some digital catastrophe happens and all the post-millennials start starving to death because they are so unskilled and mentally atrophied that they can’t even open a can of food on their own. But such a thing could never happen, right?

  18. I learned to code C++ by myself when I was a kid over 20 years ago. It’s still relevant today. Programming is the newest engineering discipline compared to others. Why wouldnt you want your child to have a solid skill? Teach your kid other useful skills too because most public schools suck at teaching anyway.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.