Last December, I defended my PhD at the University of Michigan. At the time, I’d been in grad school for four and a half years, and I’d been working with my research group for another year before that. I also went to Michigan for undergrad, so I’ve been living in Ann Arbor for nearly nine years. Why did I do this?
Before I go on, I want to say a few things up front. I went to graduate school in computer science. I can’t speak from personal experience about other fields, and certainly can’t speak for non-STEM fields. This post is my opinion, not some official set of rules. Everything I say about PhD programs is assuming that the students are all fully funded, either by teaching, fellowships, or their advisor1. I’m also a white guy from a privileged upper-middle class background, and so everything I say is colored from that perspective.
Prior to my senior year of undergrad, I cold-emailed Zakir Durumeric about the possibility of doing research. Zakir was a second-year graduate student working with Professor Alex Halderman. I’d met Zakir before, and he was a teaching assistant for the computer security course I took the semester prior. I almost didn’t send the email because I was convinced I wasn’t smart enough to work with Halderman’s research group. Luckily, a friend of mine told me to stop doubting myself and send the email. This was arguably single most important piece of advice I received in all of undergrad. I would not have PhD or a company today if I had not sent that email.
Why did I want to go to grad school? It was a combination of reasons, some good and some bad. I knew I didn’t want to spend a career building CRUD apps, and while you certainly don’t need a PhD to work on something else, I was going to barely be 21 years old when I graduated undergrad. I didn’t want to be an adult, I didn’t have any idea what life was like outside of school, and I thought the Mining Your Ps and Qs paper was awesome. At the time, I also didn’t want to move to the west coast.
The best reason to get a PhD is because you want a career in research as a tenure-track faculty member. There is no way to have a tenure-track faculty position without a PhD. Some people will tell you that the market for faculty positions is a random dice roll, since there are so few positions relative to candidates. This is not true in computer science, especially in security and cryptography. Every year, there are a set of top faculty candidates on the market. Many schools will be interested in the same or overlapping subsets of candidates. If you’re keeping up with the field and familiar with the hiring process, it’s not hard to predict who will be offered tenure-track assistant professor positions. If the market was random, you would not be able to identify every year who on the market was going to get job offers2. The random part of the market is figuring out where that job will be (especially among the top fifteen or so schools), and which school will actually end up sending an offer to which candidate. Even if you’re at the top of the market, don’t expect to be able to get a faculty position in a city that you actually want to live in. The market is incredibly competitive.
Imagine there are 100 candidates on the faculty market for computer security. Of these, only five candidates are qualified. Any given school will think that only three of the candidates out of the five are a match, then only manage to send an offer to one or two of them. It is straightforward to identify who is at the top of the market. It is hard to actually be at the top of the market. As a grad student, you have to be one of the top students in your field to have a chance at a faculty position. This is hard, but achievable. Many PhD students are flailing around, because they either don’t actually want to be in a PhD program, aren’t getting the support they want from their advisor, or don’t really know what their goals are. If you can sort out what you want early on, and figure out how to get support (especially from faculty who are not your advisor), you have a massive advantage over other students3. If you know you want to be faculty, but are thinking of not getting a PhD because it’s impossible to get a faculty job, you should know that it’s achievable. If you want to be faculty, you definitely have your work cut out for you, but you should definitely be getting a PhD.
Not all PhD students want to be faculty. Others know they want to work on a specific problem that can only be accomplished in academia. This is also a great reason to get a PhD. In my experience, not many people fit this description. Plenty of people have some research field they’re interested in, but very few know exactly the problem they want to work on. Keep in mind it is possible to work on research or in research-adjacent fields without getting a PhD. For example, many people working on applied cryptography or cryptography engineering do not have a PhD and are not academics.
For better or for worse, a PhD is also effectively a union card that allows you to be teaching faculty at a university. If you have no interest in research but want a full-time non-adjunct teaching position, especially at a top school4, you need a PhD. If you know that a teaching position is your goal, look for opportunities and advisors where you can do research about effective teaching. Take opportunities to teach while in grad school, especially opportunities to lecture rather than be a teaching assistant. If teaching is a “nice to have,” and not your ultimate goal, concentrate on your other research, but don’t necessarily shy away from opportunities to teach.
There’s another class of students that are PhD students primarily because they are good at school, and getting a PhD is the most school you can do. Often these students have strong transcripts, and so if they know what to say in their applications, they can fairly easily make their way into PhD programs. Unfortunately, this is arguably the worst reason to get PhD. Classes are only a small part of a PhD, and are not as important as publishing. In fact, you will likely be done with classes before you’re even halfway done with a PhD program. You are in a PhD program to do research. There is no rubric to meet, no test to study for, and there are no answers in office hours. It is an experience unique from other types of school, and it will break you if completing more school is the reward you seek.
A similar but distinct class of PhD students are getting a PhD because everything else seemed boring. This is an alright reason to start a PhD, especially if you are going directly from an undergraduate program and have some general research interests. This is a bad reason to stay in a PhD program. I put myself largely in this camp, with a little bit of “good at school, ergo do more school” thrown in. If getting a PhD and doing research sounds better than the other options, that’s a fine reason to get started, but you’re going to need to find some other motivation for sticking through it if you want to finish. A slightly different variant of this are the people getting a PhD because they don’t want to “be an adult”, or because they want to avoid the “real world”. This is also a terrible decision. You’re going to hate your life and want to quit (but you likely won’t, out of fear of failure). You should either find a real reason to stay a grad student, or leave. If you do finish out of some sense of obligation, you’ll likely find out that whatever it is that you end up doing didn’t actually require you to have a PhD in the first place.
Unlike a PhD, a Master’s program is a great place to avoid being an adult for a year or two, especially with the current explosion in undergraduate enrollment in computer science. Many undergraduate programs are short on faculty, staff and teaching assistants. If you can get a free Master’s degree by working as a teaching assistant and you want another year of college to sort yourself out, go for it.
Master’s programs aren’t just for people looking for another year of beer pong. If you’re shooting for a very specific job straight out of school, and want another internship or two to work towards that direction, a Master’s can also make sense. The same advice applies if you don’t have an undergraduate degree from a traditionally top school but are able to “level up” for your Master’s—this could help you get noticed by the classic large tech companies since you’ll show up as part of their University recruiting efforts. Keep in mind that getting a Master’s degree for this reason is very expensive, both in terms of opportunity and direct financial cost. You might be better off with two years of industry experience under your belt. You’ll certainly have more money that way.5
If you’re in a PhD program, but you’re not aiming for a faculty position, and you don’t want to teach, make sure you know what the alternatives are. You don’t need a PhD to get an interesting job in industry, for whatever definition of “interesting” you want. Consider what you are going to do after you defend—do you need to have defended to have access the opportunities you want? There’s certainly intrinsic value simply in finishing a PhD, but opportunity cost is also very real, and the process can be isolating, demeaning, and disheartening.
I’ve been in the notorious position in grad school where I hated my life, and I was wondering why I was there. In the fall of 2015, the start of my second year, I was lucky to line up an internship at Google on the Chrome Security team for the following summer. While I was interviewing, I was originally planning on quitting the PhD program and hoping to get a full-time job at Google after my internship. By the time I actually started the internship, I had decided I wanted to stay in grad school. In November of 2015, I read a paper by Phil Rogaway, “The Moral Character of Cryptographic Work”, which inspired me to keep working on some projects that I thought were important, but wouldn’t necessarily result in publications. I also sorted out what I actually wanted to do with my career and my life, at least for the next few years, and thought about what I enjoyed doing outside of school.
For me, I finished my PhD because I was proud of the work we were doing. I thought we had a positive impact on the security of the Internet as a whole. I knew I didn’t want to stick with the program long enough to have a CV that would give me a shot at being faculty. I saw the opportunity to spin out Censys into a company. I knew I wanted the ability to go back into academia and the option to go back and teach. So, despite spending the last one and a half years primarily working on Censys (the work of industry and the salary of grad school!), it was incredibly important to me to write a dissertation and defend my PhD.
To sum up:
- Don’t go to grad school because you’re good at school and it’s more school.
- Don’t get a PhD because you’re avoiding “becoming an adult” or “the real world”.
- Don’t get a PhD because you think you need one to get a good job.
- Don’t not get a PhD because you think it would be impossible to be faculty anyway.
- Definitely actually enjoy the field you’re studying.
I certainly don’t want to suggest that this is an exhaustive list of reasons to go to grad school, but I hope it can provide some context for why people do put themselves through grad school, or provide some help to people considering applying to graduate programs. This is also very colored by my experiences in computer science; your mileage will certainly vary in other fields. Many PhD programs in computer science have a 30-60% completion rate. Part of this is because of the allure of high-paying jobs in industry, but part of this is due to people applying to PhD programs for the wrong reasons and wasting a few years of their life. If you end up in this situation, you’re probably not going to have a good time.
Did you go to grad school for different reasons? Did it work out? Let me know on Twitter.
This is standard in STEM fields. If you’re paying for your own PhD, you are being exploited. ↩︎
There’s always a few surprises each year, and there’s certainly a random element to it, but it’s not a random draw from a hat full of all PhD students graduating each year. ↩︎
This is certainly easier said than done, and is a topic for a different post. You probably shouldn’t take my advice on this anyway, since my CV would not get me a faculty job. This advice is also very computer-science specific, and if you’re not a white male, you’re going to have a harder time. If you’re applying to grad schools and considering a faculty career, definitely talk to senior grad students and assistant professors about what hiring is like in your field. ↩︎
Some schools, such as Stanford, have tenure-track teaching faculty positions. Others, such as Michigan, have salaried non-adjunct lecturer positions. ↩︎
What I say about Master’s degrees is very computer science specific, and does not apply to other fields. ↩︎