Computer Programming for All: A New Standard of Literacy

Everyone ought to be able to read and write; few people within the global mainstream would argue with that statement. But should everyone be able to program computers? The question is becoming critically important as digital technology plays an ever more central role in daily life. The movement to make code literacy a basic tenet of education is gaining momentum, and its success or failure will have a huge impact on our society.

The democratization of literacy in the late 19th century created one of the great inflection points in human history. Knowledge was no longer confined to an elite class, and influence began to spread throughout all levels of society. Any educated person could command the power of words.

What if any educated person had equal sway over the power of machines? What if we were to expand our notion of literacy to encompass not only human languages but also machine languages? Could widespread facility in reading and writing code come to be as critical to society as the ability to manipulate spoken and written language?

The usual definition of computer literacy stops at the UI: If a user knows how to make the machine work, he or she is computer-literate. But, of course, the deeper literacy of the programmer is far more powerful. Fortunately, computer languages and human languages are basically very similar. Like human languages, computer languages vary in form and character (Python to Java to Ruby) and can be implemented in infinite ways. My Python may not look like your Python, but it can do the same thing; likewise, a single idea can be expressed using a variety of combinations of English words. And both kinds of language are infinitely flexible. Just as a person literate in English can compose everything from a sonnet to a statute, a person literate in programming languages can automate repetitive tasks, saving time for things only a human can do; distribute access to systems of communication and control to large groups of people; and train machines to do things they've never done before. Computer programming already does marvelous things like deliver this article to your mind, operate life-sustaining medical devices and enable IBM's Watson to win at Jeopardy. The current potential for innovation would be many times greater if every schoolchild had a firm grasp of programming concepts and how to apply them.

Among programmers, a movement is forming around this idea. Shereef Bishay, founder of San Francisco-based Developer Bootcamp, believes that coding is destined to become a new form of widespread literacy within the next 20 to 30 years. Everybody should learn to code, he says, because machine/human and machine/machine interaction is becoming as ubiquitous as human/human interaction. Those who don't know how to code soon will be in the same position as those who couldn't read or write 200 years ago.

300 years ago, Bishay said, "you would have to hire to write a letter for you, and hire them to read the letter for you. It is just insane." Today most people hire a skilled programmer to write computer programs for them.

The code literacy movement began to gather steam in late 2011, when Codecademy started teaching basic programming skills for free. The debate came to a head this week as two blog posts took the top spots on the tech website Hacker News. The first, dubbed “Please Don’t Learn to Code,” came from noted developer and StackOverflow.com creator Jeff Atwood on his blog Coding Horror. The second, a rebuttal entitled "Please Learn to Code," came from Sacha Greif, a Parisian designer whose clients include HipMunk and MileWise. 

“I do think (or at least, hope) that computer programming will become the next version of literacy,” Greif wrote in an email to ReadWriteWeb. “When I watch my 4 year old niece interact with an iPhone, I see her intuitively using interaction patterns that older people often have trouble with, even when they're computer-literate. And kids can easily memorize huge quantities of facts about complex abstract systems like Pokemon games. So clearly they have the potential to learn how to code.”

Not everyone in the programming community agrees. Atwood argues that verbal literacy is a different kind of skill, and more fundamental. “Literacy is the new literacy,” he told ReadWriteWeb. “As much as I love code, if my fellow programmers could communicate with other human beings one-tenth as well as they communicate with their interpreters and compilers, they'd have vastly more successful careers.”

Atwood stresses learning, and mastering, the basic skills of communication. Learn to read. Learn to write. Learn to hold a conversation. Learn some basic math. These skills, he says, are more essential than being able to program a computer.

Of course, the path to universal code literacy is not without roadblocks. The skills necessary depend on how computing evolves over the next several decades. How will quantum computing affect our relationship with computers? However, the human capacity to learn is not at issue. If it becomes necessary for me to code to interact with my machine, I will likely learn to code. It is no different than if I was dropped off in Cambodia without a place to stay or food to eat - I'd learn the local language posthaste. 

At present, the ability to program computers is vocational, like carpentry or learning to cook. There's little impetus to make it universal. But imagine if it were.

Should computer programming become the new literacy? Or should it remain a vocation? Let us know in the comments. 

Images courtesy of Shutterstock