Tech Talk

Share |
E-Mail ArticleE-Mail Article Printer-FriendlyPrinter-Friendly

Learning to Code

Columnist: Michael E. Duffy
September, 2017 Issue

Michael E. Duffy
All articles by columnist
Columnist's Blog

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, if you’d like to know more.




In this Issue

The Heroes Next Door

Firefighters are our heroes. They face the menace of raging wildfires while others seek safety, and every day, they assist individuals experiencing traumatic events. Incredibly, many firefighters perf...

Stars in Our Eyes

Indeed, viewing Saturn’s rings, as well as nebulae, clusters of stars and other galaxies millions of light years away at the top of the Mayacamas Mountains is truly breathtaking—an experie...

How to Save a Park: Broadway Style

As the sun sets behind Sonoma Mountain, a talented group of professional singers and dancers perform on a stage set within the old winery ruins at Glen Ellen’s Jack London Historic State Park. T...

See all...



Upcoming Events

17-Jan-2020 06:00 pm

18-Jan-2020 09:30 am

19-Jan-2020 12:00 pm

20-Jan-2020 07:00 am