I think there are a few issues here. The author points out that there are masters programs springing up whose purpose is to generate revenue. One of my professors calls these mercenary-masters. Often times, these programs segregate their masters students from their undergrads and PhD students - giving them special courses meant for that median mercinary-masters student. That makes it easy to weed out the worst offenders and these programs can be seen as less valuable than a undergraduate degree in CS.
But to put a counterpoint on it, undergraduate education in CS can also be highly variable. My university used to require 20 courses, but because so many other schools required so many fewer, they adjusted down. Heck, most schools don't require students to take operating systems (something that stuck at my school). So, even within undergraduates, I'd say there's a decent difference between someone who took 12 courses, avoiding harder ones and someone who has taken a harder program. In some ways, the same thing that is driving these mercinary-masters programs is driving departments to encourage and keep lower-quality undergraduates within the department.
One of the big problems is that there are a lot of people that want to retrain for software engineering jobs. Yes, they could learn on their own (and many do), but some like the classroom and some like the perceived safety of a piece of paper from a university. We could call these programs post-bac, but that's a lot harder for someone to market on their CV/resumé. So, what is someone that wants to retrain supposed to do? There are undergraduates coming out of top schools with 10-course majors in computer science (including required math courses). As long as the courses are taught at the same level, there's no reason that someone should be able to retrain with those same 10 courses and be seen as having gotten the same education.
So, getting back to the issue at hand, I think there's an issue of whether any CS credential carries the same weight. We only demarcate a few options (BS, MS, PhD), but within a BS, there's huge variation that isn't captured by GPA given that so many schools allow students the option of skipping the hard courses and going with electives like "Web Engineering with Rails" and "Mobile Apps for Android". But part of it is that those course titles offer something that is of value to a lot of companies. For both of those jobs, you don't need to know how a TLB works or why a B-tree is better when doing disk IO. It can be helpful, but there are a lot of jobs that don't need high CS skill.
Maybe the issue is that we don't generally have Software Engineering degrees. There's overlap between software engineering and CS, but I think there's a decent difference worthy of demarcation. Technology is seen as a good path today and I think some of the harder pieces of CS get some people discouraged out of the departments. That usually gives departments two options: water down the major or have fewer achieving the major. Maybe a balance could be struck, maybe a software engineering degree would be the way to go. Maybe universities in America need to start offering MPhil degrees (a research masters) to make the distinction.
But, even if that distinction were made, some schools would be offering software engineering under the CS name and students looking for a fancier piece of paper would send their money that way. We don't have anyone like the AMA dictating standards as they do in medicine. But maybe this is better. Maybe this means that we need to actually look into candidates rather than relying on one piece of paper.
I agree. As a hiring manager, credentials like BS/MS (and GPA) can be helpful, but truly are low value compared to what you have learnt.
Their knowledge, problem solving skills, 'soft skills' and ability to quickly learn areas they have gaps in are what make them effective. How they acquired them and 'prove' them are all I care about. Part of the onus on me is to tease that out in my short-listing process and interviews and part of the onus is on them making it easier for me to see it so they jump out for me as quickly as possible.
As MS in CS degree holder, I strongly agree with the article re: the idea that coursework-only MS in CS programs are less worthy that programs that include a thesis. I say this as a MS holder who did not complete a thesis and regret it (much more than leaving grad school, which was the right decision for me).
I did (thankfully) participate in research, so I can always talk about the research work even without a publication track record. I have published since in different formats, so that worked out.
But, and this is a crucial issue, a MS in CS of any type helps get you past the HR filter at big companies. When I completed mine, it meant a significant boost in starting salary right out of the gate. If you're looking to join IBM or Microsoft, you probably need to think hard about that signaling credential . . .
Ignoring the disconnect between the academic CS experience and the reality of what most CS programmers work on in the day job, the biggest challenge I see for new practitioners is building a portfolio of software work that a hiring org can understand well enough to make a hiring or interview decision on. How do you communicate that ability and drive to hiring managers outside of your personal network? Do these combined BS/MS programs (e.g., a year of additional coursework to finish off a coursework-only MS) or simply hitting grad school still work better than saying, hey, here is my open-source implementation of path expressions for concurrency control in Common Lisp?
Your comment about the HR "filter" is precisely the reason I'm pursuing a MS in CS after getting my BS in Economics. Many job posts specify either a BS or MS in Computer Science as a requirement. So even though I have a very solid BS in Economics (lots of statistics and math and an excellent GPA), I wouldn't necessarily get through HR to the hiring manager without the all-important CS diploma. Plus, even if the MS in CS isn't as rigorous as some Bachelor's in CS are, if it covers the fundamentals, I don't think it'll hurt me. And yes, I'm also developing my own projects in addition to doing the MS in CS. I know that it takes a combination of education and demonstrated capacity (i.e., developed projects and code) to really do well in finding a decent job.
I'm curious where you're applying that this is the case; I'm pursuing an undergraduate degree in Literature, one of the most oft maligned fields by STEM-types, and not once (to my knowledge) has it been looked down upon. Most people I interview with seem to place a value on having teams with diverse backgrounds.
To be clear, I agree with your assessment that diverse backgrounds are valued. In my opinion HR "filters" and, more importantly, hiring managers want to see diverse backgrounds supported by robust signals of ability: projects created or contributed to and academic credentials. I think you're best off if you have all three: diverse background, demonstrated ability, and academic credentials.
That said, I'm sure there are employers who will give developers a shot even without an sort of academic credential, but they're not very common in my experience.
Now I'm curious where you're applying as I have degrees in philosophy and law and find that my lack of a CS (or related) degree is a major hurdle to finding a job in software.
How the heck did you end up here? Do you learn coding on the side? I've tried to get one or two of my english majors friends into coding, since I thought it'd be a good complementary skill set, but it didn't really catch.
If you're really good at coding I don't care about the lit degree. I just don't like liberal arts majors who think they're better than me because they don't have to worry about money. :/
They profess to be above such concerns. Having to worry about food and rent money is too mundane for such a sophisticated mind, didn't you know? Less readily disclosed is the fact that their parents are paying for everything but maybe the beer money. And yet they still claim to be "putting themselves through college"...
As a MS in CS degree holder (did research, wrote thesis ish report), I also concur. Coursework only MS holders have a fundamentally different degree from the research/thesis degree.
As part of my MS, I did build a portfolio of work - well - a project ! - that I've used in my interviewing process.
And, oddly enough, serendipity is that it had to do with concurrency and was written in Common Lisp.
The consensus here seems to be that, unless you want to do research and publish papers, a Bachelors in CS is a terminal degree. Is there really no room for formal exposure to advanced application of what the researchers are researching?
If I think machine learning sounds like an interesting approach to solving problems, are my choices really limited either to seven years of academic research or to teaching myself this stuff from whatever materials I can cobble together in my spare time?
The point is that practical experience in a Master's that offers research work is more valuable than a coursework-only Master's. Graduate courses are usually easier to complete than undergraduate courses, and they are excellent for complementing a research program.
If you want to do machine learning, go and do a Master's with a thesis option where your advisor does research in machine learning project and where you will be encouraged to publish your work at conferences.
To my mind research is fundamentally different from (and antecedent to) application. I assume (perhaps mistakenly) that there are areas of knowledge that are both potentially useful to solve problems and difficult to access/learn on ones own. Why is it not reasonable for that advanced knowledge to be collected, distilled, and taught?
Further, from my brief exposure to a CS grad lab, research occurs in very narrow areas, often on things with no discernable utility, where all work is essentially throw-away, and where the only goal is to publish a paper. In contrast, I want to build stuff, possibly hard stuff, stuff that someone would use; and that may mean learning things (not discovering things).
From the perspective of industry, practical experience building research toys is generally more valuable than either book learning or course projects, because you are forced to come up with and implement novel solutions and because you ultimately have to make something work in order to get the degree. This is the value of a Master's with a practical thesis.
It's not that the advanced knowledge isn't taught in a graduate program, it's that a formal research project where some or all of the advanced knowledge is applied is seen as a great way to integrate everything, and it's completion is a better marker of autonomy than course project completion. Of course there are professors doing useless research, so find someone at a school doing something that interests you. Or get hired by a company and learn on the job. Or start a side project. Yes, academia can be a waste of time if you don't actually like the work, but depending on what you want to build it might be the easiest way to get there. Grad school is generally an opportunity to become an expert in the field that interests you, and the production pressures of industry might preclude this.
In my experience, employers care more about research than you might imagine (for reasons the other replier has mentioned).
That said, a coursework MS will make you generally much more attractive to employers. It's just that they will interpret the degree as more of a signal of your capability and intelligence (and this effect is greatly underestimated by HN) than an indication of any specific expertise.
So with a coursework masters, you stand a chance of having generally great job opportunities, but you may be disappointed that you are not eligible for the most interesting jobs, even though they are related to your coursework.
There is a third kind of meaning to an MS-CS degree.
For international students, it becomes significantly easier to get work authorization and permanent residency in the US if they obtain a higher education degree (basically an MS or a PhD) from an American university.
This is one of the main reasons that students from India and China in my university who have a BS and already have very employable skills still go for an MS.
Even if you don't have an American degree, it helps for immigration purposes. For example, I have a Canadian MS, allowing me to apply for a green card under the EB2 category. The EB2 category has an expected wait time of about a year as opposed to the EB3 category (if I only had an undergraduate degree), which would have a wait time of around 5 years.
Interviewees are never representative of the people working in the field: you're selecting for the people who don't have a job (that they're satisfied with).
People with CS degrees who can't code are more likely to be out of work, or to be in low-paying jobs, and therefore more likely to be applying for jobs.
The article isn't so much about the perceived value of an MS/CS in the job market as it is about the author's unhappiness with what an MS/CS means these days- less often as researchy prep for a PhD, more often as a BS/CS++. He also complains about the fact that there are students getting their MS/CS that don't have a BS/CS, therefore sometimes have fewer CS fundamentals than their undergraduate counterparts. I have a feeling that most of the comments are going to be about whether or not someone with a BS/CS should go for an MS, but that's not what the article is about.
As a BS & MS in CS degree holder, who did not have a thesis option, I agree wholeheartedly. The article mentions that the coursework programs are basically extensions of undergrad, and that certainly applied to my program. I was a bit non-traditional, as I did my MS later in life and as a working professional (8 yrs after finishing my BS), so I wasn't expecting the full-time deep dive experience anyway. I tried to take advantage of the time I did have though and both refresh my knowledge of CS and extend it in a few areas (mainly, learning functional programming and knowledge of language and type theory) Unfortunately, I didn't get to do any research, but I am trying to make up for that by applying to a post-masters advanced study certificate program.
I also had some folks in my program who were, in my opinion, definitely not graduate-level material (a point made in the article as well). I feel like I have a strong CS background and can take things to a higher level, but because of the weaker folks, some of my classes were (to me) watered down and ineffective and thus not challenging to me.
Their lack of understanding of CS fundamentals is probably why they are taking the MS in the first place. I would assume they would have improved by graduation.
The post, and the one it comments on [1], bothers me for a few of reasons.
One: As an MS in CS holder I certainly worry that my degree is perceived as worth less, if not outright worthless. I worked very hard for it and am proud of my accomplishment. It represents a great deal of sacrifice. It also represents the 30 credits of undergraduate coursework and six credits of graduate coursework I completed before entering a graduate program. Of course, Ms. Lerner would see the MS on my résumé and throw it in the rubbish pile.
Two: According to Prof. Regehr's second point, training in public speaking and writing is an important aspect of a research-oriented master's program. I already had a B.A. in Journalism so I was pretty well covered on both of those points. And, since I was working full-time, with a child on the way, I was plenty mature. A coursework-oriented degree is what I wanted.
Three: I violently object to the denigration of MSCS holders based on the limited experience of a recruiter. Maybe Ms. Lerner is unable to attract more qualified candidates, and so she's extrapolated too liberally. Her arrogance is what I find most offensive.
I did a coursework-only MS in CS, and I think it was a good move for me. In particular, because:
1) I was able to work full-time while completing the degree, and my employer paid for the tuition.
2) I don't have a BS in CS, but I do have a semi-related BS in engineering, so getting a second BS was not a very attractive option in terms of time or money.
3) I came away with a formal CS credential that will allow me to get past HR screens. I've already had a few recruiters from well-known tech companies contact me since adding the CS degree to my LinkedIn profile that I don't think would have noticed me before.
Does having the MS alone put me on the same level in terms of overall knowledge as the average BS in CS holder? Probably not. I definitely noticed that some of the graduate-level courses I was taking seemed to be easier overall than what I was used to from some of the undergrad courses I had taken in CS. But at the end of the day I did learn a bunch of new stuff, and I know that I can fill in any gaps remaining through self-study or resources like Coursera, so I'm not too concerned.
Getting the degree for free made all the difference though. I wouldn't recommend paying full tuition for one of these programs, which the author agrees with.
As a non-CS grad, I may be biased, but I think fields like math/CS/physics/engineering are closely enough related that good skills in one make it much easier to learn another. The idea that you have to have a bachelors in CS to get good use out of a masters doesn't apply to everyone.
At my University in the UK (Warwick) we have three Physics courses:
- BSc: A 3 year taught course with some of the final year devoted to research.
- MPhys[1]: A 4 year taught course that is essentially a longer version of the BSc with good chunk of the final year being a research project (some UK universities have an even larger portion of time in the 4th year for research)
- MSc: A 1 year master's course focussing entirely on research (no exams) designed as a follow-on to a BSc.
In the UK, an MPhys is understood to be different to a MSc in the level of research achieved and teaching received.
In Australia, a follow-on year with a research component is called "Honours". You "only" get a Bachelor's degree, but you can attach the honours statement to it, including the classification (first class, upper second class, lower second class, third class).
Same in South Africa. BSc honours is required if you want to do a masters or anything further. In the sciences, a BSc on its own only qualifies you to be a lab tech.
Here you can go to Masters with a straight Bachelor's degree; but to get into a PhD program you need to take Honours. (I was encouraged to take a PhD and decided that I am tired of poverty).
In a lot of ways, what you just said IS what he's complaining about. There is a money to be made selling watered-down MS degrees to people who don't really care about the knowledge, and universities that succumb to this temptation end up devaluing those degrees by doing so.
If someone is getting a degree just to pad their resume and fake out a potential employer, they're doing life wrong.
MS in CS here. We all know we did it for the diploma: employers value that MS degree, so it gives you a better negotiating position in pretty much every hiring/selling scenario.
As someone with a BS and MS in CS (having written a thesis for the latter), it was amazing to see how weak some of the other grad students were. At my school, many of the foreign grad students didn't have an undergrad CS degree and it showed. This isn't a knock on foreign students, just an observation that they comprised the bulk of the grad students who took the path that omitted the undergraduate work and consequently exhibited shocking failures to understand CS basics.
I'd certainly think very hard about hiring a MS-only candidate, particularly if he/she didn't have publications.
As someone who has studied in the US and France, informatics and computer science are the same thing. Informatics is generally a European term and computer science is used predominently in the US--not sure about UK. There could be slight nuance of definition (infomratics not being hardware based, and CS starting with transistors), but my experience, both covered hardware and software.
So I think you're the perfect candidate for an MS in CS.
What worries me more are the options mentioned in the article and the comments for non-CS/informatics degrees to do an MS in CS. Maybe there is some thinking that someone with a BS degree in any science shouldn't have to do undergrad CS work, but it seems to me they should earn a BS in CS not an MS. I also get that some cross-pollination between similar fields (say robotics and CS, applied math and CS, etc.) can be beneficial to the students and the program in general, but make those students take extra undergad courses to catch up. Dumbing down MS coursework for non-CS people really defeats the purpose of the MS for everyone. That would be my main issue with the topics in the article (having a research-oriented and a non-research MS seems fine to me).
That said, it was different than Computer Science. Besides one introductory programming course, there was no programming required. Even for our capstone projects, wireframes were sufficient. We didn't actually need to code anything.
My main concern with doing an MS in CS is that I wasn't exposed to a lot of traditional computer science concepts, such as operating systems, hardware, compilers, algorithms, etc. And the highest level of math I've taken is Calculus I (and a 300-level statistics course which was frankly a joke).
Thanks for the link to the curriculum, I haven't looked into CS education in a long time. My observation is that CS is getting to be a huge field. There was a time when it wasn't much more than OS and compilers (I exaggerate). Now they try to cover the more recent (web apps) and more practical (database retrieval) topics that are directly applicable to new hires. I think that's fine, and your curriculum certainly looks robust (and has some very relevant new topics such as "information ethics and policies"). However, I would still expect you to be able to program after your 2 programming and web technologies classes. And those intro to programming classes are pretty light if they did not cover algorithms.
To take a recent example here on HN: did you cover big-O notation? To me that is fundamental, and the BS programs are cutting corners if they're leaving that out.
The programming courses I took were Intro to Programming I & II. I don't remember many details (has been almost 10 years), but the first one covered basic object oriented programming concepts in Java, and the second one talked about more advanced topics like data abstraction and encapsulation - stacks, queues, linked lists, binary trees, recursion, etc.
I'm generally worried about two points I'm deficient in: subjects that require formal education (I don't know if I can learn about compilers on my own, for example), and subjects that require advanced math.
Without knowing what program you've been through, what program you're planning on entering, and what focus or purpose you have in seeking a MS in CS, I can only describe things based on the program I went through.
A student ought to have studied and understand discrete math, data structures, and fundamental concepts of computing and programming languages. CS isn't about programming, but for your mind to be in the right place and in order to participate in the program you really ought to be a strong coder with at least one language under your belt. Research will almost certainly require significant coding, even if the work is theoretical in nature.
Beyond that it really depends on what program you're doing and what your focus will be. In many cases you'll want significant mathematics background, including areas like abstract algebra (important for crypto studies), numerical analysis, experience with proofs (useful for theory of computations studies)...it goes on and on.
Did you study in an English-speaking country or somewhere else? Because it seems that "informatics" is often a synonym for computer science, only that it is a more direct translation of the name of field from the original language. I've personally taken a lot of courses at an institute at my university which is called "institute of informatics", but I haven't found much mismatch from the course-material there and the subjects that are usually thought of as computer science.
I'm aware that the blog post and the discussion on HN focus on the situation in the USA.
Nevertheless, I'd like to add that the situation is quite different in Germany and probably many other European countries.
As hinted at by 205guy in this discussion, a BS in CS at a German (or French) university focuses on providing each student with a basic understanding of all important topics in CS. It contains only very few non-CS courses.
In order to do an MS in CS, one usually has to have completed a BS in CS.
The MS allows students to deepen their knowledge in selected areas - research topics that the professors/assistants work on. Students also work on larger practical and scientific projects and have a lot of freedom to choose their own focus.
There is a consensus (at least in Germany) that a BS is not enough for most jobs, therefore a majority of students do an MS.
(Generally, universities also require PhD students to have completed a MS in this field.)
In my case, it was a "Master's" of Software Engineering that I got in France. I did my BS in the US where I learned all about algorithms, networking, databases, processors, bytecode, assembler, functional languages, and object-oriented languages. I considered it a good solid base in CS. Essentially, over 4 years, I had 2 years of general study (math, physics, chemistry, labs, literature, history, etc.) and 2 years in my CS major.
With that I got into a French school where the students had done 2 years of cramming for exams (mostly math, physics, and chemistry) and one year of intro CS, then I joined them for the last 2 years. I did repeat some processor and compilers work, but then took the software engineering option that focused on process, tools, UI, QA, along with a mandatory industry intership with final report (not as big as a research thesis, but still quite hefty).
To me it was a very practical and useful course of study, and I really think that masters programs can provide valuable non-research skills. There are many domains where I think that 1-2 years of additional study on top of 2 years of BS coursework can be very valuable. I think these domains can and should be industry-focused fields: software engineering, imagery, maps, geo-location, big data, web-apps, testing, processor design, etc. These would be advanced courses where the students look at industry practices and the latest research and do (minor) original work in the field, either on their own or as an internship with a company solving real problems.
My interpretation of the OP and the various other threads in these comments is that:
1) CS is highly in demand and HR doesn't know how to evaluate skills other than to ask for degrees.
2) Some schools are responding to the need for degrees by offering MS in CS that are really a BS for people who already have a BS in another field.
3) These people are doing mostly intro CS, not the advanced topics or research that "real" MS programs are doing.
So I think it really is a problem with these schools and the accreditation of their MS degrees in CS. I was surprised to read other responses above that most colleges do not allow multiple BS degrees. This is some sort of artificial limitation that is skewing the meaning of the MS degree.
Similar in Czech Republic. Add to that the fact that Bachelors did not exist in the past (and thus people "just" have a Masters) and it is hard to not continue on to do a Masters degree.
Agreed, same here. Undergraduate in computer engineering, when to work in software development right away. Went back to school and got MSCS. One of the best choices I ever made. I can honestly say it made me a better developer and computer scientist. Although I did notice a good number of students who had never programmed a day in their lives taking the MS program with me. A lot of Biology majors...
How many credible MS programs will even allow this? They don't teach you how to program during a MS degree. They give you a project and you are expected to know how to program in c++/java, scheme, or whatever random language the professor feels like using.
Most of the Bio students were doing degrees in Bioinformatics, which is an offshoot of data mining, which is run by CS department. Most were good with SQL, but that's about it. It worked out for me since I always had a place in group work. I wrote the software, they did the biology. So to be more clear, there were no Bio students in my OS class, just the data mining classes.
I had a much longer comment written, but the only point worth making is this: The research MS is no silver bullet, and I saw a lot of people spend a lot of time working on a rather thin gruel.
Maybe the coursework-only MS is diluting the value of an MS, but there are a lot of research MS holders I wouldn't particularly want to hire, either.
However equally bullshit is the idea that you can't write software without a Bachelors in CS. As far as I'm concerned my MSc is a halfway house. It gets you passed HR and let's you talk to people who know these MSc aren't worth anything but only really care if you can make things.
I did an MS/CS (coursework-only) nearly twenty years after completing my BS/CS. After twenty years in industry, I expected to concentrate my coursework on design, software engineering, and "practical" topics like bioinformatics. Instead, I found myself drawn to more theoretical topics, like theory of automata, and especially graph theory, and fell in love with the science of computer science. I don't claim this is causal, but my salary since completing my MS took a 25% bump and has stayed there and above since. YMMV.
I'd argue that for many student from a undergraduate CS background, taking a course-based MSCS program from a top school with a specific direction can be tremendously helpful to the student both professionally and personally. I did not have a specific focus in my undergraduate study in CS and I'm doing HCI+AI for my Master's, which has been min-blowing so far as I'm taking more graduate level courses and exposed to content of much greater depth than my undergraduate study. These courses are usually structured with small research projects/paper readings and I've seen many students come up with research quality work out of the project portion of the classes.
For a student like me, there is also a tradeoff between during research vs doing your own side project vs taking more courses in school. Doing research can be extremely time consuming and potentially affect other course selection density and even performance. I've also seen may CS graduate students who take undergraduate level courses out of MSCS and they max-out the amount of course they can take. These are usually great courses that their previous school does not offer. Doing research in a specific area is probably the most counterintuitive for those who're taking lots of diverse courses. You can argue that these type of students are still figuring out what they want to do and that's what they should have done in their ugrads. But the truth is when you realize you can do much more, the curiosity to discover more is not that easy to stop.Doing research in summer usually is the ideal choice if the students take too many courses in other quarters and they do not want to do an intern.
I agree with the advise to throw away all MS programs that don't waive/pay tuition.
Also I am currently a CS Undergrad in my senior year at University of Illinois Urbana-Champaign and from what it looks like (at least from where I am standing) I would benefit more getting a MS in something such as finance or (what I am doing) chemical or bio molecular engineering. This gives me both the appropriate background to take jobs in CS as well as the ability to work in the field of medicine or both.
As a non-engineering graduate student at a top-25 CS university, I took 2 classes in the CS dept for fun (my undergraduate degree is CS). The first was a subject on the phD qualification exams and populated by phD students. It was the hardest class I've ever taken, both conceptually and workload-wise. I am prouder of that B+ than any A I've ever received. The second was full of Master's students, there on their employers' dimes. For less than half the effort (including re-writing a teammate's entire final project contribution on the due day because his MBA ass was too busy trying to schmooze the professor into doing it for him), easy A. It was my own personal introduction into the difference between a phD and a Masters - at a fairly decent university.
There are not enough course hours in the undergraduate program for students to become fluent in mathematics, physics, chemistry, biology, economics, the liberal arts (very important), and computer science. A fifth year (that is, a Masters degree) allows for a more complete program. And, somewhere along the line, there needs to be some time for a research project where the student works closely with an expert since research remains an apprenticeship program.
The post suggests that course-only Masters degrees are inadequate and dilutive because, while the survey a body of knowledge, the human contact is missing and that the human contact with a real live researcher is how computer science it best taught. I agree.
Ostensibly most--universities aren't trade schools, remember, and you're supposed to walk away with a general knowledge of everything. Every student, from CS to literature to biology, should walk away from university knowing how to do simple programming, read Shakespeare, and describe in broad strokes how DNA replication works.
The fact that most don't is a sign that most USA universities, even those supposedly at the top, are giving a watered down curriculum that's taken as a cover for credentialing and partying and not real education.
I'm going to have to disagree. While it would be nice to leave a university as a renaissance man, this simply cannot be done with the pressures of modern job markets. Having huge breath of knowledge and no depth might make you interesting to talk to at cocktail parties, it won't help you land or keep a technical position (since we are talking about a technical degree). Not once was I ever questioned on Shakespeare at a technical interview. I agree that the average person SHOULD know these things, but I believe that is the job of high schools, not college.
College in my opinion should be used to increase your depth of knowledge about one specific area of study. If it were meant to make you well rounded then why have any majors? One of my biggest gripes about college was having to take classes (aka pay for classes) that had no impact on my major (Literature, Tennis, etc...). I can only analyse the epic of Gilgamesh so many times before no additional value is added. While knowing the story arguably makes me a more interesting person, it does not make me a better developer.
I've got an MS from the UW Madison. It has served me well. I got to teach cs240b at Stanford with that MS (cs240b is the papers course in OS). Fun times. I taught it on roller blades because I wasn't good enough to have parking so I had to park at the mall and skate in.
If you are going to a good school where they actually work you (UW worked us well into the wee hours and they were a hacking school when I was there, I watched Joe Moran do a Unix port in 36 hours there - Joe is the guy who implemented the Sun VM system which is something Bill Joy imagined but couldn't do), if you are going to a school like that, go for it.
For me the MS was just a chance to hang out with people who were doing real work. And learn from them.
I was a "coursework" MSCS student at a school which had both. I was earlier on the research track but then decided not to do a thesis after losing interest in research oriented CS (which btw, why all schools should offer both - I'd have had to either drop out or more likely spend a really unhappy year or two doing something I didn't want to do).
Here is where a MSCS ("Coursework") works really great for all parties involved -
1. (And the biggest reason) Provides actual, high skilled nonresidents an easy route to working in USA. MSCS ("Coursework") are doable in 15 months with some schools such as Cornell offering a 9 month program (MEngg not MSCS but same difference). This works great for the student (since CS grads are paid well, they don't have any issues repaying student loans), for the university (they're struggling for cash and this is a welcome inflow of cash) and BigCos such as Microsoft, Amazon, Google etc who recruit most of these and basically pay for these degrees (they're bleeding top talent to the Facebooks, Twitters and startups etc and are always hiring)
2. Students who don't have a BS in CS. Its a great route for them to add some formal education to their resumes and improve the core CS skills. Startups don't really care about your resumes, but it can be hard to get calls from the BigCos without a formal degree in CS or EE. Nothing wrong with that and I can't see why anyone would disparage them.
Finally, I'd disagree with the blog author's two observations. First, his recommendation to the undergrad. If you don't fit into either of the two scenarios mentioned above (nonresident, didn't do a BSCS) there is only one scenario where it makes sense for the undergrad to do a MSCS - if he/she is interested in research and doesn't have a good enough profile to get into a PhD program directly (it'll give you an additional year to try and get some more publications + give you an opportunity to convince a prof at the school you're at to do a PhD).
However, if you're going to reject all the schools which don't give you any financial aid or give only a TA, you'll left with schools which will give you a RA which basically means you are good enough for their PhD program and they accepted you to the MS program only because thats what you applied for.
The second scenario - of Udacity/Gatech's $7000 MSCS eating other schools lunches, unless this $7000 MSCS comes with an CPT, OPT and its own category of H1B visas, I find it really doubtful it'll make much headway with the first group, nonresidents. Although it is definitely quite attractive towards the second group, those who didn't do a BSCS.
I believe that admission to the Udacity-GA Tech degree program has been limited to students with a BSCS. I agree that the degree will be attractive to people in the second group, however it doesn't appear that it will be accessible to them.
If you have a BS in CS already, the only reason I'd recommend taking a coursework-only MS program is if both:
1) Someone else (probably your employer) will pay for it
2) You _know_ it will get you a raise
For example, when I was at Lockheed Martin a long time ago, they would pay for a MS and give you a $N raise when you finished it. 100% worth it.
I know a bunch of people who worked their ass off getting a MS while working a full-time job only to keep working the same job for the same salary after they got their degree, except now they were saddled with $30K in debt.
If you don't have a BS in CS or you're looking to get a masters as a precursor to a PHD, that's probably a different story.
In my experience interviewing candidates, an MS counts for less than a good undergrad. I find that software engineers with foreign undergrad and US MS are often missing some fundamentals.
That hasn't been my experience. The MS's I've interviewed in the past have in general been just as competent - the problem is that in general they haven't been more competent.
So we're talking about spending ~2 extra years in school for basically a nil result when applying to development jobs. My personal anecdotal experience observing those around me is that getting a MS in CS is leaving a lot of money on the table - you will give up 2 years' salary and your salary upon graduation will be the same as, if not lower than, an undergrad with 2 years industry experience. Do it if you love it, but know that it's a financially negative move (and substantially so).
The big gap I see is Ph.D's. When interviewing Ph.D's for development jobs (i.e., you're writing code a lot of the time) they consistently do poorly. I see a lot of poor code discipline, bad architecture, and all in all poor engineering. They know algorithms and data structure inside and out, but when it comes to writing solid, maintainable code, a PhD in the room is in my experience a disappointment.
I wrote a blog awhile back that kinda relates to this. I argued that employers should be focusing on developers with great portfolios of innovative and USEFUL software, rather than focus only on candidates who have earned a degree.
If a hacker decides to get a degree, it shouldnt be because the job he wants requires it. Rather college should be a personal pursuit to accomplish a life goal. Something for them to look in the mirror and say, "Your pretty damn bitchin at this thing called life."
In my experience talking with colleagues (I'm a B.S. CS guy) I've scene both ends of the spectrum. One friend was effectively obligated to earn a MS in CS at Columbia (not sure if that entailed research) but seemed like a stat grab. Then at Bay2Breakers I met two foreign MS CSers also from Columbia who were doing research in semi-supervised machine learning applied to traffic systems. Seemed legit. It was early and I was drunk in the latter experience, but I stand by it!
As an undergrad making the choice of a coursework-based MS and simply graduating with my BS in the next few months, this could not be more timely.
What makes me want to do get the MS is that my undergrad performance was not stellar. I struggled in the middle of my time in college, and while my grades have rebounded and I have been doing well for myself since, my GPA is pretty dismal. I can't see myself getting into any of the good MS programs around the country, and the easy remedy to this is to staying at my university for another year and getting my MS with the goal of having a much better GPA in order to demonstrate my ability.
That said, if the value of such a degree is declining at the moment, maybe it's a lost cause to redeem my academic credentials.
For just an extra year, I would go for it. At another school, your program would be twice as long because they don't know your background. Also, even if the value of an MS is dropping, so is the value of an BS, but that only makes it more important to have.
One of my good friends and I started at the same company around the same time. He had just finished his masters and I hadn't. He had 5 or 6 years of real world experience, while I had 3.
I got hired in making considerably more money than him because he was considered a "university" hire.
While this could just be the result of the fact he went through university recruiters and I didn't, it still seems like his Master's didn't help him much.
In my (admittedly short) career, I haven't seen a difference in quality between what people with a BS and an MS produce that would make it worthwhile for me to go back to school. It just wouldn't be worth it for me unless I was really interested in the research.
This hits home as I just finished a very well known part-time course-work only (with a pseudo-thesis option) program.
I actually have a little different opinion - what's killing the value of an MS in CS is the fact that CS curriculum is becoming Software Engineering under a different name. Let me be clear - there is NOTHING wrong with Software Engineering but as someone who is more interested in NP completeness, computability, static analysis, machine learning, etc - much of what passes for CS cirriculum in course-work only programs simply isn't.
This is very timely as I'm currently studying to sit the GRE in August, with the hope of applying MS CS programs at the end of the year (Stanford, CMU, Princeton, etc). Perhaps I should reconsider this?
I'm a non U.S. citizen/resident and I'd like to work in Product Management in the U.S.; I had hoped that an MS CS from a top university would help bridge the gap between my design undergraduate from an unknown international university – helping me land a job at a top tech company as an Associate Product Manager or the like.
A MS in CS doesn't give you much useful hands-on knowledge that'd be immediately applicable at your day to day job in the corporate world. I'd look into a MS in Software Engineering, like the one CMU offers, if you're more interested in pragmatic skills.
Has anyone done the UW Professional Master's Program? It's a coursework-only MSCS, two years, designed for working engineers. I've been looking at it for a little while, and would love to get some feedback from someone who's done it. I'd only apply if I could get my work to pay for the majority of the tuition.
My BS is in Physics, not CS, I have five years experience in industry, and my goal would be to cement my foundational knowledge and complement the self-study I've done over the years.
What would you suggest to a non-CS undergrad doing a Masters in one such cash-cow program where there are hundreds of similar students? How does one get the maximum out of it?
I earned a MS in computer science in 2006, so things have obviously changed since then. However, I found it was hugely beneficial for me because my undergrad (also in CS) was very, very weak. As a result, I had the opportunity to realize my deficiencies in an environment where I could learn from them.
I spent four years in the MS program and, looking back, I could have done more with the time I had there. Even so, it was well worth it and opened a lot of doors for me.
Companies should be intelligent enough to hire for what they really need. Hiring an MS just for the sake of the MS is not always the best strategy.
In a research-driven job, someone with a strong research background in CS makes sense.
For a job where you want a top craftsmen and producer of code, it would seem to be much more tangential.
For the latter situation, companies that hire purely based on academic credentials will likely be making suboptimal, if not outright negative EV hiring decisions.
An interesting question is what are the chances of landing programming jobs which nurture a coder's talent more than studying for a year or two more to get an MSc.
There's always a post like this about articles like these. Market rate for people with master's degrees is still significantly higher on average.
If you don't match the average, you are much more likely to get lower quality candidates apply to your job. If you, as you claim, pay them less than people with 1-2 years less education, you are pretty much guaranteed to get the worst candidates.
This latter point usually ends up leading to "I've worked with so many people with masters and they are all bad!"
As a current CS undergrad, is it worth it to pursue an MS after I finish my BS? I understand it that in many ways it is a highly personal choice yet, I don't want to end up wasting time I could be spending doing something more productive/beneficial/interesting. I've really enjoyed most of the courses I have had to take so far (OS,DS&A,Lang. Design,...) but I still wonder how much an MS would bring to the table.
I first realised that an MS in CS was a red flag back in 2000.
I was doing a whole ton of interviews and the candidates who had cross-trained to CS from some unrelated discipline by getting an MS were almost universally unable to cut it in interviews.
So, hardly "declining" value.
Of course, I'd be happy to accept the distinction between the two types of MS that the article discusses.
In Australia, the Masters of Computer Science is generally coursework. The reason is that we have Honours years in Australia, which is the usual gateway to PhD studies. And we don't hand out consolation Masters degrees for people who drop out.
It is definitely true that universities are using MS degrees as a way to fund the programs. It is a shame though because it seems to deteriorate the quality of the program when they load up as many MS students as possible.
I have read extensively on this topic over the last few months as I'm about to start an MS CS program. Without fail, everything I've read has a subtle undercurrent of disdain for people who don't have a BS CS who want to get an MS CS.
While I understand, respect and even agree with the reason why - the fact remains that I studied Communication, Beer and Skirts for my undergrad degree, didn't start programming until two years ago when I was 30 and now more than anything in the World want to be a software engineer.
So for somebody like me - the absolute lowest form of life in software engineering - is spending two years doing a coursework only MS CS (first year is a fast paced BS CS) a waste of my time and money?
There's a certain snobbery about people who had their act together. Not everyone knew what they wanted to do as an undergrad. You might have more aptitude than people with a BS CS. Pick a program that doesn't treat you as a cash-cow: one where you can take the same courses as undergraduates and PhD students. Then ignore nay-sayers.
If it's a two-year program, you can likely get enough courses in to learn something serious. I have less respect for one-year BS/MS masters programs simply because you won't be taking that much. In two years, you could take 12-16 courses and maybe do some research in the second year.
When it comes to university credentials, people like to "lock-in" their value. If you went to Harvard, no matter how much of a failure you turn out to be, you went to Harvard and people should respect you. So, if I have a BSCS, there's a great temptation to say, "no, you can't go back in time and get to the same level as me. Even if I'm incompetent at my job, employers should devalue you no matter how good you are because you're that 'absolute lowest form of life in software engineering'". But we shouldn't think that way. You're trying to better yourself. Kudos!
To be realistic, you might come out of the program not on-par with the type of student that would be capable of applying to top PhD programs, depending on how rigorous your courses are. Two years can be a short time, especially if you're starting with intro to programming. However, if it's a good program, I think you can come out well among those looking for software engineering jobs.
As I replied to enraged_camel's thread (linked in his/her comment), what you want is essentially a BS in CS. What's wrong with having multiple BS degrees? How does a BS in one field prepare you for an MS in another?
The real issue is that the BS degree covers (roughly) 2 years of general study and 2 years in a major. Anyone that has already done the general study part just wants to do the 2 years part in another field. I think it is a failure of the academic system (in the US) to not break down the degrees correctly and to call those 2 years in another field an MS--should be a 2nd BS.
I will note that in Europe, a lot of the general study that US universities do in the first 2 years of a BS are done in the last two years of high school, for example the French baccalaureat (bac).
Many schools, at least in the US, frown upon students earning a second BS/BA. I tried and was basically told by an admissions counselor that I probably wouldn't be accepted. I was welcome to apply for a master's degree and take any undergraduate courses I needed once I had been provisionally accepted into that program, however. But I wouldn't have earned a BS. I suspect that this might have to do with financial aid rules, but I'm really not sure.
I ended up taking some post-bac courses at the university I'd gone to for my BA then going directly into an MS program.
as i said in another reply, this "anti-second BS" thing might have been true years ago but as i've personally discovered, it's not true at all. yes, some schools don't have a clear-cut program for readmission for second degrees, but it seems many schools now do. i'm personally returning for a second degree in CSC, and i didn't even have to go through any kind of admissions procedure - just fill in a one-page form to my alma mater and 3 weeks later they informed me it's approved and so i'm returning for my second BS in fall this year. it's definitely very possible today and if you want more details, please feel free to PM me.
1. Getting re-admitted to ones alma mater is simpler than a new school (given that these are adults going back to school who may well have moved and established families, their alma mater quite possibly is no longer an option)
2. How many credits were waived? This is a pretty serious sticking point, as anything > 2 year full time equivalent becomes a major time commitment & investment. I would also point out here that this can vary significantly by institution, unfortunately.
3. Many undergrad classes don't support a fully flex part time schedule (or, severely limit their evening & part time options). This becomes increasingly important in this scenario.
While there may or may not be an admission-department policy or stigma against second undergrad degrees, the system is by and large certainly not geared to encourage it as of present.
It seems like your objection is to the fact that undergrad-like course loads are branded as MS degrees.
But the question here is what is best for the poster.
Assuming he can pass the MS degree, a future employer will give much more credit to an MS than a second BS in CS. Furthermore, as he describes it, the coursework already includes the equivalent of an undergrad in CS or more.
actually, that's not true. i was always under the same impression as you that schools in US don't seem to encourage or even allow second undergrad degrees, having read somewhere before that a first undergrad degree disqualifies you from applying for a second. however, due to a series of unfortunate events, i have discovered that it is not true at all.
source = me. i'm currently admitted back to my alma mater for a second degree in CSC and will be returning in fall this year.
I have a BS in CS, Math and Stat, and a MS in CS. I've been a developer for a long time and worked with a lot of other developers. The biggest determinant IMHO to becoming a good, competent developer is the desire to become an even better developer from reading, experimentation on your own time, and an open mind.
If you have that kind of passion for software development, you'll do fine, regardless of your original degree (or lack thereof). Having said that, I'm skeptical of the value of a MS in CS without a BS in CS. In my MS program, the assumption was that you had the basics - algorithms, data structures, language theory, basic hardware design & logic, compiler design. You can certainly gain that knowledge with enough reading on your own, or taking some courses at a local community college to get the basics.
This is what I did. I have a BS in Politics and a MS in CS. Before taking the MS degree, I read a lot of the books one would read for a BS in CS and did a lot of programming. This prepared me well. I met others in the program who didn't and it showed. Taking Masters level courses without background will get you lost really fast.
I went back at 27 and did post-bac courses to earn the equivalent of a minor in CS. I also taught myself python/django, js/css, basic database theory, and how to use heroku. Now I have a web app with paying customers. There might be other ways to get to where you want to go, without paying a lot of money out of pocket. It all depends on your goals. I too considered those MS programs for non CS undergrads. Because I ultimately knew I wanted an entrepreneurial career, I went more the DIY/non-credential route. My advice - decide what you want to do after you graduate, then work backwards to determine alternative paths. I'm not saying don't go back to school, but I am saying you have a lot of options, which is a great thing.
No, definitely not a waste, but I'm not sure it's an optimal use of those resources. You can try to simply do the minimum to "get your foot in the door" of software development jobs, then take it from there. That minimum is probably taking mostly programming-oriented courses, and asking your programmer friends what else can you study to make you a more appealing candidate. (Not sure I'm qualified to give that advice, but feel free to contact me about that if you want)
I have a MS in CS but, before enrolling in a graduate program I took 30 credits of undergraduate CS courses at a local university as part of a certificate program. My BA in Journalism did not really prepare me for graduate-level CS work.
If this option is available to you then I'd heartily recommend it.
I'd say if you can do it in two years, including deficiency courses, and without publishing, you're probably not getting your moneys worth and yes it will be looked down upon. Three years(take a lot of courses) and/or a publication or two will look much better. Of course, if you think you can do extra curricular activities to create a portfolio(github projects, contributing to open source, create a product), then it might not matter how well the MS is looked upon, if you show you have a track record of delivering.
This bar sounds really very high. I read things like this a lot, but it doesn't match up with what I see.
No employer has ever asked me for a github address, or a list of open source commits. I put github on my CV via a goo.gl url last time, and counted very few visits. Yet they invited me for interview.
HR filter by qualifications, and hiring managers filter before phone screen on what you claim in your CV. Then they assess at the interview whether you were lieing.
If you were genuinely famous in the OS community, or had spent a year full time making an amazing product they could see, I think things would be different. For most software engineers, 80% of our work is for our employer. I've made some awesome stuff for other people. It's not on github. My boss wouldn't like that.
Is the above really a good recommendation? I'd say at least the MS would get him through the HR filter?
I have no formal education beyond H.S. and simply don't list education on my resume... At this point I have about 18 years of experience in Software Development, so take it with a grain of salt. For the most part, education has been a poor indicator of how well a given developer works. I've have seen quite a few interviews where people will look at your github contributions (I have very little).
Yes, I didn't mean to say employers should filter by qualification. For the first 3 years of your career, they just do.
Then after that, HR appear to filter by previous job title, hoping to see career progression and a similar title previously.
I guess the people at a large company that reduce 200 resumes down to 20, before the hiring mangers sees them, do not understand Ruby. They understand that they must be able to quantify why they rejected an applicant in case of a lawsuit. Hence the frustrating rigidness.
The M.S. does, but as stories like this become more common, non-namebrand MS programs will start to lose some luster. Being able to point to a publication, or a project you run, or something genuinely useful to at least someone, goes a long way to distinguish you from the people who went to school, but never programmed in their free time, and do it purely as a job. Passion as a buzzword is very overrated in this community, but at least a little bit of it is required to make you stand out.
I'd imagine this goes doubly so for the startup world.
I was married when I started my computer science degree. My wife let me get through my first year and then told me I had to get a job. So I did all of my studies on Lynda, focussing only on practical subjects like PHP and AJAX. Even though I started in 2010 and dropped out at the beginning of 2011, I just got offered my first $100k job. Tell me, if I was able to accomplish all of that at home, then why would I pay tens of thousands of dollars to attend a University where I am considered a Junior when I leave and join the industry? It just doesn't make sense.
By doing formal studies someone else tells you you did a good job which grows your self confidence which leads to those $100k jobs down the line. For some people, me included, internal validation is just not enough.
Seriously? Validation has no meaning for me at all. If I can program something, then that is all the validation I need. Why don't you pay me the $40k a year for private education, and I'll buy you an account on Lynda for $25/month and tell you'll be a team leader at Apple some day. Sound fair? ;)
But to put a counterpoint on it, undergraduate education in CS can also be highly variable. My university used to require 20 courses, but because so many other schools required so many fewer, they adjusted down. Heck, most schools don't require students to take operating systems (something that stuck at my school). So, even within undergraduates, I'd say there's a decent difference between someone who took 12 courses, avoiding harder ones and someone who has taken a harder program. In some ways, the same thing that is driving these mercinary-masters programs is driving departments to encourage and keep lower-quality undergraduates within the department.
One of the big problems is that there are a lot of people that want to retrain for software engineering jobs. Yes, they could learn on their own (and many do), but some like the classroom and some like the perceived safety of a piece of paper from a university. We could call these programs post-bac, but that's a lot harder for someone to market on their CV/resumé. So, what is someone that wants to retrain supposed to do? There are undergraduates coming out of top schools with 10-course majors in computer science (including required math courses). As long as the courses are taught at the same level, there's no reason that someone should be able to retrain with those same 10 courses and be seen as having gotten the same education.
So, getting back to the issue at hand, I think there's an issue of whether any CS credential carries the same weight. We only demarcate a few options (BS, MS, PhD), but within a BS, there's huge variation that isn't captured by GPA given that so many schools allow students the option of skipping the hard courses and going with electives like "Web Engineering with Rails" and "Mobile Apps for Android". But part of it is that those course titles offer something that is of value to a lot of companies. For both of those jobs, you don't need to know how a TLB works or why a B-tree is better when doing disk IO. It can be helpful, but there are a lot of jobs that don't need high CS skill.
Maybe the issue is that we don't generally have Software Engineering degrees. There's overlap between software engineering and CS, but I think there's a decent difference worthy of demarcation. Technology is seen as a good path today and I think some of the harder pieces of CS get some people discouraged out of the departments. That usually gives departments two options: water down the major or have fewer achieving the major. Maybe a balance could be struck, maybe a software engineering degree would be the way to go. Maybe universities in America need to start offering MPhil degrees (a research masters) to make the distinction.
But, even if that distinction were made, some schools would be offering software engineering under the CS name and students looking for a fancier piece of paper would send their money that way. We don't have anyone like the AMA dictating standards as they do in medicine. But maybe this is better. Maybe this means that we need to actually look into candidates rather than relying on one piece of paper.