Ask HN: Value of a master's degree in CS?
I'm a CS major who's about to graduate. I love programming, and do projects in my spare time. I've completed internships at multiple startup companies. However, I've found web development work boring, and want to do something different. I applied into some master's programs, and was accepted. I have some scholarships for the masters program and no debt, so money is not a problem for me.
But I also feel a little burned out about school. I can do the two years, but I don't know if I'll be happy doing it. I know I'm never going to want to go for a phd.
Those who got a master's degree: what value did you get from it? Did you get it straight out of undergrad? What did you focus on? What jobs has it opened up for you?
12 comments
[ 2.3 ms ] story [ 15.6 ms ] threadProgrammer P1 got a BA in English, worked a few years in sales, doing programming as a hobby. P1 then got a tech support job, and got serious about learning programming on the side. P1 landed an entry level web developer job, and gradually worked from that to more and more serious programming, changing companies a few times. At the current time P1 is a senior level programmer/architect after about 15 years in the business.
Programmer P2 got a BSCS, and a job as a programmer for a few years. P2 then went to back to school for that MS in CS, and then got a new job, and then another, and so on. Eventually, P2 is working at the same company as P1, same job title and responsibilities, also after about 15 years in the business.
P1 and P2 are doing the same job at approximately the same level of proficiency, with about the same amount of experience, and similar knowledge and ability. What's the difference?
P2 is 6 years younger and makes $15K more per year.
In my experience, knowledge gives you ability, but diplomas give you marketability. If you know now that programming is what you want to do, having both is better than just one.
For a corporate programmer, whether you go straight to the MS or get some work experience first, doesn't much matter in the long run. If a PhD and research and teaching are your future, don't wait, get degrees ASAP.
After having done web development - I'm talking front-end stuff here: HTML, JavaScript, CSS and simple business logic stuff with ColdFusion/Perl/PHP and MySQL - I wanted to move on to more interesting things. And that's what the degree allowed me to do. I qualified the kind of web development I did, because there are some very interesting fields on the server side when it comes to scaling things, but I can see how the front-end technologies get boring.
It certainly depends on what courses you are going to take. But if your aim is to get a deeper understanding of more complex problems, I suggest you go for it and apply that rule to the courses you are going to take. Personally I did mainly machine learning and compilers and worked at the chair for distributed systems.
So what has this gotten me? Well, that depends on the way you look at it, but together with my co-founder I'm working on a startup that analyzes location information and motion detection to track user behavior. It's interesting, technically challenging, not a lot of other folks work in this area and we might even make money with it ;)
I'm really enjoying myself and continued to a direct PhD track. It's the best job I've ever had. The work is interesting and the freedom is amazing. Your milage may vary.
I'm not sure what is the "value" of a master's degree is. It certainly looks good on a CV and might help you get a higher rank at some megacorp. Google for example is known to be very fond of advanced degrees. If you want to make software for a living I don't think it matters an awful lot. Particularly in the smaller companies and startups. Taking advanced courses will teach you some new tricks and acquaint you with fields you've never even heard of. You'll probably relearn some things from undergrad and understand the better. But the main point in a master's degree is to get a taste of academic research and see if you like it or not. There are a lot of interesting fields in CS and doing research in most of them is entirely different than being a professional programmer.
My recommendations to you, if you think you might be interested in research: 1. Try to get into a very good university (e.g. http://en.wikipedia.org/wiki/List_of_Turing_Award_laureates_...). No point in doing an advanced degree at a mediocre school. Some of those places only offer PhD programs, but you can leave in the middle and get a master's degree.
2. If you have a specific field that interests you, try finding a school with several professors working in that field. You'll have more options that way.
3. Don't do it if you're burned out! You can get a job instead. If you like learning and solving difficult problems, after 1-2 years you'll probably get that itch again.
4. In my experience 2-3 months of travel is enough to completely recuperate from any feelings of burnout and to start getting excited about "regular" life again. This shouldn't cost more than a few thousand dollars if you fly to somewhere far and cheap.
If you have the patience, time and the skill needed to comprehend advanced research papers or the time to learn more about machine learning / advanced graphics / distributed systems / compiler optimization and other cool stuff, don't join a Masters Program. If no, may be consider joining a Masters program, you'll not regret <-- but do this only after you have worked for a few years.
However, the most valuable part of an advanced degree is building your own knowledge and experiencing new things that you won't necessarily get to experience in a job. You may meet some new friends, you may discover a love for a certain subject and want to position your career towards that field or you might be able to boost your own understanding of the theoretical side of CS to a point where it aids your understanding of programming. That is worth far more than anything an employer can offer you.