Web Development

Is a master’s in software engineering ever necessary?

Porfirio Partida Developer at Nearsoft

June 1st, 2015


After reading this article, I am curious what others think about getting a one-year masters in software engineering right out of college. Other than an increase in starting salary, what else can a masters in software engineering do for engineers in the workforce? Is a master's degree worth not going right into the workforce after a traditional 4 years at university? 

#1: If I were looking at a candidate with a Master's and no work experience vs another with a Bachelor's and a year of demonstrable experience, I'd choose the guy with experience, easily.

#2: Venkatesh makes a really good point that the Master's program might teach you theory that you will not get in real-world experience in a short time. so if you want to do heavy computer sciency stuff, then go for the Master's.

Barrett Sonntag Developer, Tech Evangelist, Entrepreneur

June 1st, 2015

No, and I agree with John Petrone that this is two questions.

To be more specific, are you asking about a Masters in Software Engineering, or a Masters in Computer Science? Both are very different deep knowledge paths, both very valuable in different arenas. Software Engineering is macro, focusing on the architectural structure. Computer Science is micro, focusing on theoretical software.

Now, necessary for what? To get a higher salary? To work on making web or mobile business apps? To write drivers, video codecs or distributed computing management software? I don't think either are an absolute requirement, and in the long run getting neither will not limited a determined person. However they are a strong indicator of wading through a lot of work, and that you will have an advanced understanding of the language needed to communicate with others in the field. I would go on to say that I imagine getting a degree will open those doors a little quicker at the beginning. After several years in the industry the body of your work matters more and more. In the end the experience of earning that degree needs to be something you want for yourself, because after 10, 20, or 30 years of development it will mean much less than the time you've spent cranking out code.

Nothing learned in the classroom is inaccessible outside it, but the general path of Computer Science opens up opportunities in lower level programming. Working on rendering engines, computational algorithms, working on the Linux kernel. Those things require a very different deep set of knowledge than doing web development, or mobile development.

No, if you're going for personal development you can go just as far without the degree. If you want to open up doors early on then I can only guess it would be easier with a degree. I didn't go to any college. A few years back I went to school full time while still working full time. I enjoyed learning what I did, but it just wasn't compatible with my life. The best time to do the degree is now, if you want it, do it now and you'll never regret it so long as you don't expect it to be your golden ticket.

Jason McClellan Sr. Systems Engineer at Discovery Communications

June 1st, 2015

I am likely biased as I did not complete a CS degree. My experiences are certainly not definitive nor do they represent an absolute reality.

However, as someone who has been in the industry for around a decade as a developer, as a dev/team lead, and as a hiring manager, education is generally the last thing that I care about. I certainly will take notice if I see a candidate with a degree from CalTech or MIT or perhaps masters or Phd in mathematics from another school, because those are noteworthy accomplishments and can demonstrate unique value. Generally, though, the only thing I care about is your experience, your problem solving ability, and your code itself. Personality, of course, is huge, but we'll assume that's a given and we're only talking about hard skills.

If I were looking at a resume and one had a one year master's degree in software and another had a github account full of open source contributions, I'm going to look more favorably at the latter than the former unless my needs were uniquely tailored to a particular educational background, eg: hiring for a data scientist or machine learning expert. 

I always prioritize people who have a passion for code, who do it on their free time, and who have a large array of projects that they can talk about enthusiastically rather than someone who went through the paces to get a CS degree but doesn't seem to exhibit intrinsic passion for the field.

So, what I guess I'm saying is that it wouldn't be a bad thing to do in and of itself, but it is 1 less year of work experience you'll have as you do the master's program instead and the return on investment might not be there.

As for salary, positions generally have a budget and if I like you, I'll pay you what you ask for if it's within budget and I think your experience and ability to contribute (which is a subjective measurement that I would make based on your background and from my interviewing of you) matches it accordingly. If you asked for $100k right out of college with a CS degree, but struggle with basic programming tasks during an interview (unbelievably common, alas) then I'm not likely to see the value from my end as the one doing the hiring.

Venkatesh Tatineni Lean Startup Engineering , Mobile Applications, Data APIs, Scale

June 1st, 2015

Ill keep my answer short in the interest of time.

The most important thing a good master's program teaches you , is deep math that helps you be equipped to understand subjects and applications in machine learning, run time of algorithms etc. You can exist as a software developer who does not have this depth and still make a good living. If thats all you want, then you dont need a Masters. But if you want to join the engineering teams that require that depth (google, fb , linkedin) etc, then a master's will help a lot. Ofcourse you can learn the deep math with some assistance from sites like khanacademy. But they dont fully replace the well rounded curriculum a good program offers.

David Schwartz Multi-Platform (Desktop+Mobile) Rapid Prototyping + Dev, Tool Dev

June 1st, 2015

With the emphasis that employers are placing on tool stacks today, I'm not sure education even rates that much. They certainly care more about tools than overall abilities and depth of experience and expertise, which totally baffles me. 

In other words, they don't seem to care that I may understand software configuration management issues inside and out (which I do), but are far more interested in whether I've got lots of experience using git or some other vcs tool -- which, unfortunately says virtually nothing about a candidate's understanding of SCM. Especially with these kinds of tools which are usually set up then only used via a "get" and "put" kind of thing (and even some dev environments are building these actions into them so they're invisible).

I wrote an entire GIS system for a project once, but because I've got no hands-on experience with any of the "popular" GIS tools, I cannot get work with anybody looking for "GIS expertise".

I implemented an RTSP/RTP/SIP stack last year, but because it's not part of any well-known tool stack, nobody seems to care.

So I simply don't see the value in more "book theory" when employers are hiring almost exclusively based on tool stack experience over anything else.

David Schwartz Multi-Platform (Desktop+Mobile) Rapid Prototyping + Dev, Tool Dev

June 1st, 2015

BTW, I'm not even aware that anybody is offering a MS in Software Engineering. Computer Science, yes. But given the lip service most employers seem to pay to so-called "modern software engineering disciplines" like the use of design patterns, unit testing, and developer-side Agile (that embraces CI, unit testing and refactoring as an integral part of their dev processes), it's hard to see what value additional theory is going to bring to the party if it's never applied. 

Maybe deeper experience with some math stuff might be helpful, but that's only going to apply in certain application domains.

OTOH, a one-year Masters in something specifically geared towards "scaling up mobile platforms" could be incredibly valuable to lots of companies today. Is anybody offering anything like that?

Venkatesh Tatineni Lean Startup Engineering , Mobile Applications, Data APIs, Scale

June 1st, 2015

Bottom line is, an advanced degree does give you the advantage in the long run. It might not be a huge factor in getting a job right now, especially if you code well and have good analytical ability. But as you mature as a developer and want to do bigger and better things, you quickly realize that your ceiling for theoretical math is too low, and will spend time to learn on your own. If you have the money ,  not in a terrible hurry to start earning, and are enthusiastic to see how deep the rabbit hole goes, I'd recommend it. People that display the trait to of being patient and gaining depth are the ones that generally fare well at building simple solutions to complex CS problems in the real world. 

John Petrone CTO at LaunchPad Central

June 1st, 2015

This seems to be two questions combined - 1) Should a software engineer get a Masters degree? and 2) Should you go to graduate school right after undergrad, or go get some experience first?

I'll answer the second question first - IMHO if you want a Masters in Computer Science the best time to do it is right after your undergraduate work. Unlike let's say an MBA, where you want to build on top of real world experience, much of the focus of many masters in CS programs is more on the theoretical. I don't think a few years of work experience will help that much and as others have said going back to get your masters after you are engaged in a career of building software is a lot harder than you might think.

Regarding the first question, should someone get a masters, I think it's all about what that individual wants from a personal learning and from a career progression path. There are certainly jobs in the industry that really require a very strong theoretical background in computer science - but most do not. So I'd think clearly about where you want to go and what you want to do. As a hiring manager I'm always impressed by a masters in computer science - but candidly my highest paid and most senior engineers over the years usually did not have one.

Karl Schulmeisters CTO ClearRoadmap

June 1st, 2015

Guys - Masters in Software Engineering is NOT a "Masters Degree in Computer Science".

MS Eng - is a specific type of MEng degree and is a more practical "hands on" degree.  - since they are typically 1 year long, they typically involve 4 graduate level classes typically oriented in a speciality - and a project/mini-thesis

MS-CS - OTOH typically is someone who has completed the graduate coursework for a PhD but for whatever reason has not done the Research Thesis (anything from they didn't get good enough grades in the course work to stay in the program or their thesis was rejected or their thesis was taking too long, or they just didn't want to do a thesis).

So an MS-CS is much much much more theoretical than an M-Eng.

M-Engs are good for one of three things:

  • your BSCs degree is from a school that isn't as strong in the marketplace
  • The job market is weak and you improve your hiring competitiveness
  • You are looking to get a focus in a particular area of specialization that you did not have time for in the normal undergrad program.

And example of the last currently are areas like Machine Learning (ie Big Data), Robotics (where you can take basic courses in the mainline curriculum but there is a lot of higher math that is really needed that you only get at the gradual level),  Machine Vision, etc.

So in the end, my recommendation is somewhat similar to the above.  If you want to do one of the specialities but not a PhD in that area - do the MEng focused in that area

If your Univ for your undergrad degree is weak - do the MEng.

but otherwise just get into the market and get experience

Tim Scott

June 2nd, 2015

A new startup, TripleByte, founded by an early YCombinator partner aims to make a science of technical hiring. Their beachhead is hiring engineers for YCombinator backed startups.

They believe that education is pretty well irrelevant. According to their FAQ: "We don't ask about your education or work history. We want to assess you entirely on your ability, not background."

Technical hiring is hard as hell. Many people can talk the talk, but don't produce much. Many people can solve algorithmic puzzles quickly but can't name things. All kinds of biases creep in.

Completing a masters degree is certainly a marker of intelligence and discipline, which probably has some correlation with an ability to ship good software, but it's probably a rather weak one.