Is coding the new literacy everyone should learn? Moving beyond yes or no

For their Hour of Code initiative this week, Code.org presents videos from both House Majority Leader Eric Cantor and President Barack Obama, saying that there’s “one thing Republicans and Democrats agree on:” everyone should learn how to code. US politicians are at historically divergent odds on every issue from culture to finance to defense, yet they converge on just a few things: Wall Street bailouts, strong intellectual property protections, and…that everyone should learn to program computers?  The fact that the Hour of Code initiative appears in that list of neoliberal interests should give us pause. This might be a good idea—but it also might be the sign of powerful forces at work. So, what’s behind this near-universal agreement that everyone should learn to code?

I think it’s because coding is framed as a new literacy. I mean, who supports illiteracy? Literacy is always good, and when we as individuals or nations don’t have enough of it, it’s obviously bad. The biggest pushback we see on this everyone-should-learn-code movement is from software engineers and professional programmers–who, understandably, don’t often think of what they do as literacy. But framing coding as a literacy makes it apolitical in Code.org’s promotional efforts.

Code.org didn’t invent the idea of programming as a literacy. Neither did Khan Academy or Codecademy or any of the online educational venues currently focused on teaching programming. They’ve made a big splash, but the idea has been around for almost as long as computers have been. The reasons behind the argument have shifted throughout the history of the idea of programming-for-everyone: from general education to political liberation to technological freedom to intellectual development. And now, from the looks of Code.org’s promotional materials, it’s about individual success in the economic and employment marketplace.

Thinking about coding as a new literacy takes it out of political debate, but it also means we need to think about it beyond yes/no terms. Literacy is not simply decoding letters and words. That’s why many Americans struggle with generating effective written communication and interpreting written texts, although they might know their ABCs. And because the job of teaching and learning literacy is so difficult–yet so important–we try not to leave it up to just one discipline or one institution. Schools, homes, libraries, English and biology classes all chip in to support literacy. In other words, if programming is a literacy, it doesn’t belong to computer science, as Code.org implies. Like reading and writing, it’s also going to take a lot more than an hour to learn. If programming is a literacy that everyone should learn, who should teach it? What, exactly, should people be learning, and why? And if everyone really did learn to code, what would that look like?

Before I go on, I want to say that I actually agree with Code.org and Eric Cantor and Barack Obama: I think everyone should learn something about programming computers because I agree that programming is a new kind of literacy. Just as textual literacy helps someone navigate a world full of texts, programming literacy can help us navigate a world full of code—which is the world we now live in. Learning to program computers could be about more than employment and STEM education and computer science. It could be about understanding and changing the ways that communication and information are currently structured and transmitted. And this, I think, should give both Obama and Cantor pause.

Computer programming for everyone

The first person on record arguing that programming is a widely applicable skill that should be taught to a broad group of people is Alan Perlis (thanks to Michael Mateas and Mark Guzdial for pointing this out). At a 1961 forum organized by MIT–with the wonderful title of Computers and the World of the Futurehe described an undergraduate course that looked a lot like the standard first year writing course:

the first student contact with the computer should be at the earliest time possible: in the student’s freshman year. This contact should be analytical and not purely descriptive, and each student during this first course should program and run or have run for him a large number of problems on the computer. […] This course should share with mathematics and English the responsibility of developing an operational literacy. […] In a liberal arts program the course could be delayed until the sophomore year, but certainly deserves inclusion in such a program because of the universal relevance of the computer to our times. (188)

Think of the state of computers in 1961: mainframes were only on a handful of college campuses. But computers were already important for defense, business and scientific research. Perlis’s emphasis on broad undergraduate education in programming suggested that future leaders of America should know something about these universally relevant machines.

Perlis’s vision was at least partially realized with the BASIC programming language, designed at Dartmouth University in the early 1960s by John Kemeny and Thomas Kurtz. Like Perlis, Kemeny and Kurtz saw the computer as universally relevant, and designed BASIC to be accessible to all undergraduates–not just those in engineering or the sciences. They made the language freely sharable, and it spread across college campuses in the 1960s. It’s impossible to overestimate the impact of the BASIC programming language on initiatives to teach computer programming beyond computer science. (For a good discussion of BASIC and its legacy, check out the recent book 10 PRINT CHR$(205.5+RND(1)); : GOTO 10)

This movement to teach all undergraduates programming in the 1960s moved off of college campuses in the 1970s. In his 1984 book Hackers, Steven Levy traces the epicenter of programming from the east coast to the west around this time, and the impetus to promote programming to the masses seems to have followed the same geographical trajectory. At that time, the push for everyone to learn programming was imbued with post-60s San Francisco area politics–hobbyists and hackers thrived, typified by The Homebrew Computer Club, Ted Nelson, and the People’s Computer Company. 

Meanwhile on a corporate campus in California (Xerox PARC), Alan Kay also dreamed of computers for people—specifically kids. His “KiddieComp,” later called the “Dynabook” in a 1977 publication with Adele Goldberg (pdf and context here) was the first real personal computer. At the time, nearly everyone thought it was crazy: a portable computer?? For kids?? But Kay persisted, and not only pushed the idea of what we now call a laptop, but also a flexible software environment that encouraged customization and design. Smalltalk, the first real object-oriented programming language, was also meant for kids and adults to be able to program the computer. (See Hiltzik’s Dealers of Lightning for more.) 

Seymour Papert, a student of the influential educator Jean Piaget designed the Logo programming language to “scaffold” (here we see Piaget’s influence) kids into learning complex logic, physics, and problem solving through programming. Logo had a heyday in elementary schools in the 1980s (such as mine), which was supported by Cold War defense funding and the anxiety of American competition in a global marketplace. These efforts petered out with decreased funding and poor support for teacher training. But that wasn’t Papert’s fault: many of us kids exposed to Logo loved it and learned a lot from it. If you haven’t read Papert’s 1980 book Mindstorms, about using programming as an “object to think with,” do it. right. now. Papert thought carefully about education, childhood development, and something that’s often missing from current educational policies: the joy of learning something, especially something difficult. 

And let’s not forget the hero and scourge of the open source (ahem, free software) community: Richard Stallman. His moral and political insistence on the free circulation of code and the rights for folks to program their own devices has been critical for open source programming languages. Did you know that as recently as the 1990s, you had to pay for the use and access to most programming languages and development environments? 

More recently, languages that freely circulate on the web like Processing, Ruby, Python and Javascript make programming way more accessible than it was in the 1990s. Figures like Why the Lucky Stiff (now disappeared) in the Ruby community made cases for everyone learning to program, along similar lines to Papert: it was fun! Plus, it’s really good for your brain.

We see the legacy of these people and projects in One Laptop Per Child, MIT’s Scratch, Carnegie Mellon’s Alice, UC-Berkeley’s Boxer and Hackety Hack.

And now comes Code.org. If the motivations for pushing programming for the masses in the past were intellectual development, liberation, and joy, now it’s: Hey! You can get a good job in computer science! And this is where I am sadface.

Most of these past initiatives come from outside of computer science, or at the very least, were focused on teaching code beyond computer science. (I’ve written more about these initiatives here.Other initiatives by computer scientists such as Mark GuzdialKen Perlin and Mary Flanagan and Jeannette Wing (pdf) are focused on systems thinking and the pleasures of difficulty and the fact that thinking the way that programming encourages means you can think better about politics, physics, philosophy and humanity. They have broad visions of what it could mean to program: not just making apps for the walled garden of Apple, not just promoting Facebook by using their API, not just sticking together code blocks to make a licensed game like Angry Birds. 

Computer Science != Programming

Code.org purports to teach code, but promotes computer science. Note the shift from computer science to programming and back on their About page:

Code.org is a non-profit dedicated to expanding participation in computer science education by making it available in more schools, and increasing participation by women and underrepresented students of color. Our vision is that every student in every school should have the opportunity to learn computer programming. We believe computer science should be part of the core curriculum in education, alongside other science, technology, engineering, and mathematics (STEM) courses, such as biology, physics, chemistry and algebra.

If their “vision is that every student in every school should have the opportunity to learn computer programming,” why does the rest of the mission statement and the site talk about computer science? Its rhetoric about STEM education, the wealth of jobs in software engineering, and the timing of the Hour of Code initiative with Computer Science Education Week all reflect the ways that Code.org—along with many other supporters and initiatives—conflate programming with computer science. We see this in other arguments for why people should learn to code, in particular Jeannette Wing’s argument for “computational thinking” (pdf). Computer scientist Peter Denning argues that thinking about computer science as just programming is too limiting–but it’s just as limiting to think of programming as just computer science. 

If programming is really a new literacy, it can’t be contained within computer science. We don’t restrict reading and writing to English departments, thankfully. If we thought of The Great Gatsby as the end goal of learning to write, we’d be thinking of writing in pretty narrow ways. Most of us use writing for more mundane, and ultimately more powerful things: grocery lists, blogs, diaries, workplace memos and reports, text messages to friends, fan fiction, and wills. The ability to read and write gives us access to lives and culture and, yes, employment. Do we have to be good writers— defined in particular, narrow ways—in order to get something from our literacy skills? No. Code is so important, so infrastructural to everything we say and do now, that leaving it to computer science is like leaving writing to English professors (like me).

Coding as the new literacy

On Code.org, ”literacy” is all over the place. We see the term “literacy” used in other arguments for teaching programming to everyone, such as Guido van Rossum’s 1999 Darpa grant application for Python and arguments from Marc Prensky and Douglas Rushkoff. On Code.org Eric Cantor says that “Becoming literate in code…is the only way for you to prepare for the future.” … (For more on the connections between literacy and programming, see my bibliography on the topic.)

There are some good conceptual reasons to make connections between literacy and programming: they’re both abstract symbolic systems for communication and information, for instance. But that’s not really why people make the connection between programming and literacy. 

At Code.org, programming is like literacy because no one disagrees with literacy. No one argues that kids should be illiterate because literacy is a moral good. When literacy rates appear to drop, or writing appears to deteriorate, we wring our hands and declare a crisis. This happens all the time, actually (for instance, in 1874, 19751983 and 2013; see Rebecca Moore Howard for a great bibliography of literacy crises). 

The history of how literacy accrued this moral weight is actually quite interesting. Literacy has deep connections with religion. Protestantism posits that people need direct access to God’s Word: they need to read the Bible. And Catholicism, not wanting to be left behind, also promoted literacy through church schools in the early modern era. Literacy campaigns ramped up in the 19th century as mass schooling was perceived to be a way to knit nations together and make people more moral. This was especially true in America and Canada, where promoting shared values amongst immigrants was thought to be essential to building the nation (see Graff, Robbins). As the industrial revolution raged on, knowledge work–often conducted through written words–was a way out of brutal factory work, but also a way of making factory workers behave. We can thank all of these historical factors for our current values on literacy. And, actually, literacy is important. In America, low literacy levels affect access to jobs and independence and correlate with high rates of incarceration.

So Code.org has great PR and they’re smart to make these connections to literacy in order to promote programming or computer science or software engineering. But it’s not by accident that this literacy-infused agenda has gotten uptake now, when we’re once again in an era of high unemployment and anxieties about America’s ability to compete in a global marketplace. The dream of total outsourcing is dead: communication and design present insurmountable barriers for sophisticated software. Only if a company can precisely specify their needs can they send their programming projects overseas. And if they can actually specify their needs to that level, they already have good programmers and designers on staff, so they might as well do the work themselves. Instead, Facebook, Microsoft and other tech companies import many of their programmers from overseas. Whether or not they’re American, they have to pay them decent wages. (So, some of the fears of current software engineers and programmers about the everyone-should-learn-to-code initiatives might be well-founded: their wages could be driven down if what they do is no longer special. Still, the distance between a hour of coding and good software engineering is great.)

Relying on imported software engineers is one thing for Facebook, but it’s another thing entirely for the NSA or other government agencies that rely on programmers. A paltry supply of good American programmers is a security risk. Add that to the perceived connection between literacy, programming and economic development, and we can see why politicians might universally support programming for the masses.

What if everyone really did learn to program?

But here’s something else we know from historical and ethnographic studies of literacy: once someone is literate, their literacy can be used in ways they want. They might be marked by the ideologies and values with which they learned to read and write. But they can also read and write in unauthorized ways. They can read banned books, for instance. But more dangerous than reading is writing. They can write seditious materials. They can encourage revolutions.

So here’s where I get hopeful again about Code.org’s campaign, despite the fact that I disagree with their conflation of programming and computer science and their confusion between good job prospects and literacy.  I hope Code.org succeeds in introducing millions of people to programming, especially women and racially or ethically underrepresented groups.

Lots of people won’t go anywhere with the code they learn. A few will make Facebook apps or the next Angry Birds. That’s fine. But some will learn a bit more about code and think about what it means that our information infrastructure is built on it. They might think more about issues in intellectual property and politics concerning digital rights and expression. They might consider what ways that software could improve civic infrastructure, as Code for America encourages. Because I think all of these things are important, I think that women and underrepresented groups should be participating in these conversations as well as these structuring and designing these technologies. Learning something about programming will help them do that.

And just because Code.org and Microsoft and President Obama might like a more computationally-skilled skilled workforce and might not even mind if they happen to be more critically engaged with political debates about technology, it doesn’t mean that it will stop there. Angry Birds was made with code–but so was Bitcoin, which destabilizes our assumptions about central governments and currency control. Network exchange protocols that enabled Napster, Grokster, and the Pirate Bay are also made in code. Edward Snowden knows a thing or two about code.

So, what if everyone really did learn to program? We might have widespread unemployment among lawyers, because a lot of law might be enacted through algorithms in code. We might fundamentally restructure representative government—not just by allowing folks to tweet questions at the President in press conferences, or even have new civic apps about snow removal. But wide-ranging structural changes that we can’t even imagine. These visions have been the domain of science writers such as William Gibson, Neal Stephenson and Cory Doctorow. But they could be our future, too.

So right now, President Obama and U.S. Representive Eric Cantor actually agree on something: everyone should learn to program computers. But if they actually thought about where that might lead, they might agree on something else: programming as a mass literacy is a pretty dangerous scenario for the status quo. 

If you liked this, you might like my article on Understanding Computer Programming as a Literacy or my 20min Vimeo on the Ideologies of the New Mass Literacy of Programming (transcript here).

Print Friendly
This entry was posted in Uncategorized. Bookmark the permalink.

6 Responses to Is coding the new literacy everyone should learn? Moving beyond yes or no

  1. Jamie Underwood says:

    I want to learn. Will be helpful in for me in so many ways.

  2. Hadi Partovi says:

    Hi, I’m the founder of Code.org. FYI we intentionally conflate “code” and “computer science”, not to trick people, but because for most people the difference is irrelevant. Our organizational brand name is “code.org”, because that was a short URL, but our polls show that people feel more comfortable with the word “computer science”, and so we use both, almost interchangeably. Again, not because we want to trick people from one to the other, but because when you know nothing about programming or CS, they are practically equal and indistinguishable.

    Also, our organizational goal really has nothing to do with trying to fill jobs. We put infographics about jobs on our stats page, because that resonates with politicians and potential donors. It’s a clear benefit from getting more students into the field. But our clearly stated goal is to bring computer science into every school, and we want every child to have some basic exposure and the opportunity to learn more. We’d fill all the programming jobs even if we had computer science in the top 50% of schools, or if we just got upper class kids with wealthy parents to send all their kids to computer programming camps over the summer. But instead we are signing partnerships with NYC schools and Chicago Public Schools, the largest and 3rd largest districts in the country, with lots of underprivileged families. Why? Because we believe computer science is critical to all knowledge-careers in the 21st century – not just for software engineering, but careers in medicine, in law, etc.

    Also, if you look at the stats, fyi 2/3 of all programming jobs are *outside* the tech sector. So even our donors (who most clearly benefit from an increase in software engineers) are helping Code.org beyond the pure benefit of self-gain. In my personal opinion, when software companies argue for high-skilled immigration, it’s 80% because it benefits their shareholders (and 20% because it also helps grow the US economy). But when they invest in technology education in K-12 inner-city schools, that’s 90% pure philanthropy, and at most a 10% self-interested investment in improving the hiring environment 10 years from now. And even that 10% isn’t insidious or tricky. These literally are among the best-paying jobs in the world. It’s patently un-American that the vast majority of US schools don’t even offer a basic introductory course to expose students to the field that could help them into one of the best-paying careers in the world.

    That all said, Code.org’s goal isn’t about the jobs. It’s about giving every student basic foundational knowledge that they will need if they become doctors, lawyers, or even the President of the United States. In 2050 all these people should know how the internet and TCP/IP works, just like they know how electricity works. Should know as much about the inner workings of a software virus as they know about a biological virus. Should know what an algorithm is, or what makes a web site scalable, etc. Even if they never ever want to get a job as a software programmer.

  3. Annette Vee says:

    First, let me say thank you for taking the time to read and consider my thoughts on your organization and work. Second, I want to reiterate that we agree on the most fundamental objective of Code.org: to get more kids across a broader spectrum of backgrounds exposed to the basic technologies of communication in the 21st century. Thank you for your work, your energy, and your initiative.

    In your response, you suggest that Code.org is responding to the market: the organization conflates computer science and programming because that’s what most people think anyway and displays “infographics about jobs on [its] stats page, because that resonates with politicians and potential donors.” Clearly, this is pragmatic for an organization built with the energy and resources of Silicon Valley capital and political good will.

    But this market-driven strategy is a symptom of a larger problem: capital and politics setting educational agendas. My complaint here isn’t about Code.org, but rather the climate that necessitates Code.org’s intervention. Why are US public schools in such dire straits that they require help from corporations and foundations funded by them? What does it mean that we are outsourcing education to people who have made their fortunes in boom markets and have little pedagogical experience? I believe that Code.org and other organizations mean well through charity work (as you say, 90%). But this work also forestalls difficult questions our society needs to answer about the means and ends of public education. This is not the fault of Code.org, of course, so I’ll move on.

    More to the point: Code.org’s pragmatism has more immediate implications for the domain in which Code.org operates. Why is Code.org reproducing a misunderstanding about computer science that contributes to the problem it purports to solve? Computer science, as currently constructed, appears to shut some folks out—folks that Code.org would like to let in. As Nathan Ensmenger has argued, the rhetorical framing of who programmers are matters for who becomes programmers. Women were central to the early in the history of programming, but as programmers sought to professionalize, they “elevated” their work by defining it as masculine. Company advertisements for math-inclined, introverted men dominated, and—big surprise!—the hiring of math-inclined, introverted men increased. People who didn’t fit into that mold but were good programmers anyway were thought to be flukes—as Reginald Braythwayt says happened to his mother.

    Code.org is actively trying to frame computer science / programming as a welcoming domain for people of color and women, which is great. But because the history of programming’s professionalization is tied up with its exclusion of those groups, the conflation of computer science and programming actually works against Code.org’s mission. Programming-as-literacy initiatives such as those by Kemeny and Kay and Papert have been more careful to make this distinction between the profession and the practice of programming. And that’s why I’m disappointed by this rhetoric from Code.org.

    I think Code.org is doing good work. But I think the organization should take more seriously its conflation of computer science and programming, its place in the history of similar initiatives, and its draw on the moral weight of literacy. These rhetorical tactics have implications beyond market-driven pragmatism.

  4. Hadi Partovi says:

    Two brief comments:

    - I agree but also disagree with the general concern about “why outsource X from government to other organizations?” The part I agree with is that our schools are in dire straits, and they should fix themselves. And outsourcing that has risks. But I think it’s a very American concept for individuals to get involved with fixing one’s government organizations, whether at a local or a national level. That has been my personal mission, and I’ll take donations from anybody who supports it. And please check the Code.org education advisory council. We have many of the best educators in CS involved for pedagogy advice, specifically because we know what we don’t know. My first job in college was to teach CS, but at the college level, and I’m far far from the expertise of these advisors and other experienced teachers and experts who we rely on deeply not just for strategy but also for curriculum.

    - on your second point, to put it briefly, I believe we can make programming cool. In fact, I believe we’ve already done that in many many communities and schools. If programming or coding remained scary and unapproachable I’d agree with you – and I’m taking an intentional approach and bet that we can succeed where others have failed on this front. Jury is still out, but with 20mm having done an Hour of Code, 1 in 4 US students, 51% girls, and extremely positive ratings in exit surveys, I’d say the bet has been well-placed so far, even if history would suggest it is risky.

  5. Annette Vee says:

    Thanks again for the response.

    I like the idea of thinking about “individuals get[ting] involved with fixing one’s government organizations” as a “a very American concept.” And I think education is important enough that it should benefit from all sorts of people and perspectives, including Code.org and other non-governmental organizations. I also think it’s great that you’re involving experienced CS educators–as well as educators who have specifically thought about getting more people involved in CS, like Ed Lazowska, Maria Klawe and Jane Margolis. Your post today on getting more women interested in CS also demonstrates Code.org’s mission to break the mold of CS.

    I believe you *can* make programming cool, and you’re doing that! Indeed, it’s impressive that you’ve gotten so many people to participate. But even here, you’re conflating programming with CS, which limits it and heaps on historical baggage. I’d like to see Code.org be more about code. After all, some of the most innovative and successful programmers–like Mark Zuckerberg or Minecraft-creator, Notch–don’t have CS degrees.

  6. Very interesting discussion here and not one that is limited to the US by any means! Here in the UK I embraced the hour of code with my two primaries, and asked the staff to get on board as well… Most did, and the children certainly enjoyed the different activities!

    What is interesting about all of this from my point of view is the development of a new curriculum subject, one which has recently been put to the forefront of UK education, in spite so many primary teachers not having any idea how to do it, or what it means. Considering the motivations, the economic and cultural consequences is a useful thing to do – and one that we, as teachers, don’t very often get the chance to debate. Thanks!