I started programming when I was 5, first with Logo and then BASIC. The picture above is me, age 9 (with horrible posture). By the time this photo was taken, I had already written several BASIC games that I distributed as shareware on our local BBS. I was fast growing bored, so my parents (both software engineers) gave me the original dragon compiler textbook from their grad school days. That's when I started learning C and writing my own simple interpreters and compilers. My early interpreters were for BASIC, but by the time I entered high school I had already created a self-hosting compiler for a nontrivial subset of C. Throughout most of high school, I spent weekends coding in x86 assembly, obsessed with hand-tuning code for the newly released Pentium II chips. When I started my freshman year at MIT as a computer science major, I already had over 10 years of programming experience. So I felt right at home there.
OK, all of the above was a lie. With one exception: That is me in the photo. When it was taken, I didn't even know how to touch-type. My parents were just like, “Quick, pose in front of our new computer!” (Look closely. My fingers aren't even in the right position.) My parents were both humanities majors, and there wasn't a single programming book in my house. In sixth grade I tried teaching myself BASIC for a few weeks, but quit because it was too hard. The only real exposure I had to programming prior to college was taking AP computer science in 11th grade, taught by a math teacher who had learned the material only a month before class started. Despite its shortcomings, that class inspired me to major in computer science in college. But when I started freshman year at MIT, I felt a bit anxious because many of my classmates actually did have over 10 years of childhood programming experience; I had less than one.
Even though I didn't grow up in a tech-savvy household and couldn't code my way out of a paper bag, I had one big thing going for me: I looked like I was good at programming. Here's me during freshman year of college:
As an Asian male student at MIT, I fit society's image of a young programmer. Thus, throughout college, nobody ever said to me (as they said to some other CS students I knew):
- “Well, you only got into MIT because you're an Asian boy.”
- (while struggling with a problem set) “Well, not everyone is cut out for computer science; have you considered majoring in bio?”
- (after being assigned to a class project team) “How about you just design the graphics while we handle the backend? It'll be easier for everyone that way.”
- “Are you sure you know how to do this?”
Although I started off as a complete novice (like everyone once was), I never faced any micro-inequities that impeded my intellectual growth. Throughout college and grad school, I gradually learned more and more via classes, research, and internships, incrementally taking on harder and harder projects, and getting better and better at programming while falling deeper and deeper in love with it. Instead of doing my 10 years of deliberate practice from ages 8 to 18, I did mine from ages 18 to 28. And nobody ever got in the way of my learning—not even inadvertently—probably because I looked like the sort of person who would be good at such things. (The software engineer Tess Rinearson writes about this dynamic from a different perspective in her essay “On Technical Entitlement.”)
Instead of facing implicit bias or stereotype threat, I had the privilege of implicit endorsement. For instance, whenever I attended technical meetings, people would assume that I knew what I was doing (regardless of whether I did or not) and treat me accordingly. If I stared at someone in silence and nodded as they were talking, they would assume that I understood, not that I was clueless. Nobody ever talked down to me, and I always got the benefit of the doubt in technical settings.
As a result, I was able to fake it till I made it, often landing jobs whose postings required skills I hadn't yet learned but knew that I could pick up on the spot. Most of my interviews for research assistantships and summer internships were quite casual—people just gave me the chance to try. And after enough rounds of practice, I actually did start knowing what I was doing. As I gained experience, I was able to land more meaningful programming jobs, which led to a virtuous cycle of further improvement.
This kind of privilege that I and other people who looked like me possessed was silent, manifested not in what people said to us, but rather in what they didn't say. We had the privilege to spend enormous amounts of time developing technical expertise without anyone's interference or implicit discouragement. Sure, we worked really hard, but our efforts directly translated into skill improvements without much loss due to interpersonal friction. Because we looked the part.
In contrast, ask any computer science major who isn't from a majority demographic (i.e., white or Asian male), and I guarantee that he or she has encountered discouraging comments such as “You know, not everyone is cut out for computer science.” They probably still remember the words and actions that have hurt the most, even though those making the remarks often aren't trying to harm.
For example, one of my good friends took the Intro to Java course during freshman year and enjoyed it. She wanted to get better at Java GUI programming, so she got a summer research assistantship at the MIT Media Lab. However, instead of letting her build the GUI (like the job ad described), the supervisor assigned her the mind-numbing task of hand-transcribing audio clips all summer long. He assigned a new male student to build the GUI application. And it wasn't like that student was a programming prodigy—he was also a freshman with the same amount of (limited) experience that she had. The other student spent the summer getting better at GUI programming while she just grinded away mindlessly transcribing audio. As a result, she grew resentful and shied away from learning more CS.