Coding Literacy: How Computer Programming Is Changing Writing
By Annette Vee
()
About this ebook
The message from educators, the tech community, and even politicians is clear: everyone should learn to code. To emphasize the universality and importance of computer programming, promoters of coding for everyone often invoke the concept of “literacy,” drawing parallels between reading and writing code and reading and writing text. In this book, Annette Vee examines the coding-as-literacy analogy and argues that it can be an apt rhetorical frame. The theoretical tools of literacy help us understand programming beyond a technical level, and in its historical, social, and conceptual contexts. Viewing programming from the perspective of literacy and literacy from the perspective of programming, she argues, shifts our understandings of both. Computer programming becomes part of an array of communication skills important in everyday life, and literacy, augmented by programming, becomes more capacious.
Vee examines the ways that programming is linked with literacy in coding literacy campaigns, considering the ideologies that accompany this coupling, and she looks at how both writing and programming encode and distribute information. She explores historical parallels between writing and programming, using the evolution of mass textual literacy to shed light on the trajectory of code from military and government infrastructure to large-scale businesses to personal use. Writing and coding were institutionalized, domesticated, and then established as a basis for literacy. Just as societies demonstrated a “literate mentality” regardless of the literate status of individuals, Vee argues, a “computational mentality” is now emerging even though coding is still a specialized skill.
Related to Coding Literacy
Related ebooks
Big Data, Big Design: Why Designers Should Care about Artificial Intelligence Rating: 0 out of 5 stars0 ratingsComposing Place: Digital Rhetorics for a Mobile World Rating: 0 out of 5 stars0 ratingsCross-Media Communications: An Introduction to the Art of Creating Integrated Media Experiences Rating: 0 out of 5 stars0 ratingsThe Company We Keep: Occupational Community in the High-Tech Network Society Rating: 0 out of 5 stars0 ratingsReverse Engineering Social Media: Software, Culture, and Political Economy in New Media Capitalism Rating: 3 out of 5 stars3/5Two Virtuals, The: New Media and Composition Rating: 0 out of 5 stars0 ratingsDesign Wise: A Guide for Evaluating the Interface Design of Information Resources Rating: 0 out of 5 stars0 ratingsEnvisioning the Survey Interview of the Future Rating: 0 out of 5 stars0 ratings"You Are Not Expected to Understand This": How 26 Lines of Code Changed the World Rating: 0 out of 5 stars0 ratingsThe New Division of Labor: How Computers Are Creating the Next Job Market Rating: 4 out of 5 stars4/5Hamlet on the Holodeck Rating: 3 out of 5 stars3/5All Edge: Inside the New Workplace Networks Rating: 0 out of 5 stars0 ratingsReprogrammable Rhetoric: Critical Making Theories and Methods in Rhetoric and Composition Rating: 0 out of 5 stars0 ratingsThinking Globally, Composing Locally: Rethinking Online Writing in the Age of the Global Internet Rating: 5 out of 5 stars5/5Networked Humanities: Within and Without the University Rating: 0 out of 5 stars0 ratingsCoding Freedom: The Ethics and Aesthetics of Hacking Rating: 4 out of 5 stars4/5Discord And Direction: The Postmodern Writing Program Administrator Rating: 0 out of 5 stars0 ratingsArtificial Intelligence and the Apocalyptic Imagination: Artificial Agency and Human Hope Rating: 0 out of 5 stars0 ratingsNetwork Aesthetics Rating: 4 out of 5 stars4/5Digital Mythologies: The Hidden Complexities of the Internet Rating: 4 out of 5 stars4/5Human Communication Technology Rating: 5 out of 5 stars5/5The Digital Frontier: Infrastructures of Control on the Global Web Rating: 0 out of 5 stars0 ratingsTalking Bits Rating: 0 out of 5 stars0 ratingsThe Cultural Life of Machine Learning: An Incursion into Critical AI Studies Rating: 0 out of 5 stars0 ratingsCommunity at Risk: Biodefense and the Collective Search for Security Rating: 0 out of 5 stars0 ratingsThe Problem with Education Technology (Hint: It's Not the Technology) Rating: 0 out of 5 stars0 ratingsOverview and Autobiographical Essays Rating: 0 out of 5 stars0 ratingsDecoding Digital Culture with Science Fiction: Hyper-Modernism, Hyperreality, and Posthumanism Rating: 0 out of 5 stars0 ratingsChasing Innovation: Making Entrepreneurial Citizens in Modern India Rating: 0 out of 5 stars0 ratingsRhetorical Machines: Writing, Code, and Computational Ethics Rating: 0 out of 5 stars0 ratings
Programming For You
Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5Grokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5Excel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5Excel 101: A Beginner's & Intermediate's Guide for Mastering the Quintessence of Microsoft Excel (2010-2019 & 365) in no time! Rating: 0 out of 5 stars0 ratingsC Programming For Beginners: The Simple Guide to Learning C Programming Language Fast! Rating: 5 out of 5 stars5/5SQL All-in-One For Dummies Rating: 3 out of 5 stars3/5Python Programming : How to Code Python Fast In Just 24 Hours With 7 Simple Steps Rating: 4 out of 5 stars4/5Linux: Learn in 24 Hours Rating: 5 out of 5 stars5/5Pyqt6 101: A Beginner’s Guide to PyQt6 Rating: 0 out of 5 stars0 ratingsC Programming for Beginners: Your Guide to Easily Learn C Programming In 7 Days Rating: 4 out of 5 stars4/5The CSS Guide: The Complete Guide to Modern CSS Rating: 5 out of 5 stars5/5Microsoft Azure For Dummies Rating: 0 out of 5 stars0 ratingsBeginning Programming with C++ For Dummies Rating: 4 out of 5 stars4/5Learn PowerShell in a Month of Lunches, Fourth Edition: Covers Windows, Linux, and macOS Rating: 5 out of 5 stars5/5Java For Dummies Quick Reference Rating: 4 out of 5 stars4/5iPhone For Dummies Rating: 0 out of 5 stars0 ratingsC All-in-One Desk Reference For Dummies Rating: 5 out of 5 stars5/5Spies, Lies, and Algorithms: The History and Future of American Intelligence Rating: 4 out of 5 stars4/5
Reviews for Coding Literacy
0 ratings0 reviews
Book preview
Coding Literacy - Annette Vee
Software Studies
Matthew Fuller, Lev Manovich, and Noah Wardrip-Fruin, editors
Expressive Processing: Digital Fictions, Computer Games, and Software Studies, Noah Wardrip-Fruin, 2009
Code/Space: Software and Everyday Life, Rob Kitchin and Martin Dodge, 2011
Programmed Visions: Software and Memory, Wendy Hui Kyong Chun, 2011
Speaking Code: Coding as Aesthetic and Political Expression, Geoff Cox and Alex McClean, 2012
10 PRINT CHR$(205.5+RND(1));: GOTO 10, Nick Montfort, Patsy Baudoin, John Bell, Ian Bogost, Jeremy Douglass, Mark Marino, Michael Mateas, Casey Reas, Mark Sample, and Noah Vawter, 2012
The Imaginary App, Paul D. Miller and Svitlana Matviyenko, 2014
The Stack: On Software and Sovereignty, Benjamin H. Bratton, 2015
Coding Literacy: How Computer Programming Is Changing Writing, Annette Vee, 2017
Coding Literacy
How Computer Programming Is Changing Writing
Annette Vee
The MIT Press
Cambridge, Massachusetts
London, England
© 2017 Massachusetts Institute of Technology
All rights reserved. No part of this book may be reproduced in any form by any electronic or mechanical means (including photocopying, recording, or information storage and retrieval) without permission in writing from the publisher.
This book was set in ITC Stone Serif Std by Toppan Best-set Premedia Limited. Printed and bound in the United States of America.
Library of Congress Cataloging-in-Publication Data is available.
ISBN: 978-0-262-03624-5
eISBN 9780262340229
ePub Version 1.0
d_r0
Table of Contents
Series page
Title page
Copyright page
Series Foreword
Acknowledgments
Introduction: Computer Programming as Literacy
1 Coding for Everyone and the Legacy of Mass Literacy
2 Sociomaterialities of Programming and Writing
3 Material Infrastructures of Writing and Programming
4 Literacy for Everyday Life
Conclusion: Promoting Coding Literacy—Lessons from Reading and Writing
Bibliography
Index
List of Illustrations
Figure 1 According to this 2015 New Yorker cartoon, people who can code are more valuable than others. Mike Twohy, New Yorker, June 25, 2015. Reprinted with permission from Condé Nast.
Figure 2 In light of a controversial adjustment in Facebook’s algorithms for research, popular comic xkcd questions whether Facebook’s algorithms were ever ethical. Randall Munroe, Research Ethics,
xkcd [comic], July 4, 2014, http://xkcd.com/1390/.
Figure 1.1 The cover of the first People’s Computer Company Newsletter in 1972 declared computers to be for the people. The People’s Computer Company Newsletter.
Source ID: M1141_B9_1:1. Collection: People’s Computer Company. Courtesy of Department of Special Collections and University Archives, Stanford University Libraries.
Figure 1.2 The People’s Computer Company supported BASIC as an accessible programming language. The People’s Computer Company Newsletter.
Source ID: M1141_B9_1:1. Collection: People’s Computer Company. Courtesy of Department of Special Collections and University Archives, Stanford University Libraries.
Figure 1.3 Ted Nelson’s 1974 Computer Lib/Dream Machines insisted that people take power back from the technoids. Reprinted with permission from Ted Nelson (author and copyright holder) and Alison Langmead (book owner). Scanned image courtesy of University of Pittsburgh Libraries.
Figure 1.4 Using data from the U.S. Bureau of Labor Statistics, Code.org emphasizes that computer programming skills are highly employable. Code.org Stats: What’s Wrong with This Picture?
Code.org, n.d., accessed June 23, 2015, https://code.org/stats/. Source data are from the U.S. Bureau of Labor Statistics and linked from the infographic. Reprinted with permission from Code.org.
Figure 3.1 The SAGE system linked radar towers and fed the information back to a SAGE Direction Center, where it would be processed by an AN/FSQ-7 computer. SAGE simulation by Chester Beals, 2009. Reprinted with permission of MIT Lincoln Laboratory, Lexington, Massachusetts.
Figure 3.2 If an enemy aircraft was detected, the SAGE Direction Center would designate air bases to launch counterattacks and monitor the aircraft’s position. If the aircraft got through the initial counterattacks, the Direction Center would trigger Nike surface to air missiles to launch. SAGE simulation by Chester Beals, 2009. Reprinted with permission of MIT Lincoln Laboratory, Lexington, Massachusetts.
Figure 3.3 This 1985 advertisement portrays the Commodore 64 as a family computer with multiple uses. Advertisement from Archive.org. Reprinted courtesy of Cloanto Corporation, rights holder for Commodore Computer.
Figure 4.1 In this 1955 New Yorker cartoon, a computer coaches a baseball team, showing that computers were thinking as well as calculating machines. Joseph Mirachi, New Yorker, June 18, 1955. Reprinted with permission from Condé Nast.
Series Foreword
Software is deeply woven into contemporary life—economically, culturally, creatively, politically—in manners both obvious and nearly invisible. Yet while much is written about how software is used, and the activities that it supports and shapes, thinking about software itself has remained largely technical for much of its history. Increasingly, however, artists, scientists, engineers, hackers, designers, and scholars in the humanities and social sciences are finding that for the questions they face, and the things they need to build, an expanded understanding of software is necessary. For such understanding they can call upon a strand of texts in the history of computing and new media, they can take part in the rich implicit culture of software, and they also can take part in the development of an emerging, fundamentally transdisciplinary, computational literacy. These provide the foundation for Software Studies.
Software Studies uses and develops cultural, theoretical, and practice-oriented approaches to make critical, historical, and experimental accounts of (and interventions via) the objects and processes of software. The field engages and contributes to the research of computer scientists, the work of software designers and engineers, and the creations of software artists. It tracks how software is substantially integrated into the processes of contemporary culture and society, reformulating processes, ideas, institutions, and cultural objects around their closeness to algorithmic and formal description and action. Software Studies proposes histories of computational cultures and works with the intellectual resources of computing to develop reflexive thinking about its entanglements and possibilities. It does this both in the scholarly modes of the humanities and social sciences and in the software creation/research modes of computer science, the arts, and design.
The Software Studies book series, published by the MIT Press, aims to publish the best new work in a critical and experimental field that is at once culturally and technically literate, reflecting the reality of today’s software culture.
Acknowledgments
Like all monographs, this book wasn’t a solo project. I’ve been helped by many people and material grants during the decade in which it has taken shape. The book came out of my dissertation, which was guided expertly by Deborah Brandt at the University of Wisconsin–Madison. Through her care, humor, gentle but spot-on critique, and infallible support, Deb has been a model researcher, teacher, writer, and person to me (among many others). When considering any professional decision, I often ask myself: What would Deb do?
And then I know the way. I learned about 90% of what I know about teaching writing from the University of Wisconsin–Madison Writing Center and Brad Hughes, who brings intellectual rigor and careful research to administration and teaching and has a superhuman ability to juggle a hundred commitments and thousands of students while making everyone around him feel smart and capable. David Fleming helped to show me I was in the right field and doing good work. Kurt Squire and Greg Downey introduced me to sources beyond my own field and treated me like a colleague even when I was a grad student. Mike Bernard-Donals bore with me, an outsider, in my first graduate class and saw me all the way through my dissertation defense. His helpful skepticism strengthened my work; when he said it was ready, I knew that it finally was.
My fellow students at Wisconsin were also essential to the substance and style of this work, in particular, Kate Vieira, Tim Laquintano, Scot Barnett, Rik Hunter, and Adam Koehler. Tim, Rik, Scot, and I worked together to learn digital literacy scholarship and technologies. Kate has been a great friend and guiding star for me since 2004; without her, I might not have entered the field of composition or finished my dissertation, and I certainly would have had a duller and dimmer graduate school experience. Corey Mead, Alice Robison (Daer), Stephanie Kerschbaum, Mira Shimabukuro, Eric Pritchard, Maria Bibbs, Chrissy Stephenson, and Mike Shapiro were all excellent fellow-travelers. Kate and Tim read countless early drafts of this book and my other work. They are everywhere in it. Mike Shapiro’s tough love on a full draft of the book helped me clarify ideas and language. I wish that all grad students had a peer group such as I enjoyed at Wisconsin.
I’ve been lucky to have brilliant and generous colleagues at the University of Pittsburgh as well. Ryan McDermott helped me find additional sources and vet my claims about medieval literacy. Steve Carr offered useful comments on an article version of this book. Jean Ferguson Carr has been a generous, encouraging, and savvy mentor to me, clearing the way for the book to get done. Johnny Twyning and Don Bialostosky have been supportive chairs of my department and have gone over and above to boost me up. Alison Langmead has been a stunning collaborator and I’ve learned at least as much from her as our students have. Pitt graduate students are the best: I’ve been lucky to run seminars brimming with their creative ideas. I owe particular thanks to Kerry Banazek, who is not only a strong and brilliant human, and willing to take a chance on me as an advisor, but who also helped me to proofread this book. Lauren Rae Hall and Lauren Campbell, I’ve cited you both here, but I can’t cite everything I’ve learned from you. I’ve benefitted from research leave at Pitt, and even more importantly, maternity leave for the birth of my two children. A heartfelt thanks to the administrators and other women who paved the way for me to enjoy the privilege of being with my babies while not sidelining my research or career, especially Jean Ferguson Carr, Phil Smith, and Jim Knapp. I wish that all parents, especially mothers, had this right.
Composition and rhetoric, what I consider my home field, is a lovely place to be. It includes people like Jim Brown, who has been a good friend and collaborator; Doug Eyman, who has been a guide in digital rhetoric and publishing and a helpful, humorous mentor; Cheryl Ball, who does it all; Gail Hawisher and Cindy Selfe, who paved the way; Brian Ballantine, Alanna Frost, and Suzanne Blum Malley, who make conferences way more fun; Christina Haas and Elizabeth Losh, who have both offered smart and critical comments on my work; Alexandria Lockett, who brilliantly calls it like it is and inspires me to do better; Chris Lindgren, who has put ideas about coding and literacy into practice and put me in contact with great people … and many more besides. Thanks for making comp/rhet feel like home.
Thanks also to the people I’ve met outside my little academic corner, who helped to shape this work by being interviewed, by hiring me, or just by being awesome. Kenn Hoekstra took a chance on me at Raven Software and taught me enough IT to get me (re)started along a path I’d abandoned. Greg Barr also kindly held my hand through rough learning stages. Roxanne Prichard was a fierce companion and helped ground me and employ me when I needed it. Ruth Benca always trusted me to do my work in her lab and showed me how to be a strong administrator and advocate for people. My brief collaboration with Libbey White and Why the Lucky Stiff made me feel my work was important. Digital media, my home away from home, includes wonderful people like Matthew Kirschenbaum, Jentery Sayers, Wendy Hui Kyong Chun, and Stephen Ramsay, who have all been kind promoters of my work. Mike Silbersack, quoted here, was one of a dozen programmers who generously gave their time to me in interviews as this project took shape. I thank all of them for their time and ideas, which are diffusely refracted here.
I’m grateful to Doug Sery and the Software Studies Series editors at MIT Press for placing this book where I had always hoped it would be. The anonymous reviewers helpfully gave me points to sharpen and cut. Susan Buckley and Katherine Almeida have shepherded the book with keen attention and alacrity, and Richard Evans expertly prepared the index, gently teaching me about the process. An earlier version of parts of this book, scattered throughout, was published in Literacy in Composition Studies, to whom I am grateful for their generous licensing and dissemination of my work. A summary version of my argument on programming as a literacy is published in Programming as Literacy,
in The Routledge Companion to Media Studies and Digital Humanities, ed. Jentery Sayers (forthcoming 2017). The Richard D. and Mary Jane Edwards Endowed Publication Fund at University of Pittsburgh sponsored the cost of figure reprints and indexing. Summer funding and research leave from Pitt has also helped me to complete this book.
Last, but foremost, I want to thank my family, including my many supportive parents who helped to fund my education—Joyce, Steve, Joy, Jeff, and Bill—and who patiently waited for me to find a career. I’m sure they’re as surprised as I am, but they were kind enough to keep quiet about it. I am proud to add my small stone to the pile of my foremothers’ educational achievements, the ones that my grandmother and mother always told me about, the ones I will tell my children about. Thanks to Eleanor and Willoughby, who delayed this book’s appearance, but made it worthwhile. And finally, Nathan, whose companionship inspired the book in the first place, and who has stuck around to see it finished.
Introduction: Computer Programming as Literacy
The coding literacy movement is in full swing. Websites such as Codecademy.org and Code.org have made teaching computer programming to everyone their central mission. Code.org not only has the backing of Facebook founder Mark Zuckerberg and Microsoft founder Bill Gates; it also convinced then U.S. Representative Eric Cantor and U.S. President Barack Obama to record video spots promoting a code for everyone
agenda. (President Obama was called the Coder in Chief
while promoting Code.org’s Hour of Code initiative.) New York Mayor Bill de Blasio argued that Too many students are learning to type when they should be learning to code.
¹ The merits of everyone
learning to code are debated not only on Reddit.com’s tech-focused forums but also on National Public Radio and in Mother Jones and the New York Times.² Google has given $50 million to the Made with Code initiative for the purpose of encouraging young women to code.³ MIT’s Scratch community and language, codeSpark’s game The Foos, and the programmable robots Dot and Dash aim to teach kids to code.⁴ Coding has even made it into the kindergarten curriculum before kids can read.⁵ Raspberry Pi, LilyPad Arduinos, and other physical computing tools bring coding to wearable technologies and other physical applications.⁶ To emphasize the universality and importance of computer programming, promotional materials for coding often invoke the concept of literacy and draw parallels that associate reading and writing code with reading and writing text. They point to the fact that although the technology of code is now everywhere, the ability to read and write it is not (figure 1).
Figure 1 According to this 2015 New Yorker cartoon, people who can code are more valuable than others. Mike Twohy, New Yorker, June 25, 2015. Reprinted with permission from Condé Nast.
What does it mean to call computer programming a literacy? Since the late nineteenth century, reading has been promoted as a moral good under the term literacy. This heritage of moral goodness persists in public debates about reading and writing, which is especially apparent in the periodic waves of moral panic observed in articles about education and illiteracy.⁷ Typified by an infamous 1975 article in Newsweek, Why Johnny Can’t Write,
these fears of failing schools and of generations of illiterates signaling the downfall of society have been around since at least the late nineteenth century. However, literacy research indicates that literacy rates in the United States aren’t falling; rather, what we consider literacy is changing.⁸ There is little contemporary or historical consensus on what literacy is or what kinds of skills one needs to be literate.⁹ Thus, as a morally good but undefined concept, literacy can serve as a cipher for the kind of knowledge a society values. The various types of skills that come to be popularly named literacies reflect the perception of necessary and good skills for a society: health literacy, financial literacy, cultural literacy, visual literacy, technological literacy, and so forth.
However, what’s called a literacy reflects more than just popular perception. Because of literacy’s heritage of moral goodness, calling something a literacy raises the stakes for acquiring that knowledge. To lack the knowledge of something popularly considered literacy is to be illiterate. Beyond the practical disadvantages associated with missing a critical kind of knowledge, one can be penalized for the immorality of illiteracy—for dragging society down. People with poor financial literacy might, in addition to not enjoying ready access to monetary resources, fail credit checks and thus be denied employment because of their stigmatized status. Because literacy is deemed to be important to the status and financial health of a nation, to be illiterate is to be a less productive citizen. Thus, to call programming—or anything else—a literacy is to draw attention and resources to it by mobilizing the long history of reading and writing’s popular association with moral goodness and economic success, and thus connecting programming to the health of a nation and its citizens.
But there is something more than pragmatism in the rhetorical connection of literacy to computer programming. First, the idea that programming is connected to literacy is more than a fad. Educators and programming professionals have made the connection between writing and programming since at least 1961—almost as soon as computers became commercially and educationally viable. Computer programming also appears to have parallels to writing that go beyond its rhetorical framing: it is a socially situated, symbolic system that enables new kinds of expressions as well as the scaling up of preexisting forms of communication. Like writing, programming has become a fundamental tool and method to organize information. Throughout much of the world, computer code is infrastructural: layered over and under the technology of writing, computer code now structures much of our contemporary communications, including word processing, e-mail, the World Wide Web, social networking, digital video production, and mobile phone technology. Our employment, health records, and citizenship status, once recorded solely in text, are now cataloged in computer databases. The ubiquity of computation means that programming is emerging from the exclusive domain of computer science and penetrating professions such as journalism, biology, design—and, through library databases and the digital humanities, even the study of literature and history. Because every form of digital communication is ultimately built on a platform of computer code, programming appears to be more fundamental than other digital skills dubbed literacies, especially those associated only with computer usage. Other literacies and activities build on programming, and so we might think of programming as a platform literacy. Programming is a literacy we can build other activities and knowledge on, as we have done with reading and writing in human languages. Because of its affordances for information creation, organization, and dissemination, the practice of programming bears other significant similarities to reading and writing. Programming and writing are both socially inflected by the contexts in which they are learned and circulated and are materially shaped by the technologies that support and distribute them. Literacy is a weighty term, to be sure. But in the case of programming, it also appears to be apt.
In this book, I treat these persistent links between computer programming and literacy as an invitation to consider questions about the nature of both. How can we understand the ways that computer programming is changing our practices and means of communication? And how do we account for new modes and technologies in literacy? Pursuing these questions, as I do in the chapters that follow, shifts our understandings of both programming and literacy. Looking at programming from the perspective of literacy and literacy from the perspective of programming, I make two central arguments: (1) programming shows us what literacy looks like in a moment of profound change; (2) the history and practices of reading and writing human languages can provide useful comparative contexts for contemporary programming. I intend the title of this book—Coding Literacy—to reflect both of these central arguments. Coding (noun) is a type of literacy, and programming is re-coding (verb) literacy.¹⁰ That is, computer programming is augmenting an already diverse array of communication skills important in everyday life, and because of the computer’s primary role in all digital literacies, programming’s augmentation of literacy fundamentally reconfigures it. Literacy becomes much larger, and as it grows, the relationships and practices it characterizes change. When literacy includes coding, the ways we experience, teach, and move with our individual skills, social paradigms, communication technologies, and information all shift.
Literacy is a theoretically rich way to understand the relationship between communication and technology, in part because those who study literacy have long grappled with what it means for humans to work with socially situated, technological systems of signs.¹¹ But when computer enthusiasts invoke literacy in their calls for the broader teaching of programming, they generally do so without conveying its historical or social valences. Seeing programming in light of the historical, social, and conceptual contexts of literacy helps us to understand computer programming as an important phenomenon of communication, not simply as another new skill or technology. It also helps us to make sense of the rhetoric about coding as a new literacy.
Sylvia Scribner argued that how we define literacy is not simply an academic problem. What falls under its rubric gets implemented in large-scale educational programs and popular perceptions about who is and isn’t literate.¹² Schooling, in turn, shapes perceptions of how literacy gets defined and what social consequences are faced by those considered illiterate.¹³
As programming is following a trajectory similar to that taken by reading and writing in society, the theoretical tools of literacy help us to understand the history and future of identities and practices of programming. While reading was once done collectively such that whole families or communities could rely on the abilities of a few, we now believe everyone should be able to read. And while writing was once a specialized skill with a high technical bar for entry—one needed to know how to prepare parchment, make ink, maintain writing instruments, or bind pages—it is now an expected skill for all members of developed societies. As reading and writing became more generalized, the diversity of their uses proliferated beyond their clerical and religious origins. Writers don’t have to be good
—as defined in particular, narrow, disciplinary ways—to benefit from their literacy skills. Most of us write for mundane but ultimately powerful activities: grocery lists, blogs, diaries, workplace memos and reports, letters and text messages to family and friends, fan fiction, and wills. People put their literacy to all kinds of uses, many of which are never anticipated by the institutions and teachers they learn from.¹⁴
Similarly, the bar to programming was once much higher—access to expensive mainframes, training programs, or a background in math or engineering was needed. But now, with ubiquitous computational devices and free lessons online, access to learning programming is easier. At the same time, the uses for code have diversified. The ability to read, modify, and write code can be useful not just for high-profile creative or business applications but also for organizing personal information, analyzing literature, publishing creative projects, interfacing with government data, and even simply participating in society. Literacy research can, then, provide a new lens on the intertwined social and technological factors in programming. It also offers fresh approaches to teaching programming—programming not as a problem-solving tool, but as a species of writing. And thinking of programming as literacy may help us to prepare for a possible future where the ability to compose symbolic and communicative texts with computer code is widespread.
Thinking about programming as written communication also jolts us to confront the ways literacy is changing. The field of literacy studies has now embraced a proliferation of new digital literacies pertaining to video games, audio and video composition, Web writing, and many other domains and genres and practices. However, these multiple literacies are often presented as atomized—proliferating and bouncing against each other in an ever-expanding field of digital and global communication. Considered separately, their multitude overwhelms us. Which literacies are enduring and which are tied to specific technologies likely to become obsolete? How do we choose among these literacies for educational programs and our own edification? A closer look indicates they are not separate at all: digital literacies operate as a complex ecology. Considered comprehensively, what digital literacies all have in common is computer programming. As a fundamental condition of contemporary writing, programming is the substrate in which these reactions occur; it’s the platform on which they’re constructed. Focusing on programming allows us to see this ecology of digital literacies more fully. We can, without attaching long-term significance to ephemeral technologies, take into account the computational, programmable devices that are now joining a panoply of other read-write tools. As programming now reveals a new assortment of social practices and technologies that constitute contemporary literacy, it can show us what a complex ecology of literacy looks like in a moment of profound change.
To suggest the ways that programming is becoming part of literacy, I often use the colloquial term coding in this book. The differences between programming and coding are hotly debated, but no clear boundaries exist between the terms, and they can be synonymous. Each term implicates different stakeholders—and diverse stakes—in the conversations about programming’s contemporary uses and relevance. Coding echoes the popular rhetoric of the learn to code
movement and signals a move away from programming as a profession. Programmer is the more standard term in job titles, but coding is associated with young companies trying to make the practice hipper (e.g., job ads for a ninja coder
). The crispness of code lends itself well to publicity—or shorter URLs, as in the case of Code.org.¹⁵ Scripting, a third term that is sometimes in this mix, can refer to simpler programming that doesn’t need to be compiled, or that is specific to just one software suite, or that glues together more extensive code libraries and functions. But with the further development of so-called scripting languages such as JavaScript or ActionScript or TypeScript, the term has shed its technical specificity and gathered a rhetorical resonance instead. Scripting now can refer to simpler code or library combining or can be directed derogatorily at those who don’t seem to know much about programming; for instance, at script kiddies
who write malicious or faulty code and spread it indiscriminately on the Internet. Of the three terms commonly referring to the practice of writing code for computers, coding fits best with the focus of this book because it opens programming up to a wider population. I generally use the term programming when I am referring to the basic act and concept and coding when I’m discussing the more political and social aspects of writing code for computers. There is, inevitably, some overlap.
As this debate about terms suggests, language matters when we talk about computer programming. What we understand about programming changes with the words and lenses we choose to use for it. And when people use literacy in reference to programming, it generally indicates that they want to encourage or highlight the phenomenon of programming becoming a more widely held and generally applicable skill. That the words we use can indicate cultural ideas was central to Raymond Williams’s keywords project, which sought not to define terms or pin them down, but instead to map them out rhetorically: to trace their histories, their stakeholders, and their dynamic cultural and social geographies. By mapping literacy as a heavily circulated term in programming, as I do in chapter 1, we can see programming’s historical and cultural implications in a new light.¹⁶ We can ask questions about programming invoked by literacy: Who programs, and who can call themselves a programmer? How is programming learned and sponsored? How is programming used? How do technologies and social factors intersect in programming? Similarly, Janet Abbate argues that how the computer is cast
—for instance, as an adding machine or typewriter or piece of precision engineering—can influence whom we think of as its ideal users.¹⁷ For example, metaphors of computing as akin to math made it more accessible to women than metaphors of engineering, Abbate observes: women were well represented in math majors and had a history of calculating, whereas they were largely shut out of engineering fields. Seeing literacy as a keyword
not only indexes the users and uses of computing; it also reveals the contradictions between broad programming education programs as literacy and the narrower disciplinary concerns of computer science. My approach suggests that because programming is so infrastructural to everything we say and do now, leaving it to computer science is like leaving writing to English or other language departments.
Seeing coding through literacy mobilizes the insights we’ve gained from decades of research on social factors involved in learning literacy, helping us to explain who programs, how they do it, and why they learn. Although early literacy research credited reading and writing for organized government, the best of Western culture, and dramatic leaps in human intelligence, research since the 1980s has been much more cautious and has put the technological and cognitive achievements of literacy in social contexts. The result is a much more complicated picture of how writing systems are learned, circulated, and used by individuals, cultures, and nations. Scholars of New Literacy Studies, a sociocultural approach to literacy that emerged in the 1980s, found that social factors are critical to our understanding of what literacy is, who can access it, and what counts as effective literacy.¹⁸ In Brian Street’s ideological model
of literacy, someone who has acquired literacy in one context may not be functionally literate in another context because literacy cannot be extricated from its ideology.¹⁹ As James Paul Gee points out, even a task as basic as reading an aspirin bottle is an interpretive act that draws on knowledge acquired in specific social contexts.²⁰ Shirley Brice Heath’s canonical ethnographic study of literacy shows that the people whom literacy-learners see using and valuing literacy can affect how they take it up.²¹ Victoria Purcell-Gates demonstrates in her work on cycles of low literacy that children growing up in environments where text is absent and literacy is marginalized have few ways to assimilate literacy into their lives.²² As Elspeth Stuckey has argued, literacy can even be a performance of violence in the way that it perpetuates systematic oppression.²³ If we think of coding in terms of literacy rather than profession, these insights from literacy studies show how we must think critically to expand access to coding.
Through such insights on social context, the concept of coding literacy helps to expand this access, or to support transformative access
to programming in the words of rhetorician Adam Banks.²⁴ For Banks, transformative access allows people "to both change the interfaces of that system and fundamentally change the codes that determine how the system works.²⁵ Changing the
interface of programming might entail more widespread education on programming. But changing
how the system works" would move beyond material access to education and into a critical examination of the values and ideologies embedded in that education. Programming as defined by computer science or software engineering is bound to echo the values of those contexts. But a concept of coding literacy suggests programming is a literacy practice with many applications beyond a profession defined by a limited set of values. The webmaster, game maker, tinkerer, scientist, and citizen activist can benefit from coding as a means to achieve their goals. As I argue in this book, we must think of programming more broadly—as coding literacy—if the ability to program is to become distributed more broadly. Thinking this way can help change how the system works.
I am certainly not the first to claim that the ability to program should be more equitably distributed. I join many others in popular discourse as well as other scholars in media studies and education—a lineage I outline in chapter 1. Equity in computer programming, especially along gender lines, has been the goal of countless studies and grants in computer science education.²⁶ And my concept of coding literacy is related to what some have called procedural literacy,
²⁷ computational literacy,
²⁸ computational thinking,
²⁹ or what I have in the past called proceduracy,
³⁰ and it is roughly compatible with most of them. Jeannette Wing’s concept of computational thinking,
perhaps the most influential of these terms, relies on principles of computer science (CS) to describe its spectrum of abilities.³¹ Procedural literacy,
for Ian Bogost, entails the ability to reconfigure concepts and rules to understand processes, not just on the computer, but in general.
³² In this definition, Bogost equates literacy more with reading than writing—the understanding of processes rather than the representation of them. He ascribes the authoring [of] arguments through processes
to the concept of procedural rhetoric.
³³ For Bogost, understanding the procedures of digital video games or recombining blocks of meaning in games can be procedural literacy, too.³⁴ While I agree that games can be a window into understanding the processes that underwrite software, I believe this turn away from programming sidesteps the powerful social and historical dynamics of composing code. Michael Mateas attends to code more specifically, and his approach to procedural literacy³⁵ most closely resembles mine. Although he focused on new media practitioners in his discussion of procedural literacy, he noted one can argue that procedural literacy is a fundamental competence for everyone, required [for] full participation in contemporary society.
³⁶ I embrace and extend this wide vision of procedural literacy from Mateas.
Andrea diSessa³⁷ shares my concern with programming per se, and his model of the social, cognitive, and material pillars
that support literacy is compatible with my approach to coding literacy. His term and concept of computational literacy, which was intended to break with the limited and skills-based term computer literacy, emphasizes the action of computation over the artifact of the computer. Mark Guzdial, who also uses the term computational literacy, has been a longtime advocate of the fact that anyone can—and should—learn computer programming and, like diSessa, thinks that programming is an essential part of computational literacy.³⁸ Guzdial argues that programming provides the ideal language for describing the notional machine
through which we can learn computing.³⁹ We learn arithmetic with numbers and poetry with written language, Guzdial points out; similarly, we should learn computing through the notation that best represents the computer’s processes and potential.⁴⁰
My approach is generally compatible with all of these other approaches; ultimately, I think we are all talking about roughly the same thing with slight differences in language and emphasis. Guzdial’s and diSessa’s computational literacy are illustrative: I agree with almost every detail of their description of what this literacy is and should be—except that I think fields outside of CS should be able to shape it and teach it as well. Like computational literacy, coding literacy points to the underlying mechanisms of the literacy of computer programming rather than the instrument on which one performs it. As computing becomes more deeply embedded in digital devices, the tools of coding literacy are beyond what we might traditionally consider a computer
; consequently, we need a concept of literacy that abstracts it away from its specific tools. I often use the term computational literacy alongside coding literacy in this book. I don’t use computational thinking
here because Wing strongly emphasizes the link to CS and doesn’t use the term literacy. I believe it’s about more than thinking; it’s also about reading and building and writing. Although the language of literacy matters to my argument here, the term it’s paired with matters far less.
To this discussion of procedural/computational/coding literacy, I bring expertise on the literacy side, rather than the computer programming or computer science side. For this reason, I am also less concerned about defining the precise skills that make up coding or computational literacy than I am about their social history, framing, and circulation. As we will see below, lessons from literacy teach us that prescriptions for literacy are always contingent, so I do not attempt to pin one down for coding literacy. At any rate, hammering out the details of what coding literacy or computational thinking looks like in a curriculum or classroom is not the focus for this book.
A number of good models have been presented by computer science educators, however, which may serve as a general heuristic for my argument. Here is one I like from Ed Lazowska and David Patterson that provides a bit more specifics than most:
Computational thinking
—problem analysis and decomposition, algorithmic thinking, algorithmic expression, abstraction, modeling, stepwise fault isolation—is central to an increasingly broad array of fields. Programming is not just an incredibly valuable skill (although it certainly is that)—it is the hands-on inquiry-based way that we teach computational thinking.⁴¹
Wing’s description of computational thinking is too long to quote here, but she covers everything from error detection, preparing for future use, describing systems succinctly and accurately, knowing what part of complex systems can be black-boxed, and searching Web pages for solutions.⁴² Both of these prescriptions for computational thinking rely on fundamental concepts taught in CS classes, suggesting that the sole responsibility for teaching this literacy or form of thinking should be in CS. Aside from that, their descriptions work fine for our purposes here.⁴³
Other specifications that I sidestep in this book include which languages might be best for coding literacy and what a hierarchy of literacy skills might be. Caitlin Kelleher and Randy Pausch’s taxonomy of programming languages for novices is an excellent resource for specific languages.⁴⁴ More generally, Yasmin Kafai and Quinn Burke describe the need for languages to have low floors, high ceilings, wide walls, and open windows. That is, a language should have a low barrier to entry (low floors), allow a lot of room for growing in proficiency (high ceilings), make room for a diversity of applications (wide walls), and enable people to share what they write (open windows).⁴⁵ While most descriptions of computational literacy avoid specific discussion of how one might progress toward such goals, the UK Department for Education issued statutory guidance that nicely outlines goals for the four key stages of their program in computing: key stage 1 addresses writing simple programs and understanding what algorithms are; key stage 2 moves into variables and error detection; key stage 3 asks students to design, use and evaluate computational abstractions that model the state and behaviour of real-world problems and physical systems
; and key stage 4 is focused on independent and creative development in computing. Although outlining or advocating for specific programs of coding literacy is out of scope for this book, these sites and others provide helpful guidelines.
My approach to coding literacy in this book builds on these models of computing by providing a socially and historically informed perspective on it as a literacy practice. A vision of coding with diverse applications has implications not only for what identities and contexts may be associated with computer programming but also for the ways we conceive of literacy more generally. Put another way, just as coding literacy reshapes computer programming, it also reshapes literacy.
Making Room for Computer Programming Outside of Computer Science
The relationship between programming as a practice and computer science as a discipline is a central tension in the contemporary programming campaigns that invoke literacy, so their history calls for a little unpacking. Although programming is usually framed from the perspective of