Nowadays, nearly everything has a software component. Your car is a mass of tiny computers controlling wheels and an engine, new refrigerators connect to the Internet, and farmers hack the software in their tractors. (Some, in fact, are presently suing John Deere Company for the right to do so.) You have dozens of software apps on that phone in your pocket. But as long as Quickbooks lets you pay your bills and invoice customers, how much more do you really need to understand about how it does it?
Steve Jobs famously said, “Everybody in this country should learn to program a computer, because it teaches you how to think.” Allow me to add to that: Programming will make you think at a level of detail and precision to which most people are unaccustomed. And yes, it would be great if everyone did a better job of thinking, particularly our representatives in Washington, D.C. But should everyone learn to code? What does that mean? Is coding an essential skill like reading, writing and arithmetic? Or, is it more like art, music and foreign language?
When most Americans were employed in agriculture, there wasn’t much need for higher education. Reading, writing and ‘rithmetic’ were more than sufficient. As American jobs transitioned to manufacturing, vocational classes like wood shop, metal shop, auto shop and drafting became mainstays. But what are the right basic skills to ensure people today have a chance of getting jobs that let them rent a place to live, put food on the table and generally have a decent life, even if it’s not quite the American Dream of the 1950s? Because when you come right down to it, the U.S. educational system is primarily focused on turning out people who have the skills needed by businesses, so they have jobs, and so they can earn a livable wage.
What are the jobs of the future? Oversimplifying a bit, manual labor is not the future. Robots and artificial intelligence (AI) will automate rote tasks where people are just (at present) affordable “meat robots.” Jobs that can be done by robots and AI will largely disappear, because machines are cost-effective and easy to manage. As robots become more commonplace, they will become cheaper, and thus become affordable for a broader range of applications.
What jobs are left once there are no jobs for meat robots? Again, to oversimplify, the jobs that remain all involve solving problems that someone will pay to have solved. It goes without saying those problems include tasks computers find difficult to solve (whether such problems will exist in another hundred years is another question). And one of those problems is, obviously, why computers can’t solve a particular problem. Clearly, there will be jobs for people who work with machine learning, robotics, and artificial intelligence—at least for a couple of decades.
So, our original question becomes: Will learning to code help someone solve problems that computers can’t yet solve?” And I think the answer has to be yes. Learning to code, regardless of the language involved, teaches a precise way of thinking. It makes people better problem solvers, even if they don’t work with software. Please note, however, that I didn’t say learning to code will help everyone get jobs as programmers! (That’s like saying learning first aid will help everyone get a job as a surgeon.)
All computer programming languages share the same basic principles, and coding teaches people how to deconstruct a problem in terms of those basics. Some languages offer features intended to make the process easier, by hiding the details involved, but as Alan Turing proved mathematically, the most sophisticated computer language is no more capable than the simplest. All the sophistication is intended to make humans more productive and less error-prone.
It’s the human problem solver that has to identify the possible outcomes from different inputs, and account for them. Computers are unforgiving of failure in that regard, which teaches precision in deconstructing a problem. And the process of debugging—making code do what it is supposed to do when it doesn’t—teaches people to see beforehand the errors they can make in deconstructing a problem. As Jobs once said, coding teaches you a way of thinking about problems.
But can everyone learn to code? I think the answer is the same as the question: “Can everyone learn to do arithmetic?” Yes, but they may never be facile with it, or find it enjoyable, or choose a job that requires it. And, of course, it depends a lot on when and how they are exposed to coding, and who teaches them. Just as I believe that students should be exposed to art, music, history and science (and how practitioners of those disciplines think and see the world), I believe students should be exposed to the process of creating code to solve problems.
The good news: both in schools and online, there are more opportunities than ever for people (of all ages) to learn to code. Drop me a note at firstname.lastname@example.org, if you’d like to know more.
Cows grazing along hillsides and in seaside meadows are a picturesque and familiar sight in Marin and Sonoma counties. Dairy farms have been a local presence for more than 100 years, but thes...