Fog Creek Software
Discussion Board

Doing an MS in CS

Why do s/w companies insist on  a BS or MS in CS? I have a BS and MS in Mech Engg and 4+ years exp in application development. I am looking to make a move but most of the good companies reject my application saying that they are looking for CS background. I am seriously thinking of pursuing an MS in CS (fulltime or partime) - at least to know what really is being taught!

Arun R
Thursday, March 28, 2002

for an engineer, i would use this analogy.  being a carpenter or builder is like a skill you learn by trial and error-while engineering is a science based on premises and modelled mathematically.

programming can be picked up relatively insofar as someone hacking out code and getting a working app.  but to understand what's going on beneath the hood (details on how the compiler works or something) adds a level of rigor and allows better time allocation often when you don't go up a blind alley.

of course, that's what people with CIS degrees tell me.  the CIS courses i am taking tend to back up some of that.

Razib Khan
Thursday, March 28, 2002

I'm a quarter way through my part time MS and I couldn't recommend it enough.

Ged Byrne
Thursday, March 28, 2002

{I apologise if this turns up >1 time, I'm having browser issues...}

The only thing I can think of is that most companies think they do wizzier stuff than they actually do.

They want a CS background because their work is SO IMPORTANT it needs someone that understands deep computer science theory.

Only when you get there do you discover the code is actually very poorly written C++ that doesn't really use many of the features and when you say things like "You are aware there are race hazards in this system" people look at you like you're mad and tell you to shut up and get coding, there's a deadline you know.

Come across this a lot: Companies interview asking all sorts of deeply technical questions about C++ - "Why are exceptions a good error handling model", "discuss the advantages and disadvantages of multiple inheritance", "What does <obscure STL feature> do?"

And when you get in there you discover they don't use the STL because they can't handle the copying-objects requirements, they don't use inheritance because it makes the code "too complicated" and they don't use exceptions because the code was started by someone who didn't understand them and it's too late to change now.

Likewise; financial places think what they do is really complicated. So they mandate people need tons of experience in bizarre and highly specialised financial software fields: and when you get in there, you discover they have very poorly written software because anyone with a sufficiently broad IT experience to recognise code smells when they appear fails the specialisation test. They think that understand, say, bond pricing is much more important than things like being able to write code that doesn't leak memory. As a result they have lots of code that leaks memory. That's why they chase after Java or .NET - because they're desperate for a magic bullet to solve this problem of poor software. When the magic bullet is right in front of them: diversity. Hire people that understand the problem domain AND software. Hire bright people - bright people can learn the stuff in no time. Over time this attitude gets them a codebase that they "can't change" and that is poorly engineered.

Companies have an overly high opinion of themselves. They think what they're doing is highly complicated computer science. It very, very rarely is.[1]

How you get past that dumbness, is something else. The only thing we can think of is to challenge them. "I do have a CS background! Go on: ask me a CS question!...get the hiring manager on the phone, get him to ask me stuff!..." but it takes some guts to do that over the phone.

[1] Sometimes, however, it actually is. You can tell these companies. They'll sit on the edge of a university campus, and half the people working there will be doing the work as part of a PhD thesis, and if you ask people what they're working on, the answer will make your head hurt. Your average jobbing software house, they are not. As an aside, the companies like that I've worked for have been very un-dilbert and much more interested in results than procedures, and actually that's a very pleasant environment.

Katie Lucas
Thursday, March 28, 2002

I did my undergrad work in Mathematics.  In the old days, I know that a Math degree was perfectly sufficient to get most programming jobs.  (In fact, before CS departments came into being, Math was the only way to go.)  Is this still the case, or will premier software companies now insist on a CS degree?

Dave S
Thursday, March 28, 2002

Microsoft doesn't as a general rule require a CS degree, though if you are applying to be a developer, you'd better have some understanding of basic CS concepts.

If you are applying to be a program manager (aka software designer) like Joel was, you can get hired with an English degree as long as you exhibit the requisite traits. It just so happens that people with those traits tend to be CS, physics, math, and engineering folks.

Thursday, March 28, 2002

Experience counts more than your degree, most of the time.

Maybe the companies you applied to are on a hiring freeze.

Prakash S
Thursday, March 28, 2002

There is no "rule" anywhere, as there is no real legaility in hiring programmers, as opposed to lawyers, CPA's, teachers, or doctors....

Simply put, in boom times, firms will allow the janitor to write code, b/c they can't find anyone else, ...In bust times, they may recieve 100 resumes for a position, so they can now add filter criteria,,,such as a certain level of degree....

Of course, in my experience, experience is what matters the most.  The highest paid programmer I ever worked with didn't go to college.   

Saturday, March 30, 2002

I've just recently worked on a few projects with some CS Masters and Phd students, and it was amazing how some of them couldn't code their way out of a paper bag.  Some were extremely lazy which combined with their poor coding skills makes it very sad.  However, there were a few who were really excellent coders though.

There seems to be a pattern in my experience while working with graduate students.  Those who had worked several years in companies were great coders and got things done.  Those who got their undergrad degree, went out into the world, couldn't handle the coding in real life and/or couldn't find a job, and came back to grad school hoping that an MS will make them a better programmer are dillusional and generally are terrible programmers.  More schooling won't make them better programmers.  They need to code day and night perfecting their skills, look at other people's code learning from it, etc.

My view of graduate students were suddenly dramatically lowered after working with those individuals.  However, there were the exceptional few whom I admire and try to follow in their steps.

Sunday, March 31, 2002

*  Recent Topics

*  Fog Creek Home