Advanced Degrees for Software Developers?
DagnyJ asks: "I am an Undergraduate planning to pursue a Graduate Degree in Software Engineering and Design. The question is whether to get a Ph.D. or a masters degree. When pursuing a career in this industry, is a Ph.D. going to make much of a difference in opportunities over a Master's degree, or would it be better to get out of school fast and get some real experience?" It's an ever popular question for college undergrads in their senior year. With the change in economic climate, maybe staying in school for a few more years might not be a bad idea.
What do you want to do as a Computer Science graduate?
Do you want to code and hack? Get a job right away.
Do you want to do research? Check out PARC's employment page.
An advanced degree will not get you any further than a bachelors in JoeSchmo Bank. But you won't even get talked to without one if you want to work in a research center (HP, PARC, MS Research).
Dancin Santa
Way way back in the early 1980s my family took a vacation on the Shetland Islands, north of Scotland. One day my father got talking to an old crofter. After a while the crofter turned to me and asked how old I was and what my trade was. I told him I was 13 and that I was still in school. He said "What do you you want to be in school for, at your age?".
I have a masters degree (Mathematics). For as much as it was a fun way to spend the time, it has had no bearing on my career whatsoever. In fact, apart from getting me in the door at a few short-sighted companies, my undergraduate degree was pretty worthless, too.
My advice: go get a job. What do you want to be in school for, at your age?
--
Yes, the nick is flamebait
My best advice to you is this. Only go for a PhD if you feel you can make a meaningful contribution to the field. Do not expect more money or more opportunities. Sure, you could perhaps find better opportunities with a PhD but the odds aren't for it. Instead, you'd be better off making money with an MSc and building up your experience that way.
--
Oceania has always been at war with Eastasia.
Honestly, get real-world experience just as soon as you can. You should have started before you got into college. Finish the masters if you feel like hanging around, but I have seen it make little difference in the actual job market. Get the PhD., though if you are rich and can afford a research job.
That being said, you MUST get the experience. Even in a pure research environment it helps to understand what outside factors and demands exist.
*whup* "Get along, little electrons. Heeyah!"
An advanced degree is an indulgence if you want to work as a software engineer. Do it if you want to, but don't expect it to improve your salary. The only thing that counts is years "in the real world", i.e. writing code for a customer or product. I mean that literally. If someone is trying to hire a software engineer with five years of experience, then six years in grad school and one year of experience will usually not get past a screening of the resume.
A Ph.D. can actually be a hindrance. If you get one, many potential employers will view you with suspicion for a number of reasons. The attitudes I've seen are that if you have a Ph.D. you must:
- think you're too good to write code, fix bugs, write release notes,
etc.
- be lousy at writing code.
- be incapable of writing efficient code.
- be more concerned with cool ideas and theory than shipping
a product.
- have outrageous salary demands.
- have a problem dealing with holders of mere B.Sc. and M.Sc. degrees.
I have never seen these sorts of concerns applied to candidates with an M.Sc. degree.I'm definitely not saying that you shouldn't get an advanced degree. I really enjoyed it, and I think the quality of my work (including code) greatly benefits from my education. My point is that potential employers may not see it this way.
I'm also not saying that you should go get a programming job right out of high school. Learning the basics of complexity theory, data structures and algorithms, compilers, databases, numerical analysis -- typical undergraduate courses -- is really important if you're going to be a serious software engineer.
I seem to remember him having a rant on there about the diminishing value of a graduate+ education, but I can't seem to find it now, and the content I'm thinking of seems to have been folded into the page above. *shrug*
DO NOT LEAVE IT IS NOT REAL
According to Fred Brooks (yes, that Fred Brooks), you shouldn't do it for the money. You'll spend more in tuition and lost income for the years you're in graduate school than you'll regain in increased salary. His suggestion was to get a PhD in Comp Sci if you can't bear the idea of not getting a PhD in Comp Sci. IOW, do it if you love it and are willing to take the hit in lifetime income.
If you come to me as a PhD with 20years of industry experience I'll see you as a wizened (wisened?) veteran who care share some real insight with myself and my team. Then again I might see any guy with 20yrs experience that way, the PhD would be extra in that case.
As for masters? I was at a college recently, doing some recruiting. When I saw bachelors kids I tended to think "Ok, entry level, we'll start him off as a junior programmer and give him the scut work." Masters students tended to make me think "Ok, here's a candidate to go right into our core team and be given some responsibility." Why the difference? In our case it's primarily about design skills. If you know how to code, I'll have you write code. If you know how to design a system, I'll have you doing that. In general I found that the masters guys had more experience to backup their claims of knowledge. The BS ones said "I have experience in Z" when they meant "I've downloaded the free Z compiler." Masters students who said that meant "I had an internship at Oracle where I implemented the following project in Z."
Just my experience. There have been entry level kids come in and wow me with their experience (although not many, there's less of you out there than you think). And there have been masters holders who don't know which end of the monitor is up. Make of it what you will.
An interesting question would be, what about somebody who gets a BS but has the experience of an MS? My answer would be "I'm not sure that's possible. If you really have equivalent experience, then why don't you have the degree to back it up? It's more likely the case that you think the cases are similar, but they're not.
In the interests of full disclosure : I have a bachelor's in CS. I spent 3 years at a small company as the only (hence, "lead") programmer, then 2 at the company that bought them where I became the team lead by nature of my expertise on that system. I had about 8-10 years experience in the field before circumstances turned me into the manager I am today.
www.HearMySoulSpeak.com
My advice may be a bit old, since I went to grad school in 1987, but when I was going to grad school in CS, pretty much everyone there originally entered because they were going for their Ph.D. The school didn't accept very many Masters-only students simply because their philosophy was 'if they're going to aim low, they can aim low somewhere else'.
Granted, about half or maybe more of said students ended up taking the Masters consolation prize and leaving (your author among them), but out of 100 grad students or so, maybe 5 of them entered with the intention of just getting a Masters. This was just my experience, YMMV, Insert Disclaimer Here, etc.
---
At least mafia-owned pizzarias make excellent pizza. Compare to Bill Gates.
Either a PhD applying for one of your jobs really matches your expectations, in which case you shouldn't hire them, and if you do, it should quickly become clear how incompetent and conceited they are. Or he/she really is competent and interested in doing a good job instead of covering his ass, (which seems to be your main concern), and he/she probably does deserve to have your job.
You basically admit to discrimination (emphasis added): "My fear is that if I hire a PhD ... With an MS degree, this problem is reduced and with a BS it is eliminated."
Or maybe your posting is a troll. OK, well you got me.