Every year I am approached by students asking about grad school in Computer Science. I generally sit down with them for an hour or so and go over all of the details of why you should go, what the tradeoffs are, where you should apply, what it takes to get in, and so forth. I figured it would be a good idea to write some of this advice up in a blog post so I can capture it in a more permanent form.
In this post, I will talk about why to do a PhD in Computer Science, and why not to do a PhD. Assuming you've already decided to go to grad school, I've blogged previously about how to get in. Later on I'll blog about where you should apply.
Masters vs. Ph.D.
First off, when I talk about "grad school," I mean doing a PhD. Many students ask me about doing a Master's degree after college. I don't generally recommend students from good CS programs do a Master's in CS, for several reasons: (1) it's expensive, (2) you can learn the same material as an undergrad, and (3) doing a Master's isn't useful for deciding if you want to do a PhD -- it is a totally different experience. M.S. programs generally require taking a lot of classes, so they are not at all like being a PhD student (where the focus is on research). PhD programs don't generally care whether you have a Master's when you apply; in fact, some schools seem to prefer taking students straight out of their undergrad degree.
The only cases I recommend doing a Masters are for students that aren't quite prepared to get into a top-ranked PhD program, for example, because their undergrad major is in something other than CS. (Note that if your undergrad major is in an area closely aligned with CS, such as engineering, math, or physics, or you took a lot of CS classes despite majoring in something else, you probably don't need a Master's.) A Master's can also benefit students coming from foreign universities. Doing a Master's at a good CS program in the US is a good way of getting a letter from a well-known CS professor to help you get into a PhD program.
Why do a PhD?
Of course, this is the most fundamental question. I'll try to articulate the pros and cons below. First, the pros:
- Lots of freedom. PhD-level research is all about defining a problem, solving it, and convincing everybody that your solution is a good one. Half of the challenge of doing a PhD is deciding what problem to work on. It is really about carving out your own niche in the field.
- Working for yourself. Once you have a PhD -- and even during the process of getting one -- you are able to be your own boss. Rather than working on someone else's vision, you are the one to define the vision. This is especially true if you pursue an academic career after grad school, but is also the case in many industrial research labs. Typically, people with Bachelor's and Master's degrees aren't afforded so much freedom.
- Working on the hardest problems. PhD research is about opening up new avenues of enquiry, and working on problems that the rest of the world hasn't even articulated yet. If you do it right, you can have tremendous impact.
Why not do a PhD?
Of course, doing a PhD is not for everybody. I have seen quite a few students enter a PhD program, spin their wheels for years on end, and leave without finishing their degrees or doing much of anything. I've even see people get a PhD without making a mark on the academic community, just barely doing enough to get a thesis signed off by three professors (this is easier than it sounds). These people shouldn't have done a PhD at all -- they would have been better off going straight to industry, making a lot more money, and probably being much happier in their jobs.
The only reason to do a PhD is because you love doing research. If you don't love research, don't bother -- it is not worth the time, money (in terms of opportunity cost vs. making a real salary in industry), or stress. Doing a PhD is stressful, if you are doing it right -- you are in constant competition with other academics to publish your results in the top venues, to make a name for yourself, to get recognized. If you harbor ideas of lazy days sitting in the coffee shop pondering the universe, you are dead wrong. (You can always approach a PhD this way, but you will probably not be very successful.)
"But," you say, "I don't know if I love research -- I've never done any!" Then why are you considering doing a PhD at all? The only way to find out is by doing research, preferably as an undergrad. If you screwed up and graduated before doing research, try to find a research assistant job in a professor's lab, or do a Master's (see above). Be warned that most Master's programs are very course-intensive, so you will need to work extra hard to do some research on top of the courseload.
Another downside to the PhD is that is it extremely unstructured. This can drive some people crazy. The nature of research is that it is open-ended, and there are often no clear guideposts as to what you should be working on each day. Also, your PhD advisor may or may not mesh with your personality -- they might be too hands-off, too hands-on, out to lunch, too stressed about getting tenure, etc. Your experience in grad school will depend a lot on how well you get along with your advisor. (Let me take this opportunity to apologize to all of my current and former students for what they have to put up with.)
Doing a PhD can take a long time. Nobody finishes in four years. The typical time to completion is around five or six years, but there is a long tail -- I reserve the term "paleo-student" for someone who has been at it more than 10 years. See the Taulbee Survey for some data. The time to finish your degree can be taxing, since all of your friends have already gone ahead and gotten married, had kids, bought a house, etc. while you're still living in squalor with four roommates who haven't bathed in a week. Eventually your parents and loved ones start wondering what the hell you are doing with your life. The brilliant comic strip Piled Higher and Deeper uses this as a recurring theme. My advisor used to say that "doing a PhD costs you a house," which is just about right if you consider the amount of money you could have made being in industry for the same amount of time.
So, should you do a PhD, or not? If you think you are up for it, you can always try it for a couple of years, and if you dislike it, go get a job in industry instead. Unfortunately, it doesn't quite work the other way -- moving from industry to grad school is much harder.
Taking a year off
A lot of students tell me that they plan to get their bachelor's degree, work in industry "for a year or two" and then apply to grad school "later." If you are serious about going to grad school, I do not recommend this approach. In my experience, it is quite rare to make the jump from industry to grad school. First off, industry pays so much better than the PhD student stipend that it is quite hard to make this transition. Also, to get into a top PhD program, you need good letters from CS professors, and letters from industry don't really count. After you've been gone for a couple of years it's hard to get those stellar letters from the professors that may have loved you back when you were in college; newer, brighter, more energetic students have taken your place and you are long forgotten (although maybe Facebook will change all that). Industry experience rarely helps a graduate application, especially if you're some low-level engineer at a big company writing tests all day.
That said, taking time off after college can be a great experience. I took a year off doing research at different universities (University of Cambridge, University of Glasgow, and Vrije Universiteit in Amsterdam) after finishing college but before applying to grad school. It was a great experience and it bolstered my grad school applications since I stayed within the academic sphere.
Another approach is to get into grad school and then defer admission for a year. Most schools will let you do this (although they may grumble a little, or even make you re-apply, although this is usually a formality).