It’s graduation time again and that reminds me of a particular experience as a hiring manager for a company that was small and highly technical. The structure was pretty flat: there were only a few managers in a company of 30-ish developers and they wrote code everyday too. It was an extremely productive environment.
We were looking for people who were bright and could either write great code, or learn quickly. The pay was good. We had people with bachelors and advanced degrees, with no experience to 20 years experience+. Basically, if you could make it past the gauntlet, you were in. And, like most coding shops, we were constantly hiring.
I found out that the local university was holding a job fair for their computer science department, so the Operations/HR person and I packed up some banners and things from their trade show materials and went over.
We stood at our table along with other companies as the soon-to-be-graduates made their rounds. The people graduating with their bachelors were as-expected, overall bright and motivated, and we pinpointed a couple to do callbacks.
For some odd reason, there were more people who were graduating with a masters degree than a bachelors there. Not sure if there were more masters graduates than undergraduates (really weird!) or whether the MS people were just having a harder time finding a job (my guess).
I watched one exchange between an MS graduate and our HR person:
MS Grad:“So, do you have any jobs for Masters Degrees?”
HR: “Absolutely! We hire people with masters degrees or with bachelors degrees – we don’t really care so long as you can write good code.”
MS Grad: “Oh… “ [wanders off]
That disinterested and entitled attitude mirrored my own conversations with the MS grads.
Being the technical of the two, I would talk about how we had a great flat structure, how we were given the freedom to write great software and how gratifying it was to work with other smart people. They, in turn, would ask about management positions and architect positions.
They expected that since they had a masters degree, they would automatically be put in charge of the lowly bachelors degree people. And from my brief technical discussions with them, they were not nearly up to even working with us, much less managing. The lowest, most junior developer at our company could out-code and out-design them any day of the week.
Now, if we would have hired a MS grad, they most definitely would have received a higher offer than their bachelors degreed counterpart. And they would have been thrown onto a moderately complex (read: interesting) task without as much, or any, mentoring as a completely inexperienced junior person. And honestly, having the advanced degree probably would have allowed them to move up more quickly into management than someone else. The workplace was progressive in some regards, but old habits die hard.
But based on their general lack of impressiveness, not a single MS grad of the many many that came to our tables got a callback.
When I discussed my experience back at the company, someone mentioned that maybe it was because it was a local university, instead of a top school. But I don’t think so: the undergraduate students were a reasonable pool of candidates, and we found a few possibilities, and they were better than the MS grads.
I’m sure that there are plenty of very smart and very innovative MS grads out there, but I think it makes sense that they would be snapped up before having to make the rounds at a career fair.
The reality is:
There is no shortcut to being a manager, and definitely not a good manager.
There is definitely no shortcut to being an architect or technical lead.
And there is no shortcut to being a decent programmer.
What is a MS in Computer Science worth? The knowledge you take from it of course, and not a penny more.

I have found a second factor at play when it comes to advanced degrees — more so, perhaps, with Ph.D.s. And this issue is interesting because it involves biases and stereotypes on both sides of the hiring table.
The emphasis of many advanced degree programs in CS (especially at top schools) is on research. In part this is because research is a focal point of academic careers, and in part because the people responsible for teaching in these programs are lifetime researchers themselves.
As a result of this emphasis, I’ve seen two things:
1. Many people who matriculate from such programs are hoping to get a research position. Sometimes that is because that’s what they really want to do. Sometimes it’s because they’ve been told that research is what they *ought* to do.
2. Many people responsible for hiring view advanced degrees as a warning sign that the candidate is “too interested in the theoretical” or “more concerned with abstract problems than business problems”.
Regarding candidates who are looking for research positions, I’m not in the least surprised to see them walk away from an opportunity that doesn’t fit there goals. In most cases, letting them walk is probably the best thing you can do. I wonder, though, if there is an opportunity to entice a few truly gifted people away from the academic bias toward research.
The second item is a little more concerning. I certainly wouldn’t count an advanced degree against someone. On the other hand, I would certainly tailor the interview differently. Very early on, I’d try to find out what a PhD’s career goals and technical interests were, and immediately weed out the ones who really were only interested in theoretical research. But it’s worth keeping in mind that the commitment and educational attainments required of MS and PhD candidates are valuable. If you can find a good mesh of expectations, interests, and skills, you can certainly make a better hiring choice with an MS or PhD than with someone having only a Bachelor’s.
There’s a reason why Google and other big names prefer developers with advanced degrees. But there’s also a reason why they spend so much of their interview cycles focusing on practical aspects of the job.
As someone pursuing a Masters in CS at a top 10 university let me give you what students are looking for.
You again equate programming with CS. Even though you mention “company that was small and highly technical.” It does not gives me an idea regarding what company did. Well if it was a job for making some back office application (even though its technical) not many people would be interested.
The last thing I want after my masters is a dead end programming job! A programming job at a smaller company (by small i mean both by Aspiration or Size) and where programming is nothing but writting hightly complicated ‘hello worlds” or enterprise fizzbuzz does not interests me. I would be willing to work at a lesser known but aspirational and visionary startup.
Finally here are the list of jobs ranked from Most interesting to Least Interesting:
1. Facebook / Twitter / Linkedin any engineering position, I would be prefer Data Analyst/ ML though
2. Soft. Engg. at Google
3. PM or SDE at Microsoft (even SDET) or Yahoo or Amazon, HP, Dell etc etc
4. SE at Oracle
5. Name any upcoming startup such as Yelp etc (Willing to work for a considerably lesser pay)
6. Financial Software developer at some Boutique Trading firm
7. SE at Bloomberg and kind
8. Mid size “Traditional” Company such as WebMD, EMC.
9. Deloitte and JPMC and others (mainly Tech Analyst jobs no core CS)
10. Some lesser known mid size company/contractor
11. Your type of company which has reached critical size and yet hasn’t got a Facebook/Google like future.
12. Glorified Mom and Pops Dunder Mifflin or Sabre printers
Finally, Let me give you a perspective, I the smallish company i am joining hasn’t got a massive aspiration, I see no point joining a just another programming shop, I would rather join a Large company like MSFT with no flat structure but with a nice name to put on my resume.
I haven’t mentioned defense contractors since i am not a US citizen.
Frankly I would pursue a PhD if top 7 choices dont work out
[...] John Trupiano points me to a related post about the sense of entitlement that often comes along with a CS degree. I think what we’re [...]
“You again equate programming with CS. Even though you mention “company that was small and highly technical.” It does not gives me an idea regarding what company did. Well if it was a job for making some back office application (even though its technical) not many people would be interested.”
The place did have issues (everyplace has issues!) but did not relate to the type of work or money. It was one of the few jobs where you get to do graphics programming and still make good money (unlike video game programming), so I thought it was awesome work. However, most of the people I talked to were not interested in hearing about the work, but about what awesome position in the company we would offer them.
By the way, there are many many benefits that a small, very profitable company can offer that a big name company like Facebook will not. Money is a big one (you know, lots of it). Freedom. Room to grow. Your list makes it seem like maybe you’d prefer to name-drop than advance your technical skill. Not sure if that’s true or not, but that’s not the road to success by any stretch.
“The emphasis of many advanced degree programs in CS (especially at top schools) is on research. In part this is because research is a focal point of academic careers, and in part because the people responsible for teaching in these programs are lifetime researchers themselves.”
This research/practical issue didn’t come into play for these MS grads because they were on the business track, instead of the research MS – PhD track. Although for them to have such a one-track mind for management, I did get the feeling that some ill-informed career services person had given them the wrong impression about life outside school.
Well said.
The difference between an undergrad and a graduate student is their understanding of Information Retrieval. To an undergraduate, information retrieval means being able to write SQL. To a graduate student, information retrieval means inverse indexes, cosine similarity, etc.
“What is a MS in Computer Science worth? The knowledge you take from it of course, and not a penny more.”
I have an MS in CS and have been coding for 15 years now. MS degrees, in general, focus your attention on a few key areas of concentration and a thesis, but they don’t teach how to code. Students who do the best, and write the best code, tend to put in the most effort and passion. They end up teaching themselves how to code by working on the assignments, projects and papers that require some demonstrable example of their work. A student just sitting in class, absorbing material, won’t be good at doing practical work regardless of degree. Consequently, its not what you “take” that makes the CS degree valuable, its what you put into it.
But don’t expect that a graduate student is going to be remarkably better than an undergrad at writing code. A lot of these students are working in a vacuum, with very little code being written as a part of a team (who they could learn from) or for practical purposes. Many of them aren’t going to code nearly as well as a developer with just one year of experience of writing code for 8 or more hours a day on one project. You are going to spend a lot of time teaching any recent graduate how to write commercial code.
I know of a few people that have sworn off hiring PhDs due to their lack of ability to program anything. Yes that’s a broad brush, but an advanced degree can often be taken as a warning sign.
On a personal note, I do have a MS in CS, and for a lot of programming it’s pretty much worthless. An MS, or even a BS, won’t help you program a web app, mobile app, or pretty much any user interface. During school, I learned most of my programming skills doing independent study and open source projects. But when it comes to much of what I’ve been doing lately (machine learning, natural language processing) the MS experience and CS theory turns out to be quite valuable.
I absolutely agree with Andy. There is also a vast difference between someone with a CS degree (any flavor) and someone that has no degree but has been coding in the real world for 10+ years. There is a large difference between theory and real world and the data you see in both. I’ve seen and MS make wild fudge factors and call it good rather than actually code the math to get it as accurate as possible. I’ve seen degreed engineers need help figuring out how the real world works… that whole disaster recovery thing etc. There is a visible gap between knowledge and experience in programming as with anything. An MS in CS does not mean you are qualified for anything in the actual real world. An MS and 5+ years experience does. There’s 10 years… meanwhile I’ve been coding and working with real world problems for that whole time – so who is qualified? Toss a coin, or take a hunch. Being able to code your own Fibonacci sequences is impressive… not too useful. Understanding statistical data models is good… not necessary for real world. If you can get the same approximate results for 30k/year less, who do you hire?
Answer: The MS in CS who will work for nearly nothing – our education system is screwed!
I used to be a manager. I was amazed at the number of CS graduates who are not interested in writing code. They all want to be managers! Most of them couldn’t ode their way out of a paper bag. they likely do belong in management.
I actually enjoy coding more than management, and just resigned from a large (and well regarded) company to work at a smaller place, where I may (gasp) actually spend more time writing code and mentoring than attending meeting after meeting.
I hope my new employer is like Amber’s company. Or is Amber’s company.
BTW I have an MBA and a MS in CS.
Eric
Agreed with most of the points, but Amber, a solid academic background is a great addition to an awesome programmer who has enough experience, isn’t it?
I think your experience is interesting and there are certainly those with unrealistic expectations of the positions they might obtain given education/experience but I think it is very naive to make sweeping statements about the value of an MSc/PHD.
Some pursue education (BSc, Msc, PHD, certification or other) to obtain knowledge they feel they are missing, some seek acknowledgement of the knowledge they have, some have a keen interest in the subject matter and enjoy the learning process and yes, others enjoy the academic environment.
Thing is, there are a wide range of people who pursue further learning (formally or informally), for a variety of reasons, and from a range of backgrounds.
The other side of the coin is that there are a variety of companies, each with a different focus and with a different cultures etc.
At the end of the day, its about finding an employee that is a good fit for the company, and a company that is a good fit for the employee. While educational achievement and an accessment of experience is useful, it will always be subjective as to who is better equiped to perform a certain role.
I don’t want to take away any of the accolades that should be given to a college grad. It’s hard work and you deserve to be congratulated. However, you just cannot skip any steps on the ladder. Everybody starts at entry-level. If you’re smart, you’ll get that entry-level experience while you’re still in school through an internship or job, so you can hit the ground running when you’re free to go full-time into the workplace.
Graduating with a college degree gives you experience in analyzing and solving problems, planning your work, meeting deadlines, and (hopefully) working with others. Good grades show you can work well in that type of environment. It gives your professional career an added dimension that those who have not finished college may never get, and you deserve to be compensated for your extra effort. (Apologies to those who don’t like that our society (marketplace) still values (pays more) for college degrees.)
If your interests take you toward research, by all means, go for it. You’ll need advanced degrees, and you’ll probably end up either at a university as a teacher, or in a lab somewhere. Coding will be a small tool you use to prove hypotheses and models. Your code will be functional, but not necessarily well-crafted. That’s fine. You’ve chosen to be a researcher, not a software developer.
For those who love software development (I’m in this group), you’ll learn far more about good software development from mentors in your workplace and your own experience than you ever did in your college classes. When you have to answer the phone at 2am and login (or, yikes, drive to the office) to figure out why your code (or, just as likely, your co-worker’s code) blew up, and how on earth to get it running again before 7am when the business of the day has to get going again, you’ll appreciate tips on how to write defensive code. They really don’t teach that in college.
CS and engineering grads don’t usually get any training on business affairs. We tend to come out of school with a “the best technology will win the day” attitude. But on the job, we learn the real reasons why the vinyl disk beat the wax cylinder, vhs beat beta, Windows beat OS/2, and BluRay beat that other thing. They don’t teach that in engineering school.
To sum up, a successful college career lays a solid foundation for any career path you choose from there. It opens doors that our society leaves closed to some people. Research-oriented people may benefit more immediately from their degrees, but EVERYBODY has to start at the bottom and work their way up, learning and growing from the experiences on the job.
I don’t agree very much with most of what is being said here. As someone with as many degrees as the next guy (BS, MS and a PhD) and 20 years as a software developer, I think that hiring an MS degree as if he were a BS with an addition two years of coding experience is wrong on all counts. Is like your saying “If I hire an MS, I will pay a bit more because he should be able to write 12% more COBOL than an BS, who can produce 20% more COBOL than a technician”.
Starting your MS’s off as code monkeys like everyone else is neither good for them nor good for you. They are unlikely to exploit anything they learned while doing their degree, and you will just have a high priced code monkey – and in the end you will be saying “I will never hire an advanced degree again”.
A MS is suppose to be a degree for an advanced practitioner (not a researcher). If you believe that the only thing you need to know about software is how to structure source code (as I think Kent is saying) then there is not need to look for an MS graduate. An advanced degree is useful where theory and practice meet. For example, one day I was faced with the need to implement a random number generator and found that I had to convince others that there was even is a problem. When developing software, without sufficient level of theoretical knowledge, problems like this are not even a blip on the planing screen. In the end, the program will just be wrong and it is likely that no one will even understand why. Throughout my career as a software developer this scenario continues to plays out again and again. People without the background will not pickup on theoretical points, and mentoring and googling won’t help. You have to have the theoretical knowledge and know how to apply it.
My point here, is if you need someone with an advanced degree, look for someone with an advanced degree. And of course, if you are looking for an advanced degree, you are likely to be looking for one in a certain domain, so a MS walk-in might not be what you want.
Second, I take exception to the idea that advanced degree people are bad programmers Again, there are bad and there are good. When I was doing my MS, most to the students I was with had done a lot of programming as part of their thesis work (and I considered them to be good programmers). But we should recognize that CS (as a discipline) is trying to distance itself from the image of the CS graduate as a “hacker”, since there are far more non-programming positions in IT departments than there are programming ones. The “non-programmer” CS graduate label applies equally well to BS’s as it does to MS’s.
So in the end, I think if you are hiring programmers – as described in the original blog text, you are likely to excite BS’s more than MS, simply because thats what you are looking for. If you are looking for people with advanced degree I don’t think you need to propose management posts, just interesting problems and a bit of recognition that their degree is important and appreciated.
“So in the end, I think if you are hiring programmers – as described in the original blog text, you are likely to excite BS’s more than MS, simply because thats what you are looking for. If you are looking for people with advanced degree I don’t think you need to propose management posts, just interesting problems and a bit of recognition that their degree is important and appreciated.”
I find this post to be well-reasoned, but dismissive of the term “programmers”. A great programmer does apply theory with practical coding (as the MS person was described). And in this example, we solved complex mathematical and spatial problems with custom algorithms, data structures, etc. It was far above what the “typical” BS grad would be comfortable with and probably more in the realm of MS grads actually. To me, the issue is that we were not willing to roll out the red carpet for them.
You mentioned “bit of recognition that their degree is important and appreciated” and that’s definitely not what we were offering, because we don’t care. Show me something interesting you learned there or show me how passionate you are. And if it turns out to be more than the BS grads I’m talking to, I’ll definitely be interested.
Just because you show up with a piece of paper I’m supposed to give you a special job? That’s the same entitled and delusional attitude that many BS grads have that they expect to be handed a cushy job on graduation. It’s only interesting if you learned a lot and can apply it, but you still have to prove it before I’ll be impressed.
To me, the discussion / debate of the usefulness of advanced degrees is no different than the value of certifications….and of course many of us know that conversation. Those haves always value what they’ve achieved more than the have nots, and of course the reverse is true. I agree with Anon that if he’s coming from a top level program, he will have high expectations. And of course, those of us in the real world know that certifications, advanced degrees etc. don’t always correlate with good, effective people.
I’d just like to say good luck to Anon — I hope you get what you are looking for and in my opinion there is no substitute for hard work — I 110% agree with Amber that there are no shortcuts. If you wind up at the place job you are hoping for then most everyone will be smart, hungry, and ambitious.
Ok, there isn’t a shortcut to be a good programmer, but trainning can help so much.
I’m talking about Coding Dojo: http://www.codingdojo.org/
We have a great community here at Rio de Janeiro/Brazil and Coding Dojo helps a lot – we can see big differences in some months. Our meeting is called Dojo Rio: http://dojorio.org/
And you – do you train? Or do you think programmers should not?
Wow! Long time blog follower, first time comment diver! And dive right in I will.
In reference to the underlying “Does the paper saying ‘degree’ matter?” question. I have to quote a professor at my college (I’m a BS grad) “The world of programming/development is not suited to the world of degrees. Computer programming/developing is a trade by nature. Degrees can show you have been exposed to a range of ideas/theories/practices, but it doesn’t guarantee you’re good at applying them”
Since then, I’ve learned another piece of why/how degrees can be good. Alot has been said about “PHD degrees = higher research desire” I would like to suggest, in my experience, “BS Degrees = higher coding desire” and “MS degrees = higher office management (and politics) desire” There are always expections, but some of the comments above back it up.
A BS grad will usually be looking for a fun and challenging work place. If they were properly exposed to team coding in school, they will also be eager to find a team-focused environment. A good portion will also have “resume worthy” aspirations, but it’s not #1.
An MS grad will usually be looking for something to put on his resume. They’re usually willing to “work” longer hours and with more stress so their resume will become fat and pretty. And they are likely more prepared for office politics then the BS grads. I’ll avoid the soap box at this point.
A PHD grad will usually be focused on a small area he wants to be part of. When you have so many years studying something, you usually have a more detailed plan. Whether it’s research, innovation, or just insanely awesome code development/architecture, they have a specific area they want to make an impact in, and they want to make a huge impact in it.
Each of these can be helpful and useful (except the office politics…. Just my opinion) to creating an amazing CS department.
I will say one thing about experience. In my opinion, in the CS industry, experience isn’t a guarantee. One of our TAs in college told a fellow student he wouldn’t grade her work because she was using Camel Casing, and he knew that the only way to properly code was if everything was Pascal Casing.
The CS industry is constantly evolving. Yeah, there’s still COBOL job openings, because some companies have a “If it isn’t broke, don’t pay to replace it” mentality. But the companies that are on a “Change for the sake of change” trip are always looking for “bleeding edge” technologies. (Did anyone else wonder how the CS world went Emo? Or was that just me….?) If some new awesome CS thing came out 1 year ago, then someone with “experience” in the new technology/process/idea that graduated 2 years ago can have the same amount of experience in the new thing as someone that graduated 15 years ago. In the CS world, you’re ability to learn new technologies, and avoid “tradition” ruts is far more valuable to me then if your first coding job involved punching holes in cards and looking for moths in the tubes. Though, to be honest, I don’t think you can call it a true/complete CS team without one of those “In my days…. Commodore 64s…. Room-sized…” members.
To end my first foray into the comments, I will make one potentially biased opinion. Google hires PHDs, yes, but they focus their hiring on one specific college. The mythical Stanford. And it’s just as much because that’s the Google creator’s stomping grounds, as it is Stanford’s high level of CS PHD talent. Though Google development is much more Algorithm and Information Management focused then most places, and thus they present a wonderfully enticing environment to turn theory into reality. As mentioned earlier, that plus the obvious boon of having “Google” on your resume, creates quite the carrot for PHD grads. Yeah, there was sadness/bitterness when I realized my meager BS degree wouldn’t get me in the door of Google without a miracle, but I haven’t given up on it yet. Just moved the Google-goal to “long-term” dreams
Hi,
I found the topic interesting. This is my 2 cents (some of these are based on my experience in my country). The average life of the average programmer is to write a desktop, web or mobile application using tools that already exist such as Hibernate, Spring, JSF etc. Many of them do not even know how to write a simple regular expression (a domain of Automata Theory). The typical habit is to google it. Don’t get me wrong I do not support reinventing the wheel. However, when google cannot solve it then somebody needs to be called in to explain the fine points of computer science. And most times these people are advance degree holders. It definitely helps that the advanced degree holder can at least write a simple hello world in at least 1 programming language. But why you get the “Oh” response is because they feel their skill sets can be put to better use designing algorithms, solving issues like scalability, transactionality, concurrency etc. I am just saying.
One thing to keep in mind, many BS grads will just go back for their Masters if they cannot find a job after graduation. So in a perverted way, you can end up with MS students actually being poorer candidates than BS students. That of course is not to imply that all MS grads fall in that category.
There’s physics and then there’s electrical and mechanical engineering.
Computer Science != Software Engineering.
A linguist might not speak or read a second language, a musicologist might not be able to play any instrument or sing.
“Dueling Banjos” comes to mind since there are a lot of people who are “uneducated” which can play back any tune you mention and start resolving chords, doing variations, and turn it into a fugue complete with inversions and retrograde while you sit there and listen. Most have no formal schooling in music.
Whatever it is that makes programmers great is a skill, and it is (for lack of a better term) “right-brained”. It can be developed, coached, but not learned by any rote method. How do you end up being a great writer of code? Write code – any nontrivial code. It will start bad. Then it will get worse as i,j,k become 40+ character names, monoliths will become atomic fragments – but you will eventually figure out how to structure and name things at the golden mean for perfect clarity.
Generally speaking, the talents and skills required to get an MS or PhD in Computers are disjoint with those required to actually develop software for use.
Two decades ago, AI was supposed to replace experts with expert systems. Didn’t happen, though some useful things were created. But something – maybe what was described in Malcolm Gladwell’s “Blink!” was missing.
If the degree is in musicology, it probably can use a multiple choice or essay test. If it is in violin, it needs the Bach Chaconne or something by Paganini.
Code is the kind of art the belongs in the latter category.
You guys are nerds.
The country is on the verge of economic collapse, fragmentation, civil war and martial law, and you are worried about what you are going to do in your cubicle someday.
Wake up
-BS physics and MSEE, now a farmer