Update Nov 2023: I’m not getting a Ph.D. anymore. I’m glad to have given it a shot, but research was not for me. I’ll be working towards finishing up with a Master’s instead.
When I tell people that I’m working on a Ph.D. in computer science, they often follow up with a logical question: What are you hoping to do with that? Since I’m still not entirely sure what job I’ll end up in,1 I typically have to do some explaining. This post attempts to articulate my reasoning for pursuing a Ph.D., both for curious friends/family and for my future self, who will surely question the decision many times.
During my undergrad, I initially chose to study human resources, the often-hated branch of business devoted to personnel management. Despite my past interest in and experience with math, science, and computers, I chose HR for two main reasons. First, I find business quite interesting. Second, and most importantly, HR seemed like a career that would allow me to make a meaningful difference in others’ lives; I imagined opportunities to help people find greater satisfaction in their current job, learn new skills, and get better jobs. After a year of school and an internship, though, I discovered that HR wasn’t a great fit for me (that’s a whole separate story), and I changed my major to computer science.
When I switched to computer science, I still hoped to find purposeful work, but I was much more focused on doing something fascinating. Although HR was interesting in many ways, computers captivate me on a completely different level. Once I realized how much I enjoyed my CS classes, I started to think about grad school; however, without a specific area of CS that I wanted to dive into more deeply, I never seriously considered further education.
At the same time, I got a part-time software engineering job that exposed me to what my career might be like without grad school. Despite the fact that I love to spend a few hours writing code, I never felt as excited as I expected to about the job. Eventually I identified three aspects of software engineering that disappointed me:
Lack of autonomy. I found that working on someone else’s project took away much of the joy of building things that I’d experienced with my own ideas. I got to make decisions about technical implementation, but there was always a product manager or some other more business-facing person making the big, project-defining choices.
Lack of truly novel creativity. I’ve often compared my dissatisfaction with software engineering to the experience of building with Legos. Initially, it’s lots of fun to see what you can make with the different blocks; eventually, though, you realize that things would be even more fun if you could design your own blocks. There are certain parts of software engineering in which you get to work on an interesting, custom solution, but much of the job is simply gluing together other people’s libraries and frameworks.
Lack of meaningful purpose. While good leaders typically try to connect business objectives with some grander purpose, my cynical mind understands that the key metric of business is profit. I’d really like to work on things that don’t always need to make money.
Of course, each of these shortcomings can be overcome. You can build your own product; build custom, creative software; or work for an organization that’s centered on doing good. For a while, that’s what I figured I’d do to be excited about my career – find a job (or start a business) that checked these boxes.
Then, in my last semester of college, I took a networking class. After reading (and enjoying!) Radhakrishnan et al.’s paper about TCP Fast Open, I realized that networking was the area of CS that I was ready to explore more deeply. I decided that networking research would be a satisfying way to follow my interest in CS while also fulfilling the desire for purpose that had led me to study HR. Over the next few months I took the GRE, picked out some potential schools, and applied for admission.2
Since my initial decision to pursue a Ph.D.,3 I’ve had plenty of time to think more about my motivations and career goals. (After being accepted to Georgia Tech, I deferred admission for a year because my wife wanted to work at her job for another year before moving.) In that time, I’ve concluded that I want to work on extending the benefits of technology to the less fortunate members of our society. Technical innovation often reaches those who are well-off first and then takes a long time to become cheap and accessible enough that it can trickle down to everyone else; I’d like to help with the trickling. Right now, that means improving internet access for rural populations and other underserved communities.
I’m certainly still nervous about the next few years, and sometimes I wonder if I’ll make it, but I’m excited to be headed down this path. I hope that a Ph.D. will enable me to make a difference in the world, work on interesting problems, and have a fulfilling career.
Another common follow-up question: Do you want to be a professor? Answer: maybe. ↩︎
I’m grateful to Dr. Casey Deccio for teaching a great networking class and for helping me through the application process. I quite possibly wouldn’t be enrolled in a Ph.D. program right now without his advice and encouragement. ↩︎
Why a Ph.D. instead of a Master’s degree? Since I wasn’t sure if I would enjoy research, I did consider a Master’s degree as a way to try it out. However, most Master’s programs are incredibly expensive, while Ph.D. programs often provide funding to their students. I was on the fence anyway, so I let money be the deciding factor. ↩︎