Saturday, February 21, 2015

Do We Really Need to Teach Kids to Code?

Once again, President Obama (who is presumably not a coder) is advocating that every child learn how to code, saying:
“We’ve got to have our kids in math and science, and it can’t just be a handful of kids. It’s got to be everybody. Everybody’s got to learn how to code early.”
The problem is, it's the right message for the wrong reasons. I suspect Obama doesn't know the first thing about what the true virtues of learning to code are. He seems to see it from the narrow, parochial, "get a better job when you grow up" point of view, which is blatantly fraudulent, since we ship so many coding jobs overseas. He also seems to connect STEM education, in some mysterious fashion, to future innovation. (Can you not innovate if you don't know how to code?) And the whole discussion is a swipe at teachers, which I don't like.

I think it's possible to agree with the idea of teaching kids to code while also agreeing with the idea that kids ought to get more exposure to the liberal arts as well. The two are not mutually exclusive, or shouldn't be. Both are critical.

But the legitimate reasons people should learn to code are not ones I hear Obama talking much about, probably because he's only dimly aware of them. Let's talk about those reasons.

First, I think it's legit to learn any new language. In learning a language, you pick up new vocabulary (of words and ideas), new ways of expressing yourself, new ways of making yourself understood by others. Also, every language (even a programming language) has a Gestalt all its own, a worldview and an expressivity that's unique to the particular language. This is worth experiencing. Ironically, it's a hard thing to describe in words. If you've learned a language, you know what I'm talking about.

Secondly, learning to program teaches you to think more clearly. To solve any problem in code, you have to be able to state the problem clearly. Problem definition assumes critical importance. You learn about scope.

Programming is unforgiving of syntax errors, scoping errors, design errors, typing errors. You learn about debugging, which is the art of identifying flawed assumptions. We all need more of that.

As a matter of sanity preservation, you learn to become detail-oriented, when you program, because only in this way can you minimize time spent debugging. This is very much a learned skill, and something everyone needs to learn.

You also learn the meaning and value of best practices

Programming teaches open-mindedness, by showing that there is always more than one way to reach a desired goal. There are many algorithms for sorting an array, for example. Some are fast, some are general, some bog down under edge cases; yet they all do the same thing. Selecting the best path to a solution requires weighing priorities, revisiting the problem definition, comprehending context, understanding what you're doing and why you're doing it. (Thus, it also teaches self-awareness.)

Programming, if you stay with it, also teaches self-confidence. Not the phony kind that comes from false praise, but the earned kind. Feedback is immediate. Your code runs, or it doesn't; it does the required task, or it doesn't. When you write a piece of code that does what you want, brilliantly, you feel brilliant. The hard work pays off.

When you become a coder, you're perfecting yourself.

I don't hear much talk from the President about these matters. So I don't know whether to feel good about him advocating that kids learn to code, or not, because I don't think he gets what it's about, really. It has nothing to do with getting a better job. It has everything to do with becoming a better thinker, and thus a more complete human being. That's the part I can get behind.

Have you joined the mailing list? What are you waiting for? 

☙ ❧

Meanwhile, I want to thank the following great people for retweeting me yesterday. Click into these profile pics and Follow these guys on Twitter! They retweet!


  1. Well said.

    As someone who's taught programming to college students, I can definitely say that some just don't have the right kind of minds for it. They can be dedicated and determined as all hell, but they'll simply never be able to understand the unforgiving logic of it.

    Computer (not coding) literacy though, is invaluable. In that they suddenly realize that this mystical machine is simply (and dumbly) running through the step-by-step commands of thousands of fallible human beings. They don't have to know how to code in any real sense to see that, and that the data spit out by a computer is only as valid as the assumptions of the humans that produced it, and the agendas of those who analyze/publicize it.

  2. I am not sure we can teach all kids to code any more than we can teach all kids to fix cars or hit a curve ball.

  3. This is a really informative knowledge, Thanks for posting this informative Information. Wynnum Psychologist

  4. I really liked your Information. Keep up the good work.


  5. Get Whole Information about how you confirm you american express card


Add a comment. Registration required because trolls.