Originally published by Robert Beisert at fortcollinsprogram.robert-beisert.com

Rant: Why we need fewer coders

“In fifteen years we’ll be teaching programming just like reading and writing … and wondering why we didn’t do it sooner.”

Words cannot begin to describe how angry everything about this poster makes me. First, let me get the subjective part out of the way: I deeply dislike Mark Zuckerberg. Not only does his social networking service routinely modify their user interface in ways that aggravate the average user, not only did he rip the code off from a company for which he was contracted to do work, but Zuckerberg is in the process of actively censoring content that the political powers of nations find distasteful. It begins with the ban on criticism of Islam and immigration policy in Germany and extends to his recent talks with the Chinese propaganda ministers. I just…cannot abide the slug.

But the quote is of greater interest to me as a programmer and an engineer. I’m beginning to see this sentiment creep into academia, where there are millions of dollars to be made off of students and where, sadly, very few individuals have encountered the private industrial world in their entire adult lives. There are movements cropping all over the place intending to expand the diversity of the STEM field.

There’s just one major problem with the quote: it makes no sense to an actual engineer.

Imagine the most famous plumber in the world said something like this: “In fifteen years we’ll be teaching industrial sewage maintenance just like reading and writing.” Off the top of your head, does it make any sense for an elementary school teacher or a biologist to know how to lay pipe for different types of materials? The same goes for programming and coding.

Coding is the act of translating a solution into functional code. Most coders are proficient in one or two languages, and are only truly capable of solving problems that they have already seen solved. This is great if you want someone to design the same sort of database or the same website that someone else employs, but it cannot go beyond that. Coders are to programming what Tumblr posters are to writing.

Programming is far greater than mere coding. In fact, coding is mostly incidental to the art and practice of programming.

If I had to give a definition, Programming is applied problem-solving. Programmers take vague directives like “make me an app that can send temporary picture and video messages to someone else” and transform them into working products like Snapchat. It’s an art which requires three skills:

  • The ability to break problems down to the most trivial level
  • The ability to anticipate and prevent future problems
  • The ability to diagnose and correct existing problems

To a programmer, the language and system are merely aspects of the problem to be solved. I, for example, have written functional code in C, C++, Java, Python, PHP, Perl, Prolog, AWK, several assemblers, Ruby, SQL, and LISP. I have developed code for the Android, PC, and Linux operating systems, in both 32 and 64-bit. Quite honestly, I find all of those details to be remarkably boring, and the language of choice to be merely a factor of convenience and/or preference.

We have thousands of coders in the United States right now. India and China have millions. Heck, if you just want some coding done, you can outsource to Indonesia and other low-cost countries.

What the world desperately needs, and what shills like Zuckerberg fail to grasp, is programmers. It’s a particular skill set, one that is difficult to acquire and even more difficult to master. It requires a mind that is inherently logical, focused, and inquisitive. It requires the discipline to study hard, and the ingenuity to combine that acquired knowledge into new solutions. It requires a particular kind of laziness that encourages the development of easier and more-reliable solutions, instead of just waiting for someone else to do it.

Programming can only be done by those who are true engineers at heart.

That, ladies and gentlemen, is the biggest reason why Zuckerberg’s quote makes no sense. If someone is a writer at heart, they will likely lack the correct aspect of laziness and the particular ingenuity required to produce new programs; they’re better off as writers. If someone is a caretaker at heart, they likely lack any desire to program at all; they’re best served as caretakers. If someone is a doctor at heart, then the world does not need for them to waste time programming; we need good doctors.

Teaching programming as though it were reading and writing takes valuable time and resources away from those skills and practices that would best serve the individuals who would be forced to learn. It is sufficiently arduous to be soul-sucking to those who don’t have that inner desire to program. It’s sufficiently tedious to be impractical for those who aren’t “wired” for it. And, it’s sufficiently niche to be completely unnecessary for the vast majority of people.

The United States tests poorly against other nations. We’re bottom-tier in math, reading, and science. Universities are offering more and more remedial classes to teach adults what the Chinese learn in grade school. NINETEEN PERCENT of high school graduates today cannot read. With statistics like these, how do we expect to add programming to the curriculum?

We don’t need to sink any lower, and we don’t need to pour millions of dollars into teaching people how to code. Find those who are engineers at heart, stake them out, and guide them toward the field of programming.

For the rest, stick to what you’re good at. The world will be better for it.