Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm a self-taught programmer and have just started a computer science degree to supplement my knowledge and fill in the gaps.

However, I'm already debating the direction of my education. I want a 4 year bachelor's degree for sure, but after that, I'm not sure: Is it worth it to get an M.Sc? What about a Ph.D.? What opportunities do these degrees open up?

Currently my goal is to be a software developer, but there are a number of fascinating fields in the software industry and I'm certainly interested in investigating many of them. It is in this respect that I think a higher degree may be worth it -- even if it wouldn't necessarily help a career of software development.

So will it be worth it? Will grad school open doors?

share|improve this question

closed as not constructive by gnat, Glenn Nelson, Martijn Pieters, Dynamic, MichaelT Mar 5 '13 at 21:15

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

10  
Spending a lot more time to earn the same wage. –  orokusaki Sep 29 '10 at 4:31
19  
What are your long-term career goals? A prominent figure in the industry (a la Stroustup, Meyes, Knuth, etc), financial security, a day job to subsidize your nightly crime-fighting alter-ego? –  JBRWilkinson Sep 29 '10 at 8:22
    
At the moment I just want to get into software development, but I'm exploring my options still and just want to see what I could do if I did get a PhD –  Carson Myers Sep 29 '10 at 14:36
4  
I worked with a guy who had a Ph.D. in physics... he was the worst programmer I have ever worked with. He made computers cry. I imagine you have to be somewhat smart to go through all of that schooling and then convince someone at the end. I bet he still doesn't understand pointers though... –  jmq Feb 18 '11 at 9:16
11  
@jmquigley and if you had done a phd in physics you might know you can't draw a graph from a single data point ;) –  jk. Jan 18 '12 at 9:22

12 Answers 12

up vote 100 down vote accepted

Getting a PhD does two things to you and it uses up 4 or more years. You will need to decide whether those two things are worth the time. First, it gives you some initials after your name. For the rest of time, people who see those initials will think "wow, you must be really smart!" (and often, they will say it out loud.) On a resume it will generally help you, though in some circumstances it might hurt you, with people thinking you're overqualified or an egghead.

Second, and more importantly in my opinion, is the changes in your brain and your attitude that happen over the course of the degree. You will end up knowing more about some small part of the world than any other person. You will stand in front of 3 or 4 people who are experts, sometimes world-renowned experts, and teach them about your work. When you walk in, those experts will be supervisor, examiner, "bosses" of a sort and when you walk out they will be your peers. You will learn a lot about one corner of computer science and a lot more about yourself and your capabilities. You will be confident being "the expert" when required. And that changes everything.

Unless you know now you want to be a prof, or to join a particular research lab, it seems unusual to me that you could decide about the PhD before doing the undergrad work. Go do the undergrad, and make friends with some grad students. They will tell you all you want to know about the life of a grad student, the life of a baby prof, the job prospects when you're out, and more.

I don't regret the time I spent on my PhD. It has opened many doors for me. It has made me more memorable ("right, you're the woman with the PhD, aren't you?") and been an asset to some of my teams independent of my abilities or knowledge ("we have a PhD on our team!"). But the industry I joined then is not the industry you're joining now. Talk to people who are in the thick of it now and then make a decision as you finish the undergrad work.

share|improve this answer
8  
This is a very good answer. –  Paul Nathan Oct 8 '10 at 16:15
3  
Very good answer! –  Vetle Oct 8 '10 at 18:11
3  
I had to change my accepted answer to this, because it is so good. For the record, I don't want to be a prof but I really want to get involved in research, even if not necessarily professionally. –  Carson Myers Oct 22 '10 at 4:38
2  
@Paul as I mentioned, it has opened many doors for me. BTW my daughter went to culinary school, and has worked with great chefs who did and who did not. I think in both CS and cooking, skills outrank paper, though many gain skills while gaining paper. –  Kate Gregory Jan 18 '12 at 18:36
    
+1 for skills outrank paper –  AnyOneElse Jul 29 '13 at 12:56

Grad school is worth it when you plan to have a career in the academic field. For typical employment in software development, grad school is not a requirement at all.

It would benefit you in the sense that you'd likely get more interviews thanks to a Ph.D. looking pretty impressive on your resume. But in terms of actually using your knowledge, you'd have to look for specialized employment or do more research than development to really reap the rewards.

That said, I think a bachelor's degree is absolutely worth it. It exposes you to the world of computer science and gives you the foundation that makes it easier to learn in more depth whatever aspects either interest you or are needed for your job.

share|improve this answer
    
So it might be worth it if I decide to work in a more researchy position. Are there many jobs like that, outside of just working at a university? –  Carson Myers Sep 29 '10 at 4:58
1  
I'm not sure, honestly. I think that'd depend largely on your area. The company I work at (in Canada) employs a few Ph.D., one of them in a combined research & development role. I hear Google hires devs with Ph.D.s as well. I'd look around at job postings in your area and see what's out there. Things might change by the time you graduate, but the overall shape and trends should be in the same ballpark. –  Anna Lear Sep 29 '10 at 13:12
    
Depends upon what you define as typical and if someone is planning on going a management track or not. Long term, for major cooperation's the Masters can be useful but generally better if you get someone else to pay for it. –  rjzii Jan 18 '12 at 12:24
    
"For typical employment in software development, grad school is not a requirement at all.": In my experience, the skills you acquire getting a degree or PhD can make you a better programmer (more efficient and able to produce more solid code) but I agree that most of the job offers do not require such a high qualification: the tight schedules and deadlines required by the industry make it very difficult to do anything more than plain routine coding. Most of the time employers give little room for trying out new things, even though they could gain a lot from it in the long term. –  Giorgio Mar 5 '13 at 21:06
    
I think that one of the problems is that a typical company plans for the next 3 to 6 months (or at most 1, 2 years) whereas doing a PhD one learns to look years ahead. But this kind of long-term thinking is useless for working on products that must be released very quickly with requirements that are changing all the time. Maybe a PhD can find an appropriate job in areas like compiler construction, avionic systems, medical software, where requirements are more stable and more analysis is required besides plain coding. –  Giorgio Mar 5 '13 at 21:14

It might open up more technical positions and jobs at larger Oracle-type companies. The important thing it does though is gives you a very focused specialty. To employers, you are the best they can find in that specialty (on paper at least).

share|improve this answer
    
+1 for the "focused specialty" point. –  craftsman Sep 29 '10 at 11:18

PhD qualification is good if you want to work for companies such as Oracle, Google, Microsoft, IBM etc. It's also important to have when working as a researcher or lecturer/professor at a university. Don't do it simply because of the title as in that 3 or 4 years you can accomplish a lot more in life then getting another piece of paper. You will save time and money and do other things you enjoy such as dancing, cooking, snowboarding, traveling, running a business etc. Lastly, don't rush the decision. Take your time and find out what you really want to do and what makes you happy. If you just like developing software then an undergrad degree is fine for many companies.

share|improve this answer

Can anyone name a CEO of a large company that has a PhD in computer science? Steve Jobs? dropped out of college, 'cos he famously hated the boring bits. Bill Gates? also dropped out as he felt was surrounded by people not as smart as he (based on GPA).

I've worked for companies that have amazing programmers that work on incredible systems, some of which people use every day (e.g. Windows) and others that help industries get along together (e.g. XML and SOAP). Many of these guys were self-taught and studied subjects other than Computer Science, for example Physics or Eletronic Engineering. The reason for programming in their lives was as a tool for getting their work done, rather than studying programming to learn how to do programming.

I've also worked with government and large corporations that have amazing Cambridge graduates that have had not just one, but two PhD's. These were incredibly intellectual guys who created sophisticated and elegant solutions to very specific problems in fields such as communications and signal processing. They weren't rich, nor did they have high-level jobs in their departments. It felt like they were hired as a 'boffin' and left alone to think up these solutions.

In my industry experience, there is no correlation between programming ability and the level of formal education in the computer science field. In my early days as a software engineer, I saw people promoted past me whose programming was 'not as good as mine' (IMO, of course) - but they had the social engineering skills to work out what were the right things to say to the right people and when. They didn't BS their way up - they could do the job, it's just that other skills (talking to clients, delivering on deadlines, etc) were important too, so they didn't spend 100% of their time coding like I did.

I learned an important lesson - if you have the fire within you to succeed, you'll find the solution, programming or otherwise, to the business problem in hand in order to make your company/department more successful and therefore more profitable.

Of all the programmers I've hired, I didn't care for their education track record. If they passed the programming tests and my lead engineers were happy with their abilities, the education did not matter. One of the best guys we hired was straight out of school - i.e. no degree at all.

In summary, if you're passionate about the technology and the art/science of programming itself, by all means pursue an absorbing and fascinating academic path. If you're looking to go places and be successful beyond just programming, widen your focus to include other skills such as business and psychology/sociology. Decide what you really want in 10, 20, 30 years from now and then work backwards to determine which course of action will get you to those goals.

To answer your question: a PhD is good for something really niche. It probably won't pay well, but it might be interesting.

share|improve this answer
1  
The best answer I've read so far –  Emiliano Oct 8 '10 at 10:43
18  
CEO of a large company who has a Phd? Eric Schmidt of Google. Many though have MBAs. In the medical informatics/drugs industry, a lot of companies are run by PhDs/MDs. PhDs usually are CTOs of a company. –  fjxx Oct 9 '10 at 18:17
    
Yes, an MBA is a better option IMO than doing BS, then MS, then PhD in just Computer Science. Note that Eric Schmidt did Elec. Engineering, not pure CS. –  JBRWilkinson Oct 10 '10 at 18:48
1  
I would think that being a CEO has very little correlation with being a programmer either though –  jk. Nov 6 '11 at 7:59
17  
@PhillipNgan - The CEO of every German car company has a PhD in mech eng, the CEO of every US car company has an MBA. Compare the cars they produce! –  Martin Beckett Jan 18 '12 at 13:46

There is a misconception in the typical developer community that a Ph.D is only required if you want to "teach". Its probably a hang up from the old days when most PhDs used to go into academia, but nowadays many PhDs (specially the engineering/Computer science grads) go into industry either conducting research at labs or doing challenging development work at top companies such as Intel, Oracle, Google, Microsoft, etc.

Especially in the US, with the advent of technology transfer/research idea spin-offs from academia to startups, there is now a strong connection between research conducted at universities and start-ups...Stanford, MIT, Florida, CMU, and others are the popular examples, and no one needs reminding that Google was a research project as well.

Doing a PhD is a personal decision, but it gives you deep insights into certain areas, and enforces a level of dedication and perseverance to battle through tough odds and criticism...incidentally, skills which are also required by start-ups. I am not saying that its not possible to be successful without a Phd..just like self-learned programmers who can code well without going to college, there are many examples of programmers with only a Bsc. or MSc. who have learned advanced tech/CS concepts and have been successful at the best companies around the world.

Overall I think this is a big topic of discussion, but a PhD nowadays is not just for teaching..

share|improve this answer

Advanced degrees (MBA, MSC, etc (that is, et cetera - there's no ETC degree - AFAIK :-)) are useful and sometimes even necessary if you want to be a mid-level manager at a large (Fortune 500) company. PhD's are necessary if your goal is to teach at the university level, or work at a research institute or at the research center of a large company, or if you want a piece of paper to hang on the wall to impress people with.

This is just the view from the center of the country - perceptions on the coasts may be different. YMMV.

share|improve this answer
    
++ Interesting that you bring up the issue of locale. I'm originally from the middle of the US, and there does seem to be a local perspective. –  Mike Dunlavey Oct 8 '10 at 18:13

Well, I went the PhD route (slowly and painfully). I didn't have a "purpose", like how it might help me get different kinds of jobs. I did it because I wanted to know things.

I had been a programmer, and I thought programming was pretty much a cut-and-dried subject, except that I had read Isaac Asimov's book "I, Robot", and I wanted to be able to build robots, and I didn't know how. I wanted to know how to make a computer think, understand natural language, see, walk, etc. The point is there were things I didn't know how to do and wanted to find out.

So what's the result? I learned something about how to make computer programs think, see, etc., but I also learned that these are much deeper and broader subjects, worthy of a lifetime of inquiry. Along the way I learned a lot of theory and math, and learned that there is a great deal more to learn.

I also learned a lot that helps me develop software, which I've written a book and some articles about, and posted on stackoverflow. While I think it makes me more effective, I think it also makes me a bit of a stranger in programming teams.

So did it help? I guess so. I wouldn't want to be the person I was before it.

share|improve this answer
    
Pretty much sure, you're not the only one inspired to enter the cs/robotics/ai field by [the truly excellent] american science fiction books! Asimov's and Sheckley's characters were dealing with robots that were smart but obviously engineered without any 'magic'. And that was fantastic! :)) –  mlvljr Oct 21 '10 at 22:36
    
+1, one of the reasons I want to get a Ph.D. is to just, learn, intensely, for a few years. –  Carson Myers Oct 22 '10 at 4:41
1  
@mlvljr: I might point out that Isaac Asimov and Marvin Minsky both have Russian heritage. –  Mike Dunlavey Oct 26 '10 at 16:43
    
@Mike Dunlavey Hm, did not know that about M. Minsky, interesting. And you possibly knew him, I guess? –  mlvljr Oct 26 '10 at 17:19
6  
@mlvljr: Minsky was my thesis advisor. –  Mike Dunlavey Oct 27 '10 at 12:45

It provides a huge pay increase if you work for the government.

See GS Levels.

Anecdotally I've heard it can make a 30k/year difference.

share|improve this answer

From my personal experience, 3 years of hand-on experience in an IT industry with a graduation or post-graduation would definitely gain more weightage than a PHD.

From the job perspective of the IT industry, graduates from an arts and science background like BSC could definitely opt for a post-graduation degree like an MCA or MSC would act as a catalyst for entering into an IT industry.

In our company, while we used to recruit software developers the minimum requirement was an art and science degree with a proper programming and logical skill graded with practical programming tests but since competition has increased over time, the minimum qualification has been changed to an engineering or a post-graduation degree.

share|improve this answer

I have a M.Sc, it helped me nothing. 2 years of my life lost forever. At least in Romania, in software development, knowledge matters the most. A college degree helps a little and in some specific circumstances.

M.Sc and Ph.D are good only if you have plans in a career in education or research.

share|improve this answer

This is a actually a really tough question as there are going to be a lot of factors at play and they may or may not apply to you personally depending upon a number of variables. In general, when approaching formal education you need to look at your own skills and what your long term career goals are. While some will argue that there is no correlation between programming skills and education, most are hard pressed to argue that education (e.g formal education, workshops, one off courses, reading a book, etc) is going to inhibit your programming skills and in many cases it will actually improve them. Thus, education tends to always work in your favor over the long term.

From a career development standpoint, depending upon who you work for (or who you want to work for) you education will likely influence the path that your career can take. While you can be quite successful with no degree what so ever, you will find that you obtaining your dream job may be highly dependent upon your educational background. This is due to the fact that most medium to large companies tend to require that their employees have some degree of formal education that can be hiring requirement. Thus, for every person that you hear about that doesn't take education into account in hiring, you will encounter Human Resources (HR) departments who will state that "Bachelors degree in Computer Science required" in their job listing and will not even bother to look at a résumé that doesn't include one.

In terms of the educational hierarchy, you can generally expect to see things working out as follows:

  • No Education - If you have track record, this may not hurt you with a fair number of companies and you may be able to go quite far if you develop some fairly specialized knowledge that you can use for consulting. That said though, for every success story that you hear, there are also a lot of developers that you don't hear about that hold down the same job and really don't advance very far career-wise. Networking and social skills can help you in the long run, but you will find that some doors are closed due to the lack of the formalized education.
  • Associates Degree - This is a hard degree to pin down as it can actually open doors and companies that require a Bachelors degree may wave the requirement if you can really prove their worth to them, but most likely it will not get you fair in said companies. This could be a good stepping stone career-wise in that it may help you get a job with educational benefits, but eventually you may find that people start pushing you towards a Bachelors degree.
  • Bachelors Degree - This tends to be the general baseline degree that will open up many doors and generally will not cause any to be closed unless they are for higher level positions which may be dependent upon the industry. In terms of return on investment, you will likely find that the Bachelors degree tends to have the highest return in return for the amount of work that you put into it (financial cost can be too variable to be a factor).
  • Masters Degree - In general, you should not go for a Masters degree unless someone else is paying for it, or you have the opportunity to get it at the same time as your Bachelors degree without much additional work (i.e. a five year dual degree program). In the long run, in the cooperate sector, the Masters degree will open up some doors that may not have been open with just the Bachelors degree, but you may not actually find those doors unless you are actively looking for them (i.e. research and development style positions). In larger companies (i.e. Fortune 500), most of the middle and upper management will have a Masters degree and it generally seen as a requirement to move up in the company. That said though, most companies that have a requirement (formal or otherwise) of a Masters degree for upper management will generally have educational benefits that you can use to get the degree while you are working.
    From an academia standpoint, the Masters degree is typically the minimum level of education required to teach at the collegiate level, but you are generally limited to lower paying lecture pitons that you generally cannot rely upon for steady employment. This might be a great goal for the long term as you approach retirement age, but when you are younger it might cause some stress.
  • Doctoral Degree - If you want to find high level research positions or go into academia, a doctoral degree is a requirement. For everyone else, a doctoral degree is simply a nice to have and in some cases a doctoral degree will actually close doors (i.e. entry level developer positions) for a variety of reasons. That said though, if you really enjoy computer science and really want to learn all there is to know about something, go for the doctoral degree and don't look back. Pretty much every one that I've ever talked to has said something along the lines of the following: "Don't get a PhD for the money, do it because you really love research and knowing all there is to know about something."

To round everything else, here are a couple other forms of formalized education that you may come across:

  • Vendor Certifications - Vendor certifications such as the MCAD or OCPJP have very mixed value as they only tend to be good for a couple of years before the expire and most interviewers don't care about them very much. That said though, if you are looking to move to a different area of development (i.e. Windows to Java development) you may find that they can land you a job if someone is skeptical of your abilities to do the job you are applying for. Likewise, when you are starting out they may help you get that first job if you don't have much formal education, but they tend to have a limited return on investment.
  • Post Bachelor Certificates - These are offered by colleges and universities as a way of formalizing a course of work that may not be worthy of a full Bachelors or Masters degree, but requires some sort of formal recognition. In most cases these are only worthwhile if you are looking for some formal background in an area of weakness on the job (i.e. mathematics) or if you are working in a field where you need some formal education in field you have no background in (i.e. if you are working in bioinformatics you may want take some biology courses). From a career standpoint these may be worth going for if someone else is paying for them, but generally you aren't going to see much value add beyond the knowledge you obtain. The exception to that final point is if you are trying to change careers all together in which case they tend to represent a lower bar than a Masters degree in the field which may require a fair degree of "make-up work" that a Bachelors degree holder in the same field would not have to take.
  • Master of Business Administration (MBA) - I'm including this because it is a common degree to see being held by managers and it isn't uncommon to see developers that are looking to go into management pursuing one. In the long run, it is a degree that can help you but you are likely going to be better off waiting until you have established you career and have a fair idea of where you want to go before going for it.
  • Certificate of Advanced Study - These are offered by colleges and universities as a degree of education that is past a Masters degree but is less than a Doctoral degree. Again, the value of these can be hard to say as they are generally something that is hard to quantify. Most of the people who I've known to take these had very specific reasons for doing, generally for career development, but they were also later in their career and either trying to bump their salary a bit, or get to work on something specific that they couldn't otherwise.

So go come back around to the original point, a Ph.D. can be of questionable value if you are just looking for a job as a developer, but may take you quite far if you want to be working with new technologies that aren't out of the lab yet. Generally more education will not hurt you, but you have to be comfortable with the time investments that are involved with the studies.

share|improve this answer
1  
Excellent, wish to able to +1 more than once. –  Chiron Jan 18 '12 at 23:44
1  
Best answer! Just like Chiron, I want to press upvote at least 10 times. –  altern Jan 27 '12 at 12:40

Not the answer you're looking for? Browse other questions tagged or ask your own question.