By Ellen Ullman, from Life in Code, which will be published next month by MCD, an imprint of Farrar, Straus and Giroux. Ullman is a former computer programmer and the author of three previous books. Her article “Programming the Post-Human” appeared in the October 2002 issue of Harper’s Magazine.
I dare to imagine the general public learning to write code. I do not mean that knowledge of programming should join the ranks of subjects that represent basic literacy: languages, history, philosophy, the fundamentals of science and mathematics. I mean it the other way around. I hope that those with knowledge of the humanities will break into the closed society where code is written: invade it.
Technology is not neutral; it is made by people with intentions. Machines and algorithms are imbued with the values of their makers, values that move outward into the wider, nontechnical world. It matters greatly, then, who writes the code. The vast majority of software engineers are white or Asian men under the age of forty. These programmers, along with marketers, propose new applications and their target user groups to venture capitalists, who decide which startups are funded. (And so we have yet another delivery app operating within the zip codes of the wealthy.) They write the algorithms that control trade, resource allocation, foreign aid, political and social actions—that is, life.
The penetration of technology into the interstices of human existence is nearly complete. More than half of humanity, primarily in the poorest and most politically volatile regions of the world, does not have access to the internet, but they still live within its structure. Life is enmeshed in code, and yet only a bare percentage of human beings on earth understands what a computer program actually is.
I wish to demystify code. It doesn’t matter how thoroughly an individual learns computing; the knowledge does not need to lead to professional programming. My goal is for the public to know that programs are written by human beings and can be changed by human beings, to understand the concepts, the patterns of thinking, the paths through which human thoughts get altered as they pass into the language of computers.
Ideally, education in computing should be integrated into public school curricula, starting in kindergarten and continuing through university. Achieving this ideal, however, would require a complete upheaval: to re-fund public institutions, to provide quality education in all neighborhoods and for all social classes—in short, a renewed belief in the value of the public sphere and civic life.
The keepers of technology, however, are not exactly believers in public institutions. One core tenet of Silicon Valley is that the ills caused by technology can be solved by the application of yet more technology. If the web is insecure, add encryption. If self-driving cars crash into other cars, ensure that all cars are self-driven. Similarly, if public education omits coursework in coding, an online education via massive open online courses, or MOOCs, can fill the gap. (Never mind those students who cannot afford the enrollment fees, internet access, or computers.)
I decided to challenge the circular reasoning of using technology to teach technology. I surveyed the computer programming courses offered by Coursera, a website that hosts MOOCs from various universities, and signed up for three of them.
The four men who teach An Introduction to Interactive Programming in Python face the camera and stand awkwardly in a semicircle. This is the introductory video lecture, reaching tens of thousands of students around the world. The instructors are wearing identical blue T-shirts. They introduce themselves as John Greiner, Scott Rixner, Joe Warren, and Stephen Wong, all professors from Rice University, in Houston. Warren is the head of the computer science department. Rixner is a thin, endearing man wearing glasses and a too-wide tie that hangs to his crotch.
I’m not enrolled in the class to learn Python. (I know the language well enough.) I’m here to see how others learn it. Python is a beginner’s language, a standard for introductory courses and a foundation for web development. Proficiency can quickly lead to employment for an aspiring programmer. But more than an introduction to coding, the class is a first look into the rooms where programs are written, a first exposure to the culture that prevails among programmers. I have enrolled to see what greets these students as they encounter that culture.
“To get things rolling,” says Warren in the video, “we’ve all worn our T-shirts for rock-paper-scissors-lizard-Spock.” Each of the instructors points to a pattern of white circles printed on his shirt.
Warren says to the others, “So, guys. Let’s just play a game, a kind of battle royale.”
They play. “Rock-paper-scissors-lizard-Spock: shoot!” They survey the hand gestures they have shot into the circle. They all crack up.
Warren later explains that rock-paper-scissors-lizard-Spock (R.P.S.L.S.) is a game played by a character named Sheldon on the television show The Big Bang Theory, a program I dislike because it perpetuates the figure of the geeky-techie man-child. To my dismay, Warren tells us that our first project will be to program the game. The assignment, he tells us, was suggested by his sons—a clue to the age and gender R.P.S.L.S. appeals to. He goes on to inform the students that the coding language Python is named not for the animal but for Monty Python’s Flying Circus.
Our first in-class exercise is to print out on the screen, “We want .?.?. a shrubbery!” I have no idea why anyone would want to print these words. Where is the usual “Hello, World!”? Then I learn: It relates to a joke from a Monty Python film.
Throughout the course, Warren says, often, that he wants it to be fun. “Sometimes we’re lame, I admit. But we’re trying not to be boring.” In another video, we are in Warren’s office. In it stands a knight’s suit of armor. “The knight,” says Warren, “is named Sir Loin.”
The atmosphere of the Python course is not an anomaly. Many who enter the world of programmers find themselves in the company of sweetly boyish men like Warren, who loves puns and lame jokes and whispering Yeah! Yeah! while playing video games. I think of the tens of thousands of students streaming in from around the globe who are expected to participate in a dialogue saturated with references to Star Trek, cult comedy skits, and video-game culture, which is itself overpopulated by men and known for its hostility to women. The crucial question for new programmers is this: Do you feel invited in?
Tim Roughgarden, an associate professor of computer science at Stanford, looks directly into the camera as he introduces the Design and Analysis of Algorithms. He seems well rehearsed, affable, easygoing. The sleeves of his blue shirt are rolled up to the elbow.
This online course corresponds to a class that is required to obtain a computer science degree from Stanford, he says. In both the online and on-campus classes, Roughgarden introduces the key algorithms created over the past fifty years of computer science, what he calls the “greatest hits.” They are some of the procedures that constitute the basis of the code that surrounds us, including the structure of the web. Beyond this course are the heavily guarded secrets of companies like Facebook, Google, Uber, Amazon, and Goldman Sachs, where the algorithms are modified and sent out through the network of human life.
I am beginning this algorithm course in 2013, and the NSA documents revealed by Edward Snowden are flooding the news, revealing to the public the extent of mass spying by the government on citizens. I start a thread in one of the class forums, asking whether anyone is thinking about how the algorithms we are learning are currently being used. I receive two replies. The first is “Uhm.” The second is a stern rebuke to the effect that political considerations are “not appropriate” to the course.
The goal of algorithm analysis is to measure the efficiency of code abstractly, unencumbered by the details of concrete implementations. Yet in one lecture Roughgarden takes a moment to step outside the abstractions. He is writing out the steps in an algorithm for the class, when he suddenly stops. “If the future of your startup” depends on this code, he counsels, “make it as fast as you can.”
With that, the “you” in the audience has changed. You are no longer someone with the course prerequisites who intends to go forward in computer science. You are not taking the course for the pleasure and challenge of learning algorithms. You are an entrepreneur; you will make the code run faster, make money.
Roughgarden is a fine professor, obviously devoted to his subject. But he holds an unconscious bias. He and others among the cosseted few carry with them their assumptions about how the world should function. Those assumptions are then transmitted through code. The internet does not filter out social biases; far from it. The internet is an amplifier.
I have one last hope for a course that could open the door of code to the millions. Among Coursera’s offerings I find a class called Programming for Everybody. The instructor is Charles Severance, an associate professor at the University of Michigan School of Information. In the introductory video, Severance expresses his desire not just to teach programming to his students but to offer other instructors free access to his curricula, to start a wave that will roll outward. A programming evangelist! I feel I have found my champion.
The first lessons of the course do not begin for several months. Two months before the first scheduled lesson, Severance sends out an email inviting us to his digital office hours with someone named Colleen van Lent, whom he does not identify.
I click a link that leads to a video in which Severance and van Lent are talking about their classes and receiving questions via Twitter and Google Hangouts from potential students. Van Lent turns out to be Severance’s colleague at the School of Information and the instructor of a course called Web Design for Everybody. She and Severance talk about the many years of study required to become a professional programmer. “How long did you go to school?” he asks van Lent. “Ten years,” she answers. “Twenty,” he responds.
Up until now, Severance has let van Lent do most of the talking. But as the video continues, the balance changes. He begins talking over her, interrupting her, making clarifications. There is an interchange that is painful to watch. Van Lent is giving examples of technical names for common icons that students might encounter:
she: I just learned that when you get the three little lines, that’s called a hamburger.
he [Incredulous]: You didn’t know that was called a hamburger?
she: I didn’t know it was called a hamburger.
he: See, if you’re in responsive design, you have to know what the hamburger icon is.?.?.?. The hamburger icon is like the Comic Sans of font. Don’t tell your class that the hamburger is the latest thing, because you’ll lose credibility.
Has Severance forgotten that this meeting is being streamed live on the internet? He has questioned van Lent’s competence before potential students. He is turned toward her, and she moves away. “The thing is,” she says, “I’m a computer scientist, so my job description is to be uncool.”
There will always be men like Severance in the coding rooms—or everywhere, for that matter. Yet it is precisely here that those who aspire to learn code must not be deterred.
I once worked for a man who said, in a meeting, “I hate to hire you girls, but you’re all so smart.” He would often interrupt my work to say, “Gee. You have pretty hair.” In response, I’d lean to one side and say, “I’m just going to let that shit fly over my shoulder.” After all, I did have pretty hair. And I went on to become a software engineer.