Talk to me programmers!
April 12, 2013 10:19 AM   Subscribe

Is it worth changing careers, getting a masters in CS?

I received a BS in mechanical engineering from a decent state school. I currently work as a mechanical engineer at a small capital equipment company, making about $60k a year. I've been at said company full-time for about 2 years. It was my first job out of college. I've always been into computers, and I've done a decent amount of programming at my current job (mainly PLC and HMI programming), which I find to be fun and interesting. I've been fantasizing about going into software development, but I have some questions about it.

Is it worth getting a masters in computer science? If so, is it worth paying for a degree at a higher ranking school if I can even get into one? I have a pretty good record: 3.9 GPA, undergraduate research experience, 3 years work experience including 2 internships I did in college. I took the GRE without really studying and scored 500 verbal, 730 math, which I think is fairly average for engineering students. I think degrees in ME/CS would be an interesting combination, but I also still have $20k in loan debt to pay off from undergrad.

OR should I just hack it and start programming for fun in my free time and try to develop a portfolio? All the programming I do now I learned on the job. I've read that a lot of programmers don't have degrees in the subject. Would I get paid a lot less (vs. my current job and vs. degree'd people) starting out without a degree?

If you're in the industry, do you like it? Do you find it to be flexible in general (work hours, can easily switch jobs, work from home, etc.)? Do you think it's more profitable in the current climate to start a business that offers software products/solutions instead of hardware?
posted by nel to Work & Money (17 answers total) 16 users marked this as a favorite
My MS CS absolutely helped me when I was getting started. It was definitely a leg up.

You said "paying for a degree." If you get a teaching or research assistanceship or fellowship, you won't have to pay for your degree; instead tuition will be waived and you'll get a stipend. I had a research assistanceship during grad school; my job was to do research for and to write my thesis, which supported the research of professor in a totally different department of the school. You're not limited to research that people in the CS department are doing. Your ME background means that you could probably do some cool interdisciplinary stuff.

One caveat is that you will have to do post-bacc work to catch up with all the people with CS degrees. Algorithms, data structures, discrete math, that kind of stuff. If you'd have to do that stuff before being accepted into graduate school, that would be out-of-pocket.
posted by zsazsa at 10:31 AM on April 12, 2013

It really does depend on what you're trying to do. I have a MS in CS, but my bachelor's was also in CS, so for me, the incremental benefit of the MS was probably small. (HomeBoy Trouble's analysis suggested a roughly 5% increase in pay for a masters.)

But I think there's actually some good parallels between your situation and mine. After my BS degree, I was an ok programmer, but not a good computer scientist. That's not to say that most people aren't good scientists after a BS, but I wasn't a great student and I changed majors a lot. However, after the MS, I really did understand the concepts much better.

If you're self taught, and you want to really get deep into the understanding of computer science and programming, an MS might be worth it.

If you're trying to get into software development, employers will probably be impressed enough that you're multidisciplinary already. And most actual software development training comes on the job (how to unit test, document, use source control, etc.) and not in a university setting.
posted by thewumpusisdead at 10:32 AM on April 12, 2013 [1 favorite]

I'm a BSCS with 20 years in the field, working mostly on embedded systems.

From reading your track record I'd say there's a lot more fun and challenging things you can do in the industrial automation area. I know a lot of programmer-types that could handle a PLC or HMI but wouldn't know squat about making a factory fixture out of it, and vice versa. If you have both sets of skills at the same time, I'd think you were pretty valuable. You just may be in a position that doesn't appreciate that.

I also know some MEs that are making bank working with PLM software, bill-of-materials management, CAD data migration, things like that. But I'm guessing you're not going to find that as sexy. But you wouldn't need to grind through grad school, just some outside courses and perhaps some certifications.

In my opinion an MSCS isn't going to help unless you really want to get into an area of CS that's algorithm and data heavy. The rest of it you could learn on your own in your free time, making little projects and putting source code up on GitHub. Just my $0.02.
posted by JoeZydeco at 10:39 AM on April 12, 2013 [3 favorites]

This is completely anecdotal, obviously, and I don't mean it as anything but an anecdote, so take it with a big heap of YMMV:

In my company, the average programmer has about one and two-thirds degrees, of which about a third of a degree is a comp sci degree.
posted by Flunkie at 10:47 AM on April 12, 2013 [4 favorites]

As someone with an undergraduate degree in CS myself who has worked with a variety of software engineers with credentials ranging from high-school-only education up to Master's Degrees in CS, I would vote for option 2, program for fun and develop a portfolio; perhaps by substantially contributing to an existing open source project so that you can demonstrate the ability to take up a code base which someone else has written and achieve mastery over it.

(One caveat to what follows: although I continue to work on the borderlands between IT and software development, I have not been involved in any hiring decisions post-financial-downturn.)

The thing is, someone can go through an academic computer science program and gain lots of good insight, knowledge, and experience relevant to software development, or they can come out with almost no practical skills whatsoever of value out in industry. It depends both upon the student and the program.

So unfortunately, a degree in CS from a university program unknown to the person doing the hiring is not a really great way to judge someone's ability or potential; and consequently, investing further tens of thousands of dollars in such a program does not seem like a wise bet to me.

Up-to-date private certifications relevant to a job you're trying to get, like some particular Microsoft certifications if you're working on Windows software, can be a way of demonstrating due diligence - and well-designed curriculums can actually be pretty good at giving you a thorough overview of relevant topics whether or not you actually go and pay to take tests and get certified - but even they still aren't a great way to judge an unfamiliar person's aptitude compared to being able to articulate and converse about relevant experience you've had.

I think you're sitting pretty well with an undergraduate engineering degree if you can pair it with demonstrable self-taught proficiency in programming and software development. (And you don't have to advertise that you're self-taught, you can let it be assumed that you have more coursework and on-the-job experience than you really do.) If you don't have specific industries you're targeting to get a job in I'd say strike out on your own, see where you end up, and then invest in the Master's Degree if it turns out it will be helpful for your career advancement there.

(And even if you do have some particular field in mind, do some research: you might even be better off with demonstrable software engineering proficiency and an entirely different degree in something germane to that industry.)
posted by XMLicious at 10:52 AM on April 12, 2013 [1 favorite]

(That said, I have also encountered people who make hiring decisions based on what seem to me fairly weird standards. Once I was working with a senior team leader at one of my clients who liked me enough to praise my acumen in the software systems we were working with and general development skills. Out at lunch one day he was talking about some hiring process he was conducting and saying how flabbergasted he was at the questions his interviewees couldn't answer, and I had to tell him I wouldn't be able to answer the same particular questions off the top of my head either... finding a job can suck and some people you just won't be able to satisfy.)
posted by XMLicious at 11:01 AM on April 12, 2013 [2 favorites]

I think your undergraduate degree is fine. I think the main problem with people without degrees or with non-CS degrees is that they can't get interviews in the first place. For them a CS degree might be a good thing. You, however, have an engineering degree, which is generally in the same family.

I've never got the whole "portfolio" thing. I've never interviewed a person who had one (that I can recall). For an entry level position I care about (a) are you smart (b) are you trainable (c) do you annoy me. For senior position I want experience. Beginners can get by on enthusiasm.

Now, how to maximize your learning.

If you know Java you can probably be reasonably useful in C# relatively quickly and vice versa. They are the same language, but they are very obviously related. Unless you have a huge amount of time, I don't think you need to learn both of them. Knowing C++ will also let you move to either Java or C# without an enormous amount of pain, but there will be some changes you have to make to your way of thinking. C++ and C used to be much more closely related than they are now and there is some merit to learning both.

PHP and JavaScript have their uses, but are probably more limited. Many companies who do JavaScript programmer (we do, for example) just need someone who can hack on JavaScript rather than someone who actually knows it really well. YMMV.

Python is a nice language, but I don't know how many companies have it as a core technology (as opposed to something they use in some places). It's a nice learning language, however, so it might be worth giving it a shot.
posted by It's Never Lurgi at 11:16 AM on April 12, 2013 [1 favorite]

I would check out this article at

Do something intensive to get up to speed and then get working. So my vote is to just go do it.

If you search metafilter you will find a number of people have asked about programming and the best way to get into the field, whether it is enjoyable etc.

Stuff changes quickly. Formal certification gets you in the door but then you still have to keep up. The general take is that people hire you on the basis of what you can do and not your academic background.

One caution is that it is a fast-moving feld: if you can't teach yourself new things, I would say it is the wrong field for you.

There is a lot of flexibility, excellent mobility, etc. to answer your lifestyle questions. In my experience, it is NOT a 40 hour work week.
posted by PickeringPete at 11:32 AM on April 12, 2013 [2 favorites]

The thing is, someone can go through an academic computer science program and gain lots of good insight, knowledge, and experience relevant to software development, or they can come out with almost no practical skills whatsoever of value out in industry.

This. In my city (Edmonton, Alberta), the diploma issued out of our technical college is more valued in industry than CS degrees, because coming out of the technical program, students can really jump in and DO STUFF. My diploma was 2 years and cost me maybe $10,000. I am a junior and just got a very good job (however, our economy here is fantastic).

My point is, don't put yourself through a masters in CS if you can avoid it. Find out how the people in industry in your location have been educated. If you don't want to it the self-taught, portfolio way, try your local technical school.
posted by kitcat at 11:33 AM on April 12, 2013

Yes, a coding bootcamp sounds like an excellent idea too.
posted by kitcat at 11:34 AM on April 12, 2013

I find that especially in the technology field, a advanced degrees aren't necessary. A bachelors degree isn't a hard requirement (especially in smaller/startup types) if you know your chops.
posted by wongcorgi at 11:35 AM on April 12, 2013

I'm a programmer with a math BA. I've hired maybe 10 or so programmers over the years. A bachelor's in CS or a related field (for which mechanical engineering would probably qualify) was definitely a prerequisite. A master's would have seemed like overkill, but these were basically entry-level positions with an expectation that the candidate would use it as a step up to something (or be content with secure entry-level work, due to family commitments, for example). That said, I recently recommended a guy with a PhD for this position and have hired people with master's-level educations.

To me the bachelor's simply signified that the person had the 1) analytical chops to get through all those courses and 2) the diligence to finish a degree.

On top of that I'd ask for code samples. Not a portfolio, just an example of something non-trivial you've written that works and demonstrates your familiarity with language X and programming generally.

So I guess it depends upon what you're looking for. If you're trying to do something more computer-sciency (like, say, AI research) I'd consider the master's. If you just want to get into beginner's web development, a master's seems unnecessary to me.

(I've myself considered getting an MSCS, but my concern has always been that it would either end up being irrelevant or would just recapitulate something I learned in the course of getting my math degree. I've never seen it as a way of improving my employability.)
posted by seemoreglass at 11:39 AM on April 12, 2013

When I was in CS grad school, those attending with me consisted of PhD students who either had full fellowships or teaching assistanceships, and Masters level students whose tuition was paid for by their employer, which leads me to believe that if you're going to pay for yourself, you're doing something wrong.
posted by Obscure Reference at 12:11 PM on April 12, 2013

In my limited experience there is also an issue of the company in question and who is doing the hiring. Managers and non-technical people are the ones that I've experienced being more focused on degrees, where as most of the technical or development types I've worked with only care about seeing what you've done/can do. Whereas management has more of a traditional business focus, all of the development/programmers I work with are pretty much focused on show me some code you've written and/or "here's a test problem, how would you solve it?"

It seems to me like you are probably very self-motivated and a self-starter, and I would agree with those who say that unless there is some specific area of computer science, etc. that you wish to pursue that would really require a graduate degree, you are probably better served by just focusing on learning/building on your own, etc.
posted by BigHeartedGuy at 3:00 PM on April 12, 2013

The "software industry' is not a well defined entity for your question, it ranges from excel macro writing through defining an API for a conceptually new goggle service that changes parts of the world. It's also very localized, in silicon valley for some jobs an advanced degree may be essential for other vast swaths it would be redundant or even make you seem over qualified. The advice above, that I'm trying to push myself into, is submissions to open source projects. Although the 'good projects' seem to require a significant effort to become fully involved. I'd also consider putting out feelers directly, while there are great scary blogs about tough interviewing situations there are many people that get great software jobs by coming across smart and reasonable during an interview.
posted by sammyo at 3:41 PM on April 12, 2013

nel: "Is it worth getting a masters in computer science? If so, is it worth paying for a degree at a higher ranking school if I can even get into one? I have a pretty good record: 3.9 GPA, undergraduate research experience, 3 years work experience including 2 internships I did in college. I took the GRE without really studying and scored 500 verbal, 730 math, which I think is fairly average for engineering students."

It's in the ballpark, however, you'll likely need to bone up on discrete math. I made the mistake of not prepping at all for the GRE after a CS bachelors, and the math section included a only stuff I hadn't seen since high school or freshman year of college. And never saw again while in the MS CS program. So it depends a bit on the kind of degree you're after.

nel: "I think degrees in ME/CS would be an interesting combination, but I also still have $20k in loan debt to pay off from undergrad."

My general opinion is that if nobody's paying you to to grad school, it portends a bad future. It seems like you're primarily after a credential, not exposure to MS level education, so if you're really set on this and can't get paid to learn, perhaps a 1 year post-bacc certificate like the one my employer offers is worth a look?
posted by pwnguin at 11:26 PM on April 12, 2013 [1 favorite]

pwnguin, thanks for that link. I have thought about Mills's post-bac in the past, and am curious about other similar programs.
posted by brainwane at 7:04 AM on April 14, 2013

« Older Your recommendations for cheap, slim/straight...   |   I think I'm living with a reptile? Newer »
This thread is closed to new comments.