Many are suggesting that everyone learn computer programming, and that coding be a core component of our educational system. Here's a more measured approach.

There is a growing movement suggesting that everyone learn computer programming, from students just learning their ABCs, to seasoned executives who presumably would enroll in remedial classes to gain some experience coding. The reasoning seems sound: as the world grows increasingly dependent on technology that's built atop computer code, we should each have a basic understanding of how these technologies are built and maintained. A "coder generation" presumably would understand the how and why of when a technology doesn't work, and could even self-diagnose and troubleshoot problems as they occur. The most vocal advocates of the movement recommend that coding be placed among the hallowed subjects of Reading, Writing, and Arithmetic, the core of education.

While this argument has an obvious appeal, it could be applied to most complex modern technologies. The automobile and aircraft revolutionized business and society, yet most people are able to successfully leverage these tools without even a basic understanding of the internal combustion engine or aerodynamics. Everything from modern medicine to electricity is as critical, or arguably more critical, to modern society as computing and internet technologies, yet there are few calls for widespread, mandatory education in these areas.

Is coding education the wrong solution to the right problem?

I believe that some of the fundamental concerns expressed by the "learn coding" movement are legitimate. Skills such as breaking a complex problem into component parts, rapidly learning and applying new tools and methods, synthesizing a complex series of tasks to accomplish an objective, integrating disparate elements designed by multiple teams, and "debugging" a system when it doesn't work correctly are critical for success in a variety of professions. While coding checks all these boxes, so does woodshop, cooking and baking, advanced mathematics, or designing a house. "Debugging" a failed soufflé or a mortise and tenon joint that doesn't quite fit uses a similar thought process to debugging some pesky JavaScript code, but each content area likely appeals to different sets of people.

Enforcing mandatory coding is a proscriptive approach to the problem of teaching the aforementioned skills, and enforces a single approach to a problem that can be solved through multiple content areas. Furthermore, just as you don't need basic nuclear physics to operate a light switch, or know what to do when the power fails, you shouldn't need a knowledge of computer science to operate and leverage technology.

Process over content

Where some mandatory education is appropriate at all levels of society is the process around building technology-based products. Most young students learn the basics of the assembly line and modern production, which gives them an understanding and appreciation for how the automobile in their driveway was created, or how the cereal in their bowl was delivered to them, without extensive content knowledge. Similarly, most executives have walked their production floors or have a basic understanding of how their products are produced.

Technology lacks that fundamental understanding of the basic process that produces technology-driven products. Even seasoned executives have little understanding of the core components and processes that produce an app, a smartphone, or an enterprise application. While they understand the need for extensive testing and QA for a new medical product, they might not grasp the QA process for software. They also might not understand that they're being misled when a development team provides an overly optimistic or pessimistic estimate to build or fix a technology-driven product, or might not be able to identify when a development team is going astray.

For the average citizen, just as having a basic notion of how your home is built and the time and cost involved in such an endeavor makes us better consumers and caretakers of that home, a basic understanding of how technology is used, managed, and deployed will make us better users and consumers of that technology. This task can be accomplished without forcing people to endure years of a discipline in which they have no interest.

Conclusion

Despite several years of calculus, I have yet to experience a pressing need to determine when two trains approaching each other at varying rates of speed will cross, although I understand the motivation to teach critical thinking and problem solving abilities. However, I'd argue that I learned just as much from woodshop and programming, two areas that stimulated my interest in problem solving and critical thinking, as I did from those years of calculus -- time that probably would have made me a more effective worker and citizen had they been applied to history, literature, or another discipline.

Subjecting generations of students and workers to mandatory coding education is the wrong way to accomplish an otherwise noble goal. Critical thinking, logic, rapidly learning new tools and methods, problem solving, and task management should be embedded in and encouraged in every content area, rather than as the sole domain of coding and technology.

Also see