
Ask HN: Is a Ph.D. in CS worth it? - alexgartrell
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.<p>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?<p>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.<p>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.
======
bbb
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.

~~~
michaeltwofish
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.

------
larsberg
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.

------
davidkellis
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.

~~~
mish4
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.

------
onan_barbarian
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.

~~~
alexgartrell
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.

~~~
jefflinwood
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.

------
woan
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.

~~~
rbranson
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.

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

~~~
alexgartrell
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.

~~~
alatkins
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.

~~~
greendestiny
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.

~~~
pbh
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>

~~~
greendestiny
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.

------
rossmcf
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.

------
msg
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.

------
npp
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.

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

------
2arrs2ells
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-...](http://matt-
welsh.blogspot.com/2010/09/so-you-want-to-go-to-grad-school.html)

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

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

------
metamemetics
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.

------
helwr
check out this thread on Quora: [http://www.quora.com/What-are-the-advantages-
and-disadvantag...](http://www.quora.com/What-are-the-advantages-and-
disadvantages-of-doing-a-CS-PhD)

------
psyklic
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?

------
silverlake
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.

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

------
ashleyreddy
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.

------
amorphid
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.

------
winter_blue
If you enjoy research, yes.

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

-Dr. Moriarty

------
DannoHung
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?

~~~
jrockway
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.

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

~~~
scott_s
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>

