Why I am Still a Programmer

Once upon a time, when I was a brash and headstrong program manager in the Windows division of Microsoft, I got used to being the youngest person in the room in whatever meeting I was in. That era lasted a few years, then gradually turned into an even longer period when I was “about the same age” as most of the people I was working with. But that period is behind me now, too. For some reason, the software industry favors youth, and now with my gray hair and reading glasses I’m often decades older than the people I’m working with. I’ve started to realize that I’m a bit of an outlier for persisting in this industry for so long, and an idea has been tickling the back of my brain for a while: staring a series of blog posts called, “I’m an old person in the software industry. Ask me anything!”

So here’s my first stab at it, and I’m going to answer a question that someone asked me at the end of a Duolingo interview. I’d given the candidate a quick outline of my career (13 years at Microsoft as a program manager, then a mid-career shift to becoming an iOS engineer, which lead to a year at a startup, 6.5 years at Facebook, and now 5 years at Duolingo). He asked me, quite bluntly: “Why are you still a programmer?”

The candidate wasn’t from the United States, and the impression I got is that the programming jobs in his country were poorly paid, low-status jobs that you took as a stepping stone to something better, like becoming a manager. So that’s one factor in my answer to the question: I’m a still a programmer because in the US tech industry, I can afford to be. I’m not in the position of painters and poets, those who are torn between a job they love and a job that can support their families. If, like me, you love programming, you can do it your whole life.

But why do I love programming? Two reasons. First, Being a programmer is as close as you can come to being a real magician in this universe. This isn’t the magic of smoke, mirrors, and sleight of hand. This is magic like people dreamed of in the old days: You make things happen just by saying the right words in the right order. Through your willpower and incantations you direct supernatural demon forces to do your bidding. This isn’t a tortured analogy; the electricity that flows through our computers is pretty close to a demon force, and we control it merely through the words that we write in the form of computer code. Willing something into existence through words alone is an amazing feeling.

The second reason I love programming goes even deeper into my personality. One of the greatest pleasures I get is when I understand how something works. That’s why my original career goal was to teach: I thought helping students understand things would multiply the joy I got from understanding things the first time. I abandoned teaching as a career when I realized I liked building software way more than I liked being an academic. In a way, though, my teaching aspiration just morphed a little. Instead of explaining concepts to people, I spend my days “explaining” concepts to computers. Writing the precise instructions needed to get a computer to do anything provides the same kind of feedback of “do I really understand this” as trying to explain it to another human.

My career in software has had its downsides. I’m jealous of people who get to work in hospitals. There are times it strikes me how trivial everything I do is, especially compared to the doctors, nurses, and technicians who actually help people. I’m jealous of people who have practical skills like carpentry. I have remarkably little ability to manipulate the physical world, and sometimes it feels like the only thing I can do well is think and type.

I’ve made my peace with those downsides, though. Instead, every day I am amazed I get paid to understand how things work and then explain what I’ve learned to a computer. It’s a thrill, and I don’t know if I’ll ever get tired of it.