Programming Is the New Literacy | Edutopia
Edutopia on Facebook
Edutopia on Twitter
Edutopia on Google+
Edutopia on Pinterest Follow Me on Pinterest
WHAT WORKS IN EDUCATION The George Lucas Educational Foundation

Programming Is the New Literacy

Power will soon belong to those who can master a variety of expressive human-machine interactions.
By Marc Prensky
  • Facebook
  • Twitter
  • Pinterest
  • Share
Credit: Laura Morris Designs

Already, various thinkers about the future have proposed a number of candidates for the designation "twenty-first-century literacy." That is, what are the key skills humans must possess in order to be considered literate? Some writers assume that the definition of literacy will continue to be what it always has been: "The ability to carefully read and write a contemporary spoken language." Others specify that the term will apply only to fluency in one or more of the languages spoken by the largest 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 written language to include the panoply of skills often collected under the umbrella term multimedia (being able to both understand and create messages, communications, and works that include, or are constructed with, visual, aural, and haptic -- that is, physical -- elements as well as words). Some go on to find important emerging literacy in interactivity and games. And there 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 continue to be important, and that multimedia, interactivity, and other game-derived devices will be increasingly significant tools for communicating twenty-first-century thought. Nonetheless, I firmly 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 programming literacy, the ability to make digital technology do whatever, within the possible one wants it to do -- to bend digital technology to one's needs, purposes, and will, just as in the present we bend words and images. Some call this skill human-machine interaction; some call it procedural literacy. Others just call it programming.

Seem strange? I'm sure it does. Today, people with highly developed skills in this area are seen as nerds. But consider that as machines become even more important components of our communication, our work, our education, our travel, our homes, and our leisure, the ability to make them do what we want will become increasingly valuable. Already, today, a former programmer 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 we progress through the twenty-first century a real revenge of the nerds, except that the new nerds will be our programmatically literate children. As programming becomes more important, it will leave the back room and become a key skill and attribute of our top intellectual and social classes, just as reading and writing did in the past. Remember, only a few centuries ago, reading and writing were confined to a small specialist class whose members we called scribes.

Do You HTML?

One might ask, "Will every educated person really have to program? Can't the people who need programming just buy it?" Possibly. Of course, with that model, we have in a sense returned to the Middle Ages or ancient Egypt, or even before. Then, if you needed to communicate your thoughts on paper, you couldn't do it yourself. You had to hire a better-educated person -- a scribe -- who knew the writing code. Then, at the other end, you needed someone to read or decode it -- unless, of course, you were "well educated," that is, you had been taught to read and write and thus had become literate.

Classified Ad:

Electronic Arts, the world’s biggest video game company, recently created this billboard advertisement written in a programming language. Can you read it? (It says, "Now Hiring.")

Credit: Marc Prensky

Here's a key question: Will the need for a separate scribe tribe of programmers continue through the twenty-first century, or will the skill set of an educated person soon include programming fluency? I think that as programming becomes increasingly easy (which it will) and as the need to show rather than explain becomes important (which it will) and as people working together want to combine the results of their efforts and ideas instantaneously (which they will), educated people will, out of necessity, become programmers. Think of it: Your phone and car already require programming skills; many houses and jobs do, too. Programming will soon be how we interact with all our objects, and I believe it will be an important component of how we interact with one another as well.

Of course, there are already Luddites who think a digital machine is most elegant if it has only one button (like the Roomba robot floor cleaner) and people who keep searching for a cell phone that only makes phone calls. (Good luck.) There is a hierarchy of levels of making machines do what you want (that is, programming them) that runs from manipulating a single on-off switch to managing menus, options, and customization to coding higher-level programming languages (Flash, HTML, scripting) and lower-level languages (C++, Java) to creating assembler or machine language.

Few people, however, remain satisfied for long with the first level -- as soon as we master that, most of us seek refinements and customization to our own needs and tastes. (The company that makes the Roomba offers a kit to turn its parts into whatever type of robot you want.)

Just about every young person programs (controls his or her own digital technology) to some extent. Many actions considered merely tasks -- setting up a universal television remote, downloading a ringtone, customizing your mobile phone or desktop -- are really programming. Doing a Web search is programming, as is using peer-to-peer or social-networking technologies, or eBay, or creating a document in Word, Excel, MySpace, or Facebook -- and toss in building your avatar in Second Life. Today's kids are such good programmers that parents who buy expensive high tech gadgets, such as camcorders or home theaters, often hand them to their children to set up (program) for them.

Today, most of this programming takes place in what I refer to as higher-level programming languages, consisting of menus and choices rather than the more flexible computer code. Of course, many people will be content with this level of programming (which still manages to baffle many "literate" adults).

But as today's kids grow up and become tomorrow's educated adults, most will go much further. At an early age, many young people learn the HTML language of Web pages and often branch out into its more powerful sister languages, such as XML and PHP. Other kids are learning programming languages like Game Maker, Flash, and Scratch, plus scripting language, graphics tools, and even C++, in order to build games. They learn them occasionally in school, but mostly on their own, after school, or in specialized summer camps. Why? First, because they realize it gives them the power to express themselves in the language of their own times, and second -- and perhaps even more importantly -- 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 a need?" But this possibility is not far-fetched at all. For instance, when Howard Dean ran for U.S. president a few years ago, he (or someone on his staff) had this idea: "What if we could collect contributions over the Internet?" Nobody had ever done this before, because the structure wasn't there -- the program had never been written. So he went out and found a young programmer -- an eighteen-year-old -- to write the necessary code, and within only a matter of weeks the contributions started pouring in.

Most of us have problems a computer or another digital machine could easily solve for us, if only we conceived them as programming problems: "What is my best commuting route under different weather or other conditions?" "What are my statistics in my sports (or hobbies or work), and how do they compare with those of others?" "What is the optimal configuration of my [you name it]?" "How close am I to retirement, and will I have enough money?"

We all have ideas and needs amenable to programming solutions. My guess is that the more educated and literate we are (in the tired twentieth-century sense), the more of these we have. Yet most of us "digital immigrants" -- those who came to computers and digital technology later in our lives -- never even know it. We never realize that our desire to contact certain groups of people at certain times, or to lighten the load of repetitive work (say, grading papers), 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 we hire young people -- often our kids, students, or employees but equally often consultants selling solutions -- to do the necessary programming for us. One result is that we nonprogrammers often get ripped off (charged a lot for something quite simple), say, by financial planners offering seemingly sophisticated tools that, were we the slightest bit "literate," we could not only write ourselves but also customize specifically to our needs.

That's not how it will be in the future. As we move further into the twenty-first century, well educated people who have needs and ideas addressable via programming will increasingly be able to recognize this fact and take matters into their own hands.

The Digital "Scribe Tribe"

Recently, programming languages "ordinary" people use have begun to emerge. Of these, one in particular -- Flash, from Adobe -- appears to be becoming a de facto standard. A great many kids in elementary school and the middle grades around the world are learning to program in Flash and are continually improving their skills as they advance through the grades. They use this tool and others like it (the Massachusetts Institute of Technology's Scratch, for example) to communicate a wide range of information and emotion -- from stories to logic to games to ideas to persuasive arguments 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 they can do. But sophisticated programming is becoming easier by the day. More and more premade programming objects -- code written by others that can simply be plugged in to perform certain tasks -- are available on the Internet, and are mostly free.

These databases of premade parts greatly enhance students' abilities, extend their programming and problem-solving capabilities, and shorten the time to get things done. In a sense, these bits of code are like an alphabet of programming. Recently, a friend was asked to program a "Wheel of Fortune" in Flash. Rather than taking a week to program it from scratch, he did a Web search, found something like what he wanted available free, and finished the project in an hour.

With these increasingly available and findable pieces of code, the range of what one can do and communicate with programming can expand indefinitely. And though simpler programs such as Flash already allow a pretty good degree of sophistication, many young people, through game creation, Internet-tool creation, or other means, get into the more sophisticated programming languages of three-dimensional world building, scripting, and entirely abstract, logical programming languages such as Java and C++.

And so emerges the new scribe tribe of programmers, reaching into (and eventually becoming) the intellectual elite of the twenty-first century. Programming has already become a tool today's young people use to communicate with one another via such components as machinima (see the definition below), ringtones, emoticons, searches, photo manipulation, and games. Young people email or IM their creations to one another as we do our Word and Excel attachments, often posting them on the Internet for all to see. I bet few among us have not been the recent recipient of an emailed URL pointing us to an interesting program, a greeting card, a YouTube video, a machinima, or a game. (And, of course, Word and Excel are programming languages in themselves, with enormously sophisticated programming capabilities built in via macros and scripting.)

As the century goes on, those who don't program -- who can't bend their increasingly sophisticated computers, machines, cars, and homes to their wills and needs -- will, I predict, be increasingly left behind. Parents and teachers often disrespect today's young people for being less than literate in the old reading-and-writing sense. But in turn, these young citizens of the future have no respect for adults who can't program a DVD player, a mobile phone, a computer, or anything else. Today's kids already see their parents and teachers as the illiterate ones. No wonder some teachers are scared to bring new technologies into the classroom -- the kids just laugh at their illiteracy.

So, as the highly literate person of 2008 might start off the day reading the New York Times and firing off a cleverly worded letter to the editor in response to a column, the highly literate person of 2028 may start the day ingesting the news in multiple ways with various types of stories they have programmed to be delivered in a preferred order, each at a preferred speed. And if that person feels a need to express an opinion, a simple bit of programming will allow him or her to determine all the people in the world to whom a response should go, and have it customized for each of them. Or one might program and fire off a video, an animation, or a simulation.

As the highly literate adult of today might pen a witty birthday card note for a young niece or nephew, the highly literate adult of tomorrow might program the child a game. And though today's highly literate person may enjoy a sophisticated novel or nonfiction book on a plane or train ride, tomorrow's highly literate person may prefer to change, by programming, whatever story or other media he or she is interacting with to suit individual preferences, and might then, with a little more programming, distribute those changes to the world.

And, of course, all this extends into the physical world as well thorough robotics and machine programming.

Tool Time

Tools have always been important to humans; now, intellectual tools are becoming increasingly significant. Until recently, getting an education and becoming a literate person meant learning to use the set of tools considered essential for each field or discipline. The tools in any endeavor change and improve over time, but they generally do so quite slowly, and new tools are often invented not by ordinary people but by "geniuses." Getting an education in a field has long meant gaining mastery of its existing tools.

In this century, we will see, I think, something quite different. Using their ever more sophisticated programming skills, ordinary well-educated people will be constantly inventing new tools to solve whatever problems they have. In fact, this will be the expectation of what a literate person does. Already, in many circles (and not only scientific ones, although most are still rather geeky), one often hears someone say, "I wrote a little program to do that." And whether it's to find Manhattan addresses or to keep track of how many seconds remain until your next paycheck, a typical reaction is, "Can I get that?" to which the answer is as simple as a URL or a USB key.

It takes neither geeks nor armies of people to create useful tools via programming. A woman recently created an extremely useful program to compile and redeem her supermarket coupons. Google was created by two graduate students (Sergey Brin and Larry Page). Just one guy (Pierre Omidyar) developed the original program for eBay. Often, from these initial programming ideas come very 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 are beginning to create and share good programs we can all use free. Successful companies train new programmers, who then generate their own ideas and tools, in addition to the tools their companies build. Smart businesses are already searching for young people who can create these new tools -- employees who are twenty-first-century literate.

All of which brings us to an important question: If programming (the ability to control machines) is indeed the key literacy of this century, how do we, as educators, make our students literate? This problem is a particularly thorny one, because most teachers, even many of our best math and science instructors, do not possess the necessary skills, even rudimentary ones. Most of the tools (and even the concept of programming) were developed long after these teachers were born or schooled.

Can we do it by bringing working programmers into the schools? Not likely. Most of the good ones are busy programming and have no desire to teach.

The answer is not yet clear, but we can either come up with creative solutions to this real problem, or, in their absence, the kids will, as they are doing with so many things, figure out ways to teach themselves. Imagine: Literacy without (official) teachers.

Our machines are expected, thirty years from now, to be a billion times more powerful than they are today. Literacy will belong to those who can master not words, or even multimedia, but a variety of powerful, expressive human-machine interactions. If you are from the old school, you may not enjoy hearing this, but I doubt there is anything anyone can do to stop it.

Thirty years from now, will the United States be more competitive with a population that can read English at a tenth-grade level or with a population excellent at making the complex machines of that era do their bidding? The two options may be mutually exclusive, and the right choice may determine our children's place in the world's intellectual hierarchy.

Marc Prensky is the author of Digital Game-Based Learning and Don't Bother Me, Mom, I'm Learning. He is also founder and CEO of Games2train, a game-based learning company.

Comments (123)Sign in or register to postSubscribe to comments via RSS

RHewlett's picture
Anonymous (not verified)

Hi Marc,
Great topic! I agree with you, it's true that the younger generation is growing up more accustomed to the use of technology. It is our duty as educational technologists to make sure they learn how to integrate seamlessly this knowledge with their education. In general, students separate games from learning, and with technology making learning more interactive, I believe we have found a way to teach our students that learning never really ends. The skills they are learning while playing games, or programming their ipod, are the same or similar skills they can use in the classroom, and in the real world. It's true not all teachers are techies. That's why educational technologists exist. I believe we not only can, but must take this job seriously, and help prepare our students to be effective citizens in our increasingly technologically dependent world.

J.P. Tuttle's picture
Anonymous (not verified)

Figured I might want to chime in here...

I'm a freshman CS major in college; I started programming by teaching myself BASIC (yes, I know...) from books in my elementary school library. I remember that we actually did do some LOGO back then.

Personally, I think that the whole "[end]-user programming" movement began to die down once Microsoft Office came on the scene. Computer classes that previously involved programming and all sorts of other pieces of software now pretty much involve Office; yes, students need to learn productivity software, but not at the expense of other pieces of software and general computer knowledge (how to figure out how to use software and/or how to teach oneself software). One of the major hurdles to getting students interested in programming these days is how complex it is. Back when I was a kid, I could make cheesy little 2D games. Now everything's 3D -- not just do you need to know programming, but 3D math/physics, 3D modelling, possibly some AI... it's way too complicated to just pick up on your own.

Due to this, simpler programming environments are created (Squeak's eToys, Scratch, etc). Graphical programming languages aren't completely bad; however, they should have some underlying text-based code behind them -- eToys has this. They're great for students to start learning with, but you don't want to give them the impression that *all* programming involves draging-and-dropping blocks into sequences of statements. Also, HTML is *not* programming. It's HyperText *MARKUP* Language. (Just had to get that out...)

Personally, I think Ruby is a quite nice programming language. One thing that no decent programming langauge these days seems to have is the immensely easy-to-use graphics and keyboard/joystick input (aka what you need to make games) that QBasic on our family's old 486 had.

Just my two cents.

-- J.P. Tuttle
Computer Science and Product Design & Innovation student at RPI

J.P. Tuttle's picture
Anonymous (not verified)

Logo's a good programming language to start with.

That reminds me... a couple of years in high school, I did a science project where I wrote a computer simulation of evolution. The first year, after all the judges had gone around and most of the people had seen the project, I actually started teaching one of the visitors Logo (nothing fancy); it was pretty cool.

Except for the fact that the particular version of MSWLogo I was using crashed if you clicked in the window... (I'm sure they've fixed the bug by now.)

-- J.P. Tuttle

Teresa Marques's picture
Anonymous (not verified)

I am a portuguese teacher (I work with 5th and 6th grades, math and sciences... since 1985) and I'm doing my thesis - master degree in educational technologies (University of Lisbon - Faculty of Psychology and Educational Science)...
When I've started my career, I 've worked with logo... Now my thesis is a kind of Action-research (kids from 5th and 6th grades) about learning the curriculum and much more using programming activities with Scratch... in a much free way (they program at school, at home... ) ... So... it was really nice for me to have found your paper in Edutopia... cause I share the central idea with you... and your words will add a strong contribution to support my will in pursuing this adventure. I strongly believe that we must begin to see education in a completely new way and not try to use technologies in a poor way, reproducing traditional paradigms...
(This is an excerpt of the comment I've written in your blog)

And, I learn with my students, they see that and they love to explain me things (when they explain, they learn... the teacher cannot be, should not be,always in control. When he is not, when he decides to listen... magic happens!)

Teresa Marques
Azeitao, Setubal, Portugal

Kim Garvey's picture
Anonymous (not verified)

My son is 12 and has taught himself how to program in C++ and Perl with those Programming for dummies books. He can do all the things in the books. Does anyone know where a 12 year old can take the next step in programming?

Camps? Classes for kids?

Lancaster, PA

Keaton B.'s picture
Anonymous (not verified)

Hi, I'm 14 years old and I can code in REALBasic (a really cool, simple, yet powerful language), Actionscript (Flash/Flex builder), JavaScript, HTML, CSS, PHP, and UNIX shell scripts. I couldn't agree more that more kids need to know this, you can be really creative, and yeah, it's fun.

Michael Knight's picture
Anonymous (not verified)

Iam not a 'techie". I teach high school visual arts and have been doing so for about 40 years, and sinces I have a 7 year old son and 2 girls under 13, I will be involved until I am 77 probably. However, my first involvement with the computer was in the 60's when I had to teach some math since that is one of my teaching endorsements, along with language Arts. We used Elliot Autocode onto punched tape, City and Guilds code , Algol, cobal and Nicol onto punched cards - that was programming!. Now I teach photography, which is tending towards Digital imaging, Compter Art and a course in Computer 3D animation which emerged from the art program. For this I use a programming language called Alice ( which is truly fantastic. It enables my students to learn quite complex animations to build up 3D animations and games. They are self starters in this and work to a high level with good motivation. Programs like this could be applied to most educational and other learning areas. I have read most of Marc's books and writings and also other writers in the same field. They all agree that education needs to change for most students. As Marc says " most kids start their real work when they end the school day!" I confess that I agree, the days of lecture style learning with little or no contact with reality are gone, the system has yet to realizs this!

AncientBear's picture
Anonymous (not verified)

Two evolutions of LOGO (itself seldom recognized as a powerful AI language based on LISP) that were designed as learning tools are StarLOGOT and NetLogo supervised by Uri Wilenski, a student of Seymour Papert, who generated LOGO.

Both have considerable support materials, including sample programs and a variety of books. I am surprised no one has mentioned these, especially Mitchel Resnick, author of the book Turtles, Termites, and Traffic Jams: Explorations In Massively Parallel Microworlds. StarLogoT runs on the Mac, while NetLOGO is Java-based, and runs on several platforms. Both are free, and supported by the NSF.

suJan shrestha's picture
Anonymous (not verified)

I wake up with the alarm, take shower, have my breakfast, get ready and go out. Catch a bus/train on time, go to work/study/training and come back home on time so that I can watch the football match on TV. Just like the way bus/train should run on its time, TV should be broadcasting as programmed. I can only function well if everything that I rely on is functioning as planned. May be I programmed myself for a day this way and next day I can probably change or adjust as well. I adapt my lifestyle to what I want or need and what is available for me. But I'm not a programmer because I do certain task on certain time or because I know how to setup an alarm on my mobile or because I know how to use my TV's remote control.

Programmers write, test, debug and maintain the source code of programs. They make things work and users just use them. I'm simply the user. If I can't use them, then maybe that program/device hasn't been designed with users in mind or maybe that system is not working as it was programmed or maybe I don't have a necessary understanding. The level of understanding needed to use the programs definitely depend upon the complexity of the program itself. User will not be able to use the program if he/she has no knowledge of what the program is about. Just like the way I can manage to play a football video game but can not play golf because even though I may have understanding of how this gaming device work but have no knowledge of the game itself. But the programmer need to be fully aware of the context and also know the programming language. Everybody can think and dream, but programmers need to create (code) and make them work as well.

Tools and technologies are rapidly evolving and simplifying our needs. However, new usability concerns and complexities will keep on arising as it is not easy to code the natural interaction process to the programs. But the time will probably come when our tools will be like our childhood: an invisible foundation that is quickly forgotten but always with us, and effortlessly used throughout our lives (Weiser M. 1994). Thanks to programmers, then we users will never even think ourselves as a programmers.

Alexander Repenning's picture
Anonymous (not verified)

Programming at home, summer camps, computer clubs, and after schools programs are a great first step but now it is time to get computer science into regular middle school curriculum. For that you need more than just a tool. You need a curriculum and teacher training. Don't use bait and hook tools that are fun for a couple of days but not powerful enough to make a real game. For the tool to work you need to be able to cover all these conditions:

* low threshold: visual language simple enough to make a working Frogger game in about 3 hours from scratch.

* high ceiling: powerful enough to enable even middle school students to implement sophisticated AI algorithms such as graph search to find shortest path in maze. Even for a simple game like Pacman: need to have grid structure with spreadsheet-like operations to implement collaborative diffusion or A* types of approaches.

* works for games and computational science applications

* ability to transition to traditional programming

here's a paper on how we are using AgentSheets to teach game design in middle schools and other places:

Repenning, A. and Ioannidou, Broadening Participation through Scalable Game Design, ACM Special Interest Group on Computer Science Education Conference, (SIGCSE 2008), (Portland, Oregon USA), ACM Press.

Prof. Alexander Repenning
University of Colorado

Sign in to comment. Not a member? Register.