Advice on Graduate Degrees In Computer Science

A recent comp sci grad (BSCS), who was having trouble finding work due to lack of experience, decided to register for a masters degree (MSCS). He asked what I thought about it, especially in light of the dot com bust, and the recent push into offshoring. My response is generally positive.

The fact is, after the dot com bust there was a paradigm shift in recruiting. Previously, companies were just looking for smart, capable people with a solid grasp of the fundamentals. They knew that as technologies changed, so did your job description. When the bust happened, there was an embarassment of riches (i.e., available employees) for recruiters. They started asking for exactly what the position required at that time, usually the exact experience of the person vacating the job. And because of the times, they got it (this famously led some to ask for developers who worked on a technology before it existed). Although things are heating up again, the recruitment practices haven’t changed. I’m looking around now and am running into similar issues, because my experience has been equal parts s/w dev. and project management. Odds are I’ll have to specialize in one or the other before moving on.

There is hope, though. In the ’90s there was an aeropace bust; massive layoffs across the industry. Agent Assassin was an aeronautical engineering major (aero for short). When my school hosted a career fair, with over 100 companies, every one wanted a comp sci major. Only 4 wanted aeros. This led to a collegiate exodus of aeros; many chose a more general major like mechanical or civil engineering (or comp sci!). Now, aerospace companies are having a hard time filling positions with good engineers. The schools weren’t producing them, but the engineers were still retiring, resulting in a seller’s market. The competition is driving up salaries, and my employer is proactively raising salaries for certain employees in order to stay competitive.

Our industry’s bust came around 2000, and I’ve read many articles about comp sci departments not being able to find students. In time, even with the offshoring, we will have a shortage of good software engineers.

I think that for many, getting an MSCS is the right thing to do. For a while now, engineers have found the MS to be a professional standard, while scientists required a PhD. But advanced degrees were often a curse for software developers, with employers valuing real world experience above all. I think that’s going to change over the next decade. Offshoring is driving US companies to be innovators, keeping the more advanced/important work here. So getting a masters will help you compete globally.

Right now, it can be hard to find an entry level job. This because if you have a good, well rounded CS education, you are a tech generalist. And they’re unemployable until they get 20+ years of experience, at which point they’re really experts in everything! So an MSCS is a great opportunity if you manage it well. But that requires knowing the real reason you’re there, a point which escapes many grad students.

When my manager got his MSCS at USC, he noted he could have chosen classes for the entire degree without learning anything new. This is because for many schools, once you graduate with a BS, you are a “grad student”. You are not allowed to get a second BS, you must get a graduate degree. Since this could very well be your first experience with CS, they allow you to get a general education covering the fundamentals. If you have a BSCS already, obviously that would be a waste of time and money. Instead, you want to specialize in something you are passionate about. By specialize, I’m talking about things like:

Networking
Databases
OOAD/Design Patterns (perhaps even this is too general)
Embedded Software
AI
Human Computer Interaction

You know the drill – the major topics under the CS umbrella. That expertise will be your key to employment. As much as possible, your graduate education should mimic real world experience from a well managed career. And that experience will probably be focused.

This means that if you have a choice between creating a thesis, and taking extra classes, always go for the thesis! At the very least, you can tell people you are a published author. More importantly, you will have a concrete project to show to employers. Even better, doing a thesis (that you chose yourself, instead of taking the first thing your prof. suggested) is an awesome way to create the ultimate class, learning what you’re most interested in. I think that passion is critical for success. It’s cliche, but enthusiasm is contagious, and employers love it. It will come across in interviews when you start talking excitedly about your work. And they’ll want that enthusiasm – and expertise – on their team.