Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Is a Ph.D. in CS worth it?
37 points by alexgartrell on Sept 19, 2010 | hide | past | favorite | 39 comments
So, I'm a senior CS major at CMU, and up til now I have taken care to keep both options (Industry and Grad School) open to me. Unfortunately (or, perhaps, fortunately), it's about time to make a real decision, so I figured I would just gather as much (hopefully unbiased) information as possible.

So, given the choice between a top tier Grad School and a top tier company (whether it's a cool new startup or an established player), which is the better choice?

For the sake of eliminating the easy answers, you can assume that I'm not sure that I want to teach and that the opportunity cost doesn't bother me.

Edited to add: Whatever I work on, I want it to be cool and new. Research affords a good opportunity to do that, but I believe a job could as well.




Besides being a door-opener for research jobs, pursuing a PhD is also a great chance for personal growth. You will be challenged on many, many levels and thus likely develop skills that you never knew you were lacking in the first place. In my view, the world becomes larger in grad school; you'll get to see so many hard questions and unknowns that your appreciation for existing knowledge will no doubt grow.

There may be jobs in industry that allow for similar growth, but they are certainly not the norm. It is easy to stay within one's comfort zone once one gets paid to do so.

In my (completely biased) opinion, doing a PhD is worth it for great and curious students that like to be challenged and that can afford 5 years, no matter what you plan to do afterwards (in fact, especially if you don't know what to do afterwards). You can always be a code monkey for 50 years after the PhD; it's hard to go the other way.


I completely agree that you learn all sorts of unexpected things doing a PhD that are often unrelated to the specific field you're working in. Lots of these things seem to be common across the experience of many people, but some of them while be uniquely yours.

But lots of what you'll have to do won't be cool or new, it will be tedious and time-consuming drudgery. Of course, it still might be worth it, but don't expect it to be all sunshine and light.


If you think you might want to teach, go for the Ph.D. now. You're at CMU and doing research (from your comments), so you can get some recommendations and possibly basically direct placement into top-tier schools. That opportunity goes away with years, as does the ability to live on ~22k/year.

If you want to work on the more researchy problems while in industry, also consider the Ph.D. Even the Master's is just a "quick pay grade upgrade" but won't get you into the research labs at MSFT, etc. You'll be just another hacker, albeit one with one additional line on their cv. Most of the graduate students I meet (in Computer Science) have no interest in being professors -- they mostly want to work in research labs or use the Ph.D. as a leg-up towards a CTO job.

If you don't care about either of those, go into industry.


You don't have to decide whether or not to do a Ph.D. right now. Just begin grad school and after you've finished a master's degree decide whether you want to continue on and do a Ph.D. or not.

I felt like I had to make the decision early on in grad school, but that's not the case.

Do a master's (thesis option) degree and in doing so you'll discover whether you want to do research or not. If you decide you absolutely love research (and all that goes along with research - publishing, perhaps teaching, etc.), then go for the Ph.D., otherwise, finish with the master's degree and go into industry.


In my case I wasn't sure whether I wanted to do a PhD so I went for a Masters first. After finishing a Masters I didn't feel as though I did "real research". To an extent I feel research given to M.S students is not as interesting and will have to be much smaller in scope due to length of time a M.S student has. It seems to me the only way to really know whether you like research is to be in a PhD program doing research. Although this isn't a great answer because it requires investing a lot of time. Thats my experience at least.


Whether you want to teach is moot. The top tier schools are not about preparing you to teach, they are about preparing you to do research. There are many options after a CS PhD and most of my classmates are not teaching now.

Getting into a 'top tier grad school' is a crap shoot, much like a getting into a 'top tier' company. You should probably figure out whether you want to spend a lot of time doing research or not, and look into whether you like the sort of jobs CS PhDs wind up doing after a PhD, not phrase your queries narrowly in terms of which top tier option is better.


The only reason I said anything about teaching was to eliminate the "Well, if you want to teach, you have to go to grad school" argument. I kind of understand that and figured I'd trim that discussion.

I understand what you mean by the crapshoot part, but, given the choice between a top tier company and a middle tier grad school, I'd go with the top tier company every time. Between top tier grad school and middle tier company, I'd choose the grad school. Maybe this is a little shallow of me, but it seems like a reasonable heuristic, all other things being equal.


Looking at your resume, you've got decent experience with both undergraduate research, TA'ing, small companies and a large company. I had similar experiences at CMU when I went there (for ChemE, not CS), and I decided that entering industry (in 99, a great year to get hired) was better. If I'd graduated in 2001 or 2002, I'd probably have stayed in grad school. How is recruiting looking at CMU this year? Do you have solid job offers already? Does the professor you've been doing research with have any suggestions about where to apply to grad school?

A friend of mine graduated with a CS PhD last year, and he just took an interesting job working on the key algorithms behind one of the "big names" in tech today. But other opportunities he was offered were the same as he would have gotten with 10 years of software development experience.

I'll also say this - if you don't get your PhD now, it's a lot harder to go back and do it when you have a mortgage and other commitments.


A colleague of mine at IBM Research and I made a presentation on the subject that we used to give to college students.

http://www.woan.org/Presentations/Crossing.pdf

I think that others mentioned that you really want the PhD if you want to go into research and especially if you are interested in the search for truth rather than good enough to work in the real world. Kind of like the difference between science and engineering.

Coming out with a PhD from a top school means that you will more than likely be the world's expert in something (whether that something is important is another question) which is pretty cool.


Definitely TOP SCHOOL though. I've met and worked with many PhD CS students from the lower end of the spectrum who were nothing more than book smart, in the worst way. I guess lower and mid tier schools just don't require real innovative thought out of their graduate students. They couldn't apply their knowledge in any way to solve any problem. Their graduate work was neither innovative in a scientific or practical fashion. They were relegated to business analysis & project management at a major corporation. Yuck.


A PhD is research training. Do you want to do research?


I want to do cool stuff. I have done research (currently semester #3 of it) and have generally found it to be new and exciting, but that's also how I've felt about working on Mongrel2.

If you told me that the only way I was likely to find new and interesting problems was to go to Grad school, I would choose grad school.


I'd go even further and say get a PhD only if you want to be a professor. If you just want to work on interesting projects in industry, a Masters degree might be a better RoI.

Also consider the increased difficulty of re-entering the commercial workplace after spending a long time working in an uber-specialized field while getting the PhD. If you're more of a generalist by nature, don't do the PhD (this is advice I wish someone stressed to me before I did mine).

There have been several other similar threads to this on HN from memory which also contained some solid advice.


Yeah I think I would agree. I did a PhD without wanting to go into academia and while I had plenty of reasons for doing it I'm not convinced it was a great idea.

I think part of wanting to do a PhD is wanting to complete the ultimate intellectual marathon. To get that seal of approval. Its a really stupid reason and I strongly suggest you do some soul searching as to which parts of your ego feel they need that validation.

Cool and new. Yeah I think that might have been how I described my motivation as well. I don't think research is about cool and new. I think successful research is about learning a difficult and advanced area and then carefully contributing a very small uncool piece of the puzzle. I think trying to be creative gets you shallow and unuseful work.

It's probably better to think about the PhD as learning about a really specialized subfield and a small amount of contribution. I'd also say only certain subfields are worth getting a PhD in. In some fields like machine learning a PhD can be an entry into all sorts of useful jobs and roles, in other fields its only an entry to academic roles, and finally in some fields it won't be a good entry to academia and industry will be left scratching their heads as to why you wasted your time.


One of your previous comments is, I think, one of the most succinct descriptions of why I'm planning to leave CS academia. (That said, CS academia has been pretty good to me.)

"While amazing, groundbreaking research is possible in academic computer science - the general lifecycle of research is some irrelevant poorly made prototype that ignores any number of real world concerns and leads to a couple of uninspired papers that noone reads."

http://news.ycombinator.com/item?id=1376259


Well that was definitely my experience, I'm not sure how well it generalizes.

I think there are probably some deeper factors at play in this. I think in most fields of computer science its hard to articulate the importance of the research in itself. That is I think my vague outsider view of Maths and Physics research is that its easier to quantify the significance research on its own. In CS I feel their is a stronger need for outside justification - that is this research will do x faster or better - but that research tends to be divorced from industry to the extent that it rarely contributes directly. Fundamentally there just isn't as much need for academia in lots of fields of CS - it doesn't take expensive equipment and its not so abstract that it can't be undertaken by a profit seeking concern. Add to that most universities want to take good research patent it and spin it off anyway, and you might as well just start a company and keep your equity.


Do you like writing grant proposals? Do you like teaching? Do you like writing and reviewing papers? Academia consists of a lot of non-coding work that I frankly cannot stand. Heck, I thought I might actually like teaching and it turned out it was the most unpleasant job I've ever had.


I'm just finishing my PhD thesis in CS now. Like you, I don't want to work in academia. Was it worth it? It's a tough call.

I greatly appreciate the time and relative freedom that my PhD has given me to develop, but not all of that development will be applicable out there in the real world. I think most people moving from PhD study into industry have to make something of a sideways leap, and you can't expect the same level of remuneration as you'd find in a job you're qualified for (i.e. research).

In my recent job-hunting, I've had a really hard time convincing potential employers to trade my overeducation against my inexperience. Recruiters, who often just match acronyms on a CV/resume, are particularly tough in this regard. One told me that, despite me having a PhD, he would only put me forward for roles that said 'new graduate' or 'no experience required'.

You can combat this, however. In my experience, there's time when doing a PhD to do some extra-curricular stuff—to work or to develop personal projects. These will help you to look less like the kind of narrow-minded, misanthropic pedant that people expect from a PhD student.

In summary, the only thing a PhD will qualify you for is research. Having a PhD, as prestigious as it is, is only as useful as you make it, so your choice of topic and extra-curricular activites are essential. If you're considering a PhD because the jobs your ideal job isn't open to you, consider whether taking the sideways step into PhD study is really the most direct route to the job you want (read: it probably isn't).

One more thing: be aware that your relationship with your advisor is crucial. Quitting because you can't stand them two years into your PhD means starting over, so choose wisely. Don't choose them based on the person you want to be, choose based on how they fit with who you are now.

All the best.


I did an MS in CS with a thesis. I was not at a top tier university. I would recommend going on for the MS at least. It was fabulous in its own right, well worth the delay entering the workforce.

It was also a great way to figure out that I did basically enjoy CS research, but I'd need to feel a real burning sensation to spend the time on the PhD and get hired at the Google lab. Tenure-track seems to be for masochists only.

After the MS I took a fairly good job, then 18 months later moved on to a top tier company. You can probably go right to a top-tier after CMU and a master's.


One could say a number of things, but I'll just say this: I would suggest that you consider working for a bit in between undergrad and grad school. If you had a strong chance of getting in directly from undergrad, then it will remain so after a year and a half (when you'll need to apply), especially if you keep in mind from right now that you should keep in touch with your advisors / rec letter writers. Two years of work is reasonable; one is usually too little to get into the swing of things and three starts to get a bit long and it will become harder to get admitted.

This has a number of benefits: worthwhile non-academic experience, better sense of whether you really want to do a PhD or whatever else, usually more focus when you do go back because you have had time to reflect on what exactly you want to do and get out of it, some general maturity that comes from working rather than just being in school, less pressure in making a big decision right now, and so on. Since you aren't hell-bent on becoming a professor, it is good to see both some academia (your undergrad) and industry before jumping into a long-term thing like a PhD. It's also more comfortable applying to grad school from a job you already have rather than as an undergrad, since if you don't get in anywhere you like, you can simply stay at your job and even try again the following year. (This also all applies if you decide you just want to do an MS.)

Basically, you have to make your own decision about this, and this is a fairly simple (and productive) way to make the decision easier.


I did the Fifth Year Masters program at CMU because I was in exactly this position. I recommend talking to Stehlik about it.


Matt Welsh (Harvard CS systems prof) has a great post on the topic: http://matt-welsh.blogspot.com/2010/09/so-you-want-to-go-to-...

"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.)"


I graduated from CMU CS in 2009 and chose to start up instead of doing grad school (http://www.shoefitr.com). We were funded by AlphaLab and are still based in Pittsburgh.

I, too, was looking to work on something cool and new, and you can certainly find projects that meet this criteria in both startups and academia. The decision for me was easy because I was passionate about the idea, and I was excited to start building. The serious thesis work in grad school would still have been a couple years away, and I wasn't as excited about taking more classes. I wanted to get started immediately.

If you'd like to grab lunch and talk more about the start-up world, I'd be happy to try and lend my perspective. (My co-founders and I live in Shadyside).


Hedge your bets. Start talking to professors this semester about grad school and getting recommendations. Then tell them later you've decided to do a year of startups\industry. If you are on good terms with them, they will be fine with submitting recommendations 1 year later. You'll just have to let them know what productive things you've been up to in that year. Their only concern is that they aren't damaging their reputation by recommending burnouts.

In the meantime, get involved with other students on building stuff outside of class this year! Once you find a specialty of CS you're passionate about, whether it's statistical machine learning or web development, it'll be obvious which path is the best choice.



Both options are great options. Obviously, either way can further your career, so you should be asking which is a better fit for you.

For example, ask yourself - would you enjoy doing a PhD? If you wouldn't have fun, then don't do it. A second question is - what careers would make you happiest later on? If those careers don't require a PhD, then consider not doing one.

Also: Are there multiple CS research topics that would interest you? Are you self-motivated and good at working on long-term projects? Are you happier implementing things or thinking about how to implement things?


If it's a top 10 school then do it. You can get a job anytime, but the window on grad school shuts quickly. If you don't like it after 2-3 years, take an MS and quit. Grad school is fun.


I think this essay by PG is appropriate here. http://www.paulgraham.com/love.html


IMHO a PhD like any other education is just potential energy. It's meaningless unless you can apply it, or someone else can. I would save some money and do a startup however small. This way you know if your making something of true value rather than something you find just interesting. One of my cofounders has a PhD but he worked on various startups during his thesis.


Grad school is a self induced neurosis. If you don't know what you want to do, you can learn and pivot faster by doing stuff in industry. You can always go back to grad school.

Also, a PhD may work against you. Many programmers in smaller companies will think you aren't interested in working hard.


If you enjoy research, yes.


No don't do it. PhD's suck.

-Dr. Moriarty


Research in pure CS is likely going to be math oriented. Do you like the algorithms and proofs in your classes? Do you like them well enough to do them for a nice fat chunk of your life? Do you like them well enough to go into significant debt (unless you have bank already)?

More important than that though: Is there a particular subject within CS that you are INCREDIBLY passionate about?


This is not true. There is plenty of PhD work being done in things like AI, distributed systems, databases, programming language design, programming language runtime design, and many other topics that are not mathematical.

There is plenty of work involving math, if you like, but there is a lot more to computer science than linked lists and finding strings inside strings.


Actually, I just checked and almost every CS field rests on substantial understanding of math, you can safely ignore the parent post.


I'm going to defend my Ph.D. in December. I agree with the parent post. Check my profile for my academic page, which has my publications. I do research related to systems for high performance computing. Not much math. Mathematical reasoning and understanding is needed, but the research is not math.

I'm going to steal from myself and just repeat this: I consider computer science to be everything concerned with computation in both the abstract and in implementation. See http://news.ycombinator.com/item?id=968013 and http://news.ycombinator.com/item?id=1131606


Really? I can link you to about a million CS papers that do not mention formal math. And incidentally, this work is easy to apply directly to my day-to-day work as a practicing programmer.

(Some would say that means it's not academic enough... but you get the "Dr." title, so...)


Bullshit.


most CS PhD are funded - not much money, but you don't need to go into debt, which is unlike med or law school.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: