Everyone needs to know how to program, or not

A common refrain I’ve heard over the years is “everyone needs to know how to program”. Computers are pervasive in both work and leisure. Knowing how to make them do what the humans want is valuable both from a practical standpoint and from a financial standpoint. But does everyone really need to know how to program?

This topic has been on my list for a long time, but I got a convenient nudge on Twitter earlier this week. My friend, speaking about science communication, exactly captured my feelings:

The spectrum of computer skills is very broad. At the high end is computer science (which doesn’t necessarily translate to practical computer usage skills). As my friend Dave describes it, CS “is a branch of mathematics built around complexity.” This is clearly beyond the level that everyone needs. At the low end is basic computer literacy like using standard desktop software. That seems to be a safe bar for “everyone”.

So we know the high end is too high. The low end is a bare minimum. Where’s right spot in the space between those two extremes? I’m inclined to lean toward the low end. Programming, and thus automation, has applications in almost every profession. But that doesn’t mean it’s a key skill for every profession. In my current job, I have almost no need for programming skills. Basic use and troubleshooting of the applications I use is all I need. I wouldn’t tell someone looking to get into product marketing to not learn programming, but I wouldn’t say they have to in order to be successful in the role.

I’m generally skeptical of using the education system as vocational training. Especially in fast-moving fields like technology, curricula can’t keep up with the changes in the field. How much of what you teach a 7th grader about programming in a particular language will be relevant by the time they enter the work force? At best, you can teach broad concepts.

If you asked me what’s driving this push for coding in the classroom, I’d say it’s two things. First, policymakers who don’t understand technology themselves see this as a way to drive economic growth and help the fortunes of their constituents. Second, technology companies are seeing a shortage of workers with the skills they want and so are looking to get the public to fund their job training programs. I don’t see similar efforts to teach electrical or plumbing work to everyone, even though they’re both well-paid and also highly practical to those outside the profession.

So let’s put more computer literacy into the curriculum. But let’s not assume that means programming. If anything involving computers and education needs to change, it’s that computer science and programming curricula need to include ethics courses.

Sidebar: one area where programming in education may help

The main area I see a true benefit for adding programming into primary and secondary education is helping under-indexed minorities get involved. Tech has more than just a “pipeline problem”, to be sure. But while the cultural problems are worked on, it can only help to get more under-indexed minorities interested. If nothing else, it will help dilute the bros.

2 thoughts on “Everyone needs to know how to program, or not

  1. You could say “Everyone needs to know how to drive”. Which means not everyone needs to know how to design a car, mill out an engine, wind an alternator, or even these days, change your oil, but knowing what to do when you’re behind the wheel is certainly important, and there are a great many parts of our modern world that are difficult to handle without it.

    Similarly, you don’t need to create gates from raw sand, or send pages to your L2 swap or even know how to swap out your memory in order to do computing today, but there is a body you should know in order to be functional.

    (We are among the 1% that can explain what happens on the network after we hit “enter” after typing in “google.com”, and I’m sure I’ll leave a few things out.)

    But, if you ARE going to mill out your own engine block these days, chances are, that’s CNCing a block of metal, and you will have to know (something that knows how to generate) gcode.

    And, it seems, we might be the last generation who will have to know more than get in, sit down, say “Take me home” and open up Twitter.

Leave a Reply

Your email address will not be published.