The Atlantic has an article from about a week ago questioning if the growing effort to teach children, particularly those in underperforming school districts, coding skills will actually help them in the end. The author and many of the people she interviews are worried that there is a danger that many of these programs will only teach a very limited set of skills that will leave the students locked out of all but the easiest and lowest-paying jobs.

The biggest concern here is that many people seem to think of coding as job training for careers in “tech” when that’s not really true. If “tech” just means web and mobile application development (and I think that is what it means to a lot of people), then maybe that’s not so far off, but knowing how to code will only get you so far in a job. Several of the people quoted stress that educators need to instead treat coding as being equivalent to the “three ‘R’s” of reading, writing, and arithmetic. I think that comparison is an exaggeration, but the general point isn’t wrong. Coding is a tool (one of many) that can be used to solve various problems or achieve various goals. Coding, however, does not necessarily teach you how to design and implement a large project. It doesn’t teach you much of anything about anything involving hardware, or about the mathematics needed to solve complicated equations in a science or engineering problem. If you know how to code but don’t know any of the underlying principles of the program you’re trying to write, you’ll always be stuck following someone else’s directions and implementing someone else’s solutions. That kind of work doesn’t necessarily pay well and won’t necessarily lead to a long-lasting, fulfilling career. Basically, tech isn’t coding and neither is computer science. Coding is an important skill for many (but not all) jobs in tech and computer science.

The author mentions Java and Javascript several times as if these aren’t appropriate languages to learn, but I don’t see any problem with that. You can’t teach every language, but something like Java is close enough to other languages like C that the transition is pretty easy. If students were learning Haskell or lisp then I could see that criticism being more valid.

The article brings up the important point that students who want careers in fields involving computers should learn coding in order to have an easier time succeeding later in their education not in order to get a job right out of high school. With coding they’ll be able to spend more time thinking about the actual problems they’re given and less about how to write the code to get a solution. There are actually many different ways that programming can be incorporated into the curriculum outside just a programming class. Simple math programs could be used to help students better understand things like calculus (one-dimensional limits and Riemann sums can be very easy to implement and might lead to greater understanding), intro physics (numerical solutions of differential equations can be written well before students are ready to actually solve the equations by hand, letting students see how equations of motion lead to the solutions in the textbook). Of course, doing this requires that students all have regular access to computers, which is a serious problems in the underprivileged schools that the article is focusing on.