An Ode to Personal Programming Projects

This fall, I’ve been interviewing a lot of college students for internships at Duolingo. (We’re hiring!) A repeated question I’ve gotten from these students, as the interview wraps up, is if I have any advice for them as they look to start their career in tech. (Maybe it’s my gray hair that suggests I’ve got a valuable perspective here.)

Each time I’ve given the same answer: Don’t expect learning to stop when you leave school. This industry is constantly reinventing itself. The technology you’ll be working on in 15 years probably doesn’t exist yet. To build a long career in tech, you need to be comfortable constantly learning new things.

Personal programming projects have been my most effective way to keep learning in the decades since I left the University of Washington. My laptop is littered with projects I’ve started and mostly abandoned. Only one, Library Notes, has grown to the point where another human can use it. All of the other projects linger, unknown and unsung, as dusty Git repositories. I accumulate them like hidden scars. Only I know or care they exist. Yet I’ve been able to build a 24 year career with the experience these projects gave me. Some notable examples:

  • As a young Microsoft program manager, I wrote a stress test for Transactional NTFS. My hands-on experience helped me be a better program manager for that project.
  • When the iPad was released in 2010, I bought my first Mac, learned Objective-C, and wrote a simple app that turned the iPad into a digital picture frame that downloaded photos from Flickr. (Remember that site?) This project gave me the experience to pivot from “Microsoft program manager” to ”iOS developer.”
  • When I was working at Facebook, I learned about spaced repetition and wrote apps for my kids, who were then in middle school, to help them with spelling tests and Spanish vocabulary. This experience with educational technology led me to Duolingo.

I’m writing this post using my latest personal project: An iOS/Mac app I’m calling Permanent Marker. Permanent Marker is a simple writing app for editing plain text files stored in a Git repository. The project makes it a tiny bit easier for me to update content on this website. But more importantly: it makes it much easier for me to learn SwiftUI and how to programatically work with Git.

College is long behind me, but learning never ends.