Programming Is the New Literacy
Power will soon belong to those who can master a variety of expressive human-machine interactions.
Already, various thinkers about the future have proposed a number of candidates forthe designation "twenty-first-century literacy." That is, what are the key skillshumans must possess in order to be considered literate?Some writers assume that the definition of literacy will continue to be what it always hasbeen: "The ability to carefully read and write a contemporary spoken language." Others specifythat the term will apply only to fluency in one or more of the languages spoken by thelargest numbers of people, those certain to be important over the next nine decades of the century;candidates include Spanish, English, or Mandarin Chinese.
Still others expand the notion of twenty-first-century literacy beyond spoken and writtenlanguage to include the panoply of skills often collected under the umbrella term multimedia (being able to both understand and create messages, communications, and works thatinclude, or are constructed with, visual, aural, and haptic -- that is, physical -- elements as wellas words). Some go on to find important emerging literacy in interactivity and games. Andthere are those who say it includes all of the above, and might include other factors as well.
I am one of these last, in that I believe fluency with multiple spoken languages will continueto be important, and that multimedia, interactivity, and other game-derived devices will beincreasingly significant tools for communicating twenty-first-century thought. Nonetheless, Ifirmly believe that the true key literacy of the new century lies outside all these domains.
I believe the single skill that will, above all others, distinguish a literate person is programmingliteracy, the ability to make digital technology do whatever, within the possible one wants it to do -- to bend digital technologyto one's needs, purposes, and will, just as inthe present we bend words and images. Somecall this skill human-machine interaction;some call it procedural literacy. Others just callit programming.
Seem strange? I'm sure it does. Today, peoplewith highly developed skills in this area areseen as nerds. But consider that as machinesbecome even more important components ofour communication, our work, our education,our travel, our homes, and our leisure, the abilityto make them do what we want will becomeincreasingly valuable. Already, today, a formerprogrammer in Seattle, one of these very nerds,is one of the richest people in the world.
So, in a sense, we are going to see as weprogress through the twenty-first century a realrevenge of the nerds, except that the new nerdswill be our programmatically literate children.As programming becomes more important, itwill leave the back room and become a key skilland attribute of our top intellectual and socialclasses, just as reading and writing did in thepast. Remember, only a few centuries ago, readingand writing were confined to a small specialistclass whose members we called scribes.
Do You HTML?
One might ask, "Will every educated personreally have to program? Can't the people whoneed programming just buy it?" Possibly. Ofcourse, with that model, we have in a sensereturned to the Middle Ages or ancient Egypt, oreven before. Then, if you needed to communicateyour thoughts on paper, you couldn't do ityourself. You had to hire a better-educated person -- a scribe -- who knew the writing code.Then, at the other end, you needed someone toread or decode it -- unless, of course, you were"well educated," that is, you had been taught toread and write and thus had become literate.
Here's a key question: Will the need for aseparate scribe tribe of programmers continuethrough the twenty-first century, or will theskill set of an educated person soon includeprogramming fluency? I think that as programmingbecomes increasingly easy (whichit will) and as the need to show rather thanexplain becomes important (which it will) andas people working together want to combinethe results of their efforts and ideas instantaneously(which they will), educated peoplewill, out of necessity, become programmers.Think of it: Your phone and car already requireprogramming skills; many houses and jobs do,too. Programming will soon be how we interactwith all our objects, and I believe it will bean important component of how we interactwith one another as well.
Of course, there are already Luddites whothink a digital machine is most elegant if it hasonly one button (like the Roomba robot floorcleaner) and people who keep searching for acell phone that only makes phone calls. (Goodluck.) There is a hierarchy of levels of makingmachines do what you want (that is, programmingthem) that runs from manipulating a singleon-off switch to managing menus, options,and customization to coding higher-level programminglanguages (Flash, HTML, scripting)and lower-level languages (C++, Java) to creatingassembler or machine language.
Few people, however, remain satisfied forlong with the first level -- as soon as we masterthat, most of us seek refinements and customizationto our own needs and tastes. (The companythat makes the Roomba offers a kit to turn itsparts into whatever type of robot you want.)
Just about every young person programs(controls his or her own digital technology) tosome extent. Many actions considered merelytasks -- setting up a universal television remote,downloading a ringtone, customizing yourmobile phone or desktop -- are really programming.Doing a Web search is programming, as isusing peer-to-peer or social-networking technologies,or eBay, or creating a document inWord, Excel, MySpace, or Facebook -- and tossin building your avatar in Second Life. Today'skids are such good programmers that parentswho buy expensive high tech gadgets, such ascamcorders or home theaters, often hand themto their children to set up (program) for them.
Today, most of this programming takesplace in what I refer to as higher-level programminglanguages, consisting of menus and choicesrather than the more flexible computer code.Of course, many people will be content withthis level of programming (which still managesto baffle many "literate" adults).
But as today's kids grow up and becometomorrow's educated adults, most will go muchfurther. At an early age, many young peoplelearn the HTML language of Web pages andoften branch out into its more powerful sisterlanguages, such as XML and PHP. Other kids arelearning programming languages like GameMaker, Flash, and Scratch, plus scripting language,graphics tools, and even C++, in orderto build games. They learn them occasionally inschool, but mostly on their own, after school, orin specialized summer camps. Why? First,because they realize it gives them the power toexpress themselves in the language of their owntimes, and second -- and perhaps even moreimportantly -- because they find it fun.
Want a Program? Hire a Kid
Suppose you have a need for a computer program."Me?" you say. "Why would I have such aneed?" But this possibility is not far-fetched atall. For instance, when Howard Dean ran forU.S. president a few years ago, he (or someoneon his staff) had this idea: "What if we couldcollect contributions over the Internet?"Nobody had ever done this before, because thestructure wasn't there -- the program had neverbeen written. So he went out and found a youngprogrammer -- an eighteen-year-old -- to writethe necessary code, and within only a matter ofweeks the contributions started pouring in.
Most of us have problems a computer oranother digital machine could easily solve forus, if only we conceived them as programmingproblems: "What is my best commuting routeunder different weather or other conditions?""What are my statistics in my sports (or hobbiesor work), and how do they compare with thoseof others?" "What is the optimal configurationof my [you name it]?" "How close am I to retirement,and will I have enough money?"
We all have ideas and needs amenable toprogramming solutions. My guess is that themore educated and literate we are (in the tiredtwentieth-century sense), the more of these wehave. Yet most of us "digital immigrants" -- those who came to computers and digitaltechnology later in our lives -- never even knowit. We never realize that our desire to contactcertain groups of people at certain times, or tolighten the load of repetitive work (say, gradingpapers), or to solve certain types of puzzles(like Sudoku), are really programming problems,and quite solvable ones at that.
But some among us do realize this, and wehire young people -- often our kids, students,or employees but equally often consultantsselling solutions -- to do the necessary programmingfor us. One result is that we nonprogrammersoften get ripped off (charged a lotfor something quite simple), say, by financialplanners offering seemingly sophisticatedtools that, were we the slightest bit "literate,"we could not only write ourselves but also customizespecifically to our needs.
That's not how it will be in the future. As wemove further into the twenty-first century, well educatedpeople who have needs and ideasaddressable via programming will increasinglybe able to recognize this fact and take mattersinto their own hands.
The Digital "Scribe Tribe"
Recently, programming languages "ordinary"people use have begun to emerge. Of these, onein particular -- Flash, from Adobe -- appears tobe becoming a de facto standard. A great manykids in elementary school and the middlegrades around the world are learning to programin Flash and are continually improvingtheir skills as they advance through the grades.They use this tool and others like it (theMassachusetts Institute of Technology'sScratch, for example) to communicate a widerange of information and emotion -- from storiesto logic to games to ideas to persuasivearguments to works of art -- all through programming.And it seems to them not nerdy but,rather, sophisticated and advanced.
The young people who do this vary greatly,of course, in the sophistication of what theycan do. But sophisticated programming isbecoming easier by the day. More and morepremade programming objects -- code writtenby others that can simply be plugged in toperform certain tasks -- are available on theInternet, and are mostly free.
These databases of premade parts greatlyenhance students' abilities, extend their programmingand problem-solving capabilities,and shorten the time to get things done. In asense, these bits of code are like an alphabet ofprogramming. Recently, a friend was asked toprogram a "Wheel of Fortune" in Flash. Ratherthan taking a week to program it from scratch,he did a Web search, found something like whathe wanted available free, and finished the projectin an hour.
With these increasingly available and findablepieces of code, the range of what one cando and communicate with programming canexpand indefinitely. And though simpler programssuch as Flash already allow a pretty gooddegree of sophistication, many young people,through game creation, Internet-tool creation,or other means, get into the more sophisticatedprogramming languages of three-dimensional world building, scripting, and entirely abstract,logical programming languages such as Javaand C++.
And so emerges the new scribe tribe of programmers,reaching into (and eventuallybecoming) the intellectual elite of the twenty-firstcentury. Programming has already becomea tool today's young people use to communicatewith one another via such components asmachinima (see the definition below), ringtones,emoticons, searches, photo manipulation,and games. Young people email or IM theircreations to one another as we do our Word andExcel attachments, often posting them on theInternet for all to see. I bet few among us havenot been the recent recipient of an emailed URLpointing us to an interesting program, a greetingcard, a YouTube video, a machinima, or agame. (And, of course, Word and Excel are programminglanguages in themselves, with enormouslysophisticated programming capabilitiesbuilt in via macros and scripting.)
- Flash: A program that lets users create vector-based animation
- Machinima: "Machine cinema," in which simple tools found in video games are put to unexpected ends
- Scratch: An easy-to-use programming language developed by the Massachusetts Institute of Technology
As the century goes on, those who don'tprogram -- who can't bend their increasinglysophisticated computers, machines, cars, andhomes to their wills and needs -- will, I predict,be increasingly left behind. Parents and teachersoften disrespect today's young people forbeing less than literate in the old reading-and-writingsense. But in turn, these young citizensof the future have no respect for adults whocan't program a DVD player, a mobile phone, acomputer, or anything else. Today's kids alreadysee their parents and teachers as the illiterateones. No wonder some teachers are scared tobring new technologies into the classroom -- the kids just laugh at their illiteracy.
So, as the highly literate person of 2008might start off the day reading the New YorkTimes and firing off a cleverly worded letter tothe editor in response to a column, the highlyliterate person of 2028 may start the day ingestingthe news in multiple ways with varioustypes of stories they have programmed to bedelivered in a preferred order, each at a preferredspeed. And if that person feels a need toexpress an opinion, a simple bit of programmingwill allow him or her to determine all thepeople in the world to whom a response shouldgo, and have it customized for each of them. Orone might program and fire off a video, an animation,or a simulation.
As the highly literate adult of today mightpen a witty birthday card note for a young nieceor nephew, the highly literate adult of tomorrowmight program the child a game. Andthough today's highly literate person may enjoya sophisticated novel or nonfiction book on aplane or train ride, tomorrow's highly literateperson may prefer to change, by programming,whatever story or other media he or she is interactingwith to suit individual preferences, andmight then, with a little more programming,distribute those changes to the world.
And, of course, all this extends into the physicalworld as well thorough robotics andmachine programming.
Tools have always been important to humans;now, intellectual tools are becoming increasinglysignificant. Until recently, getting an educationand becoming a literate person meantlearning to use the set of tools considered essentialfor each field or discipline. The tools in anyendeavor change and improve over time, butthey generally do so quite slowly, and new toolsare often invented not by ordinary people butby "geniuses." Getting an education in a fieldhas long meant gaining mastery of itsexisting tools.
In this century, we will see, I think, somethingquite different. Using their ever moresophisticated programming skills, ordinarywell-educated people will be constantly inventingnew tools to solve whatever problems theyhave. In fact, this will be the expectation ofwhat a literate person does. Already, in manycircles (and not only scientific ones, althoughmost are still rather geeky), one often hearssomeone say, "I wrote a little program to dothat." And whether it's to find Manhattanaddresses or to keep track of how many secondsremain until your next paycheck, a typical reactionis, "Can I get that?" to which the answer isas simple as a URL or a USB key.
It takes neither geeks nor armies of peopleto create useful tools via programming. Awoman recently created an extremely usefulprogram to compile and redeem her supermarketcoupons. Google was created by twograduate students (Sergey Brin and LarryPage). Just one guy (Pierre Omidyar) developedthe original program for eBay. Often,from these initial programming ideas comevery big companies and profits. (Brin, Page,and Omidyar are all billionaires.)
But even if they don't yield huge profits,thousands -- and soon millions -- of people arebeginning to create and share good programswe can all use free. Successful companies trainnew programmers, who then generate theirown ideas and tools, in addition to the toolstheir companies build. Smart businesses arealready searching for young people who cancreate these new tools -- employees who aretwenty-first-century literate.
All of which brings us to an important question:If programming (the ability to controlmachines) is indeed the key literacy of this century,how do we, as educators, make our studentsliterate? This problem is a particularlythorny one, because most teachers, even manyof our best math and science instructors, do notpossess the necessary skills, even rudimentaryones. Most of the tools (and even the concept ofprogramming) were developed long after theseteachers were born or schooled.
Can we do it by bringing working programmersinto the schools? Not likely. Most of thegood ones are busy programming and have nodesire to teach.
The answer is not yet clear, but we can eithercome up with creative solutions to this realproblem, or, in their absence, the kids will, asthey are doing with so many things, figure outways to teach themselves. Imagine: Literacywithout (official) teachers.
Our machines are expected, thirty yearsfrom now, to be a billion times more powerfulthan they are today. Literacy will belong to thosewho can master not words, or even multimedia,but a variety of powerful, expressive human-machineinteractions. If you are from the oldschool, you may not enjoy hearing this, but Idoubt there is anything anyone can do to stop it.
Thirty years from now, will the United Statesbe more competitive with a population that canread English at a tenth-grade level or with apopulation excellent at making the complexmachines of that era do their bidding? The twooptions may be mutually exclusive, and theright choice may determine our children's placein the world's intellectual hierarchy.