Faithful Learning Stories

What can we learn from young computer science enthusiasts?

Eric ZhangDecember 31, 2022

Written for Marley and friends’ New Year’s 2023 essay collection.

A common conversational crutch is to introduce someone with a short label like “the math person,” “the 2-time quant intern,” or “the theatre enthusiast.” Box them up into a neat, one-dimensional package.

College students use pervasive labels because we meet so many people every day. Adults use labels too (e.g., job titles) because career roles are interchangeable by design. But because they lack identity, labels aren’t sufficient to understand individuals. People have very cool experiences that I wish they could better express and more openly share with others.

Banal descriptions like LinkedIn profiles and complaints in anonymous social media don’t do people justice. Everyone comes into college being unique and interesting, and they leave college… still being unique and interesting. You get to live for 18 full years before entering college, a quarter of your expected lifespan, during which you spend 90% of the time you’ll ever spend with parents; learn to walk and talk, read, ace the SAT, take out garbage, find lifelong hobbies, etc.

I only want to talk about one slice of that today. I have 600 classmates studying computer science. What are their stories?

A surprising facet

Computer science (really I mean “tinkering with computers”) is not a part of most people’s stories before college. When I was briefly helping run Harvard’s largest computer science student organization, of the 150 students filling out our introductory survey, over 80% had less than 3 years of experience with coding, with half of those having no past experience at all.

That might still sound like a lot, but let’s put it in context. Writing skill is developed over many years of public education and thousands of hours of media consumption. In contrast, programming is pretty detached from traditional education, which is just coming to grasp computational media. In writing-focused arts and social sciences classes, academic achievement is assumed to be the result of training and growth over an entire lifetime; but in computer science classes, most students’ skills are developed in only a couple years.

I think this realization deeply changed the way I approach my college peers. As a kid I was pretty unique because I wrote a lot of code, starting from age 10, and I didn’t stop writing code. So when I view the mistakes people make in upper-level college CS classes, relative to the same mistakes I made when I had only 2 years of programming under my belt, they make more sense. It’s not about how old you are or how much prestige you have. Everyone has to go through the same struggles over many years to learn and develop taste. Emotional and social maturity is generally measured by years lived, but technical maturity should be measured by years learned.

What would you do with computer science if you were in high school and had unlimited time to explore, untainted by professional and career expectations? I think that with this environment, students get to spend more time on what they’re curious about, i.e., passion and intellectual pursuit. You’d also be drawn to groups welcoming of others regardless of background and age.

One group driven this way are competitive programmers.

Competitive programming

This is a community that I found very special during high school. It brings together people sharing a genuine love for solving computational problems, distilled down to some algorithmic essence. Their values are growth, sharing, and exploring further than you’ve ever looked before; solving problems that previously seemed impossible.

Most of all, competitive programming is accessible. Anyone with a basic personal computer can do it. I started with a stock $300 laptop with 2 GB of RAM, which was more than adequate. Modern computers breeze through code at billions of operations per second.

Compare this to many of the hot applications of computers today, which are much greater in scope, requiring more capital resources.

  • To train a mid-sized neural network, you need $200,000 GPU hardware.
  • To make a typical web application, you need to sign up for a bajillion and one third-party services, learn about them, and carefully glue them together.
  • To make a market trading bot, you need to build a nationwide, hundred million-dollar network of microwave towers and dozens of engineers to maintain it.

In programming competitions, your code is self-contained, executing the same way on almost any computer and online judge environment. You can read and try out all code that’s written in contest, which supports a collaborative spirit. There’s so much meaningful, timeless algorithmic insight in the problems that people develop and solve within this framework.

Industry isn’t your friend

While most talented high school coders have at least heard of competitive programming, it is surprisingly unpopular at elite American colleges. I can maybe think of 3 Harvard students who got into it during college. Why is there such a shift in direction? If it’s so fun for high school students, why would college students not care?

I think it’s ultimately a difference in goals and resources. High school students have no soft resources, while elite college students have clout and connections. For example, if you’re a stellar student at one of the country’s top research universities, would you rather:

  1. Meet the governor of Maryland and have an hour-long reception, with free food and opportunities to intermingle with other politicians. (true story!)
  2. Read about the Navier-Stokes equations with a friend.

Probably a normal person picks #1. I want to pick #2.

Like perusing a fluid mechanics textbook, competitive programming isn’t a particularly direct way to develop a career. It only helps you hone skills and discover the world. But discovery is exactly what you’re doing as a kid, when the challenges of living as an adult worry you less.

Computer science majors are standing in the shadow of figures like Mark Zuckerberg. They could be building a social media app and raising millions of dollars in funding, or at least growing connections to do so. More likely, the topic fresh in mind is getting good grades in classes and cracking interviews to land a nice job, not learning for the sake of learning (“I like computers”).

Having the elite college name grants people credibility, but that comes with the suffocating pressure to follow the widest path to success.

Learning as a goal

What’s your destination, your ambition, your big dream for the future? In the American ethos, conventional advice says to take one step toward that goal every day, metaphorically building your tower higher and higher towards the Sun.

Education is a step on the royal road to affluence and status. In a rush to move along the most direct route to success, it can become a means to an end. I think there’s something more fundamental about learning for curiosity’s sake.

Sometimes I ask myself: “let’s say you become the smartest, wealthiest, and most successful person in the room — what then? What comes next?” For me, even if I were to have all the money in the world, I don’t think what I find joy in would change. I’ll still be learning, creating, and exploring with others.

Christoph Labacher writes about a “stack” of motivations by Bret Victor:

The essence of the stack is often understood as saying: “I want to save the world and I figured that becoming a technologist is the best way to do that.” — and thereby on the one hand looking down on the work of other people, who might have a much more direct impact on their community, on the other hand saying: “My technology will save the world”, or even worse “I’ll be the one that saves the world”. But that would be reading the stack from the bottom up in a form of reverse reasoning. A more accurate way of phrasing it is this: “I became a technologist because it is something that I am good at, that I enjoy, that pays the bills — in this capacity, what can I do to leave the world a better place than I found it?”

This quote is charming to me because it genuinely captures the passion in what people do. I can be motivated by the applications of my work, but when I enjoy the work itself, that reflects something deeper.

Perhaps I could learn from the curiosity and love of myself in the past, where I found so much joy in doing things for their own sake, and that could help me better understand the relationship I have with the fruit of my labor as an adult: how I express ideas, what I care about, and what makes me human.