Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

A friend and I (both in college) are currently in a debate over which is better, in terms of employment opportunities, experience, and education: a Bachelors degree in both Computer Science and Software Engineering, or a Bachelors in Computer Science with a Masters in Software Engineering.

My point of view is that I would rather go to school for 4-4.5 years to learn both sides of the field, and be out working on real projects gaining real experience, by going the double major route.

His point of view is that it would look better to potential employers if he had a Bachelors in CS and Masters in SE. That way, when he's finally done after 4 years of CS and 2-4 of SE (depending on where he goes), he can pretty much have his choosing of what he wants to do.

We are both in agreement on the distinction between the two degrees: CS is "traditional" and about the theory of algorithms, data structures, and programming, where SE is the study of the design of software and the implementation of CS theory.

So, what's your stance on this debate? Have you gone one route or another? And most importantly, why?

share|improve this question

closed as off-topic by MichaelT, Dan Pichelman, GlenH7, Kilian Foth, World Engineer Sep 16 '13 at 21:27

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – MichaelT, Dan Pichelman, GlenH7, Kilian Foth, World Engineer
If this question can be reworded to fit the rules in the help center, please edit the question.

    
If I were to hire, I would hire a person, not diplomas. This guy teddziuba.com studied neither and is a successful programmer. I do not know how to optimize employability in the short term in the eyes of a large corporation, but I do strongly believe that some mathy classes do help in the long run. I also believe that "software engineering" is too soft of a science and is best learned through mistakes with boots on the ground, whereas the theoretical fundamentals are best learned in a classroom setting. –  Job Mar 18 '12 at 16:53
    
add comment

10 Answers

Personal route:

  • BS in Computer Science.
  • MS in Software Engineering.
  • Worked full time through both.

I went the Master's route. The reason I did wasn't because I thought it'd give me more money now or because I think it would get me more opportunities by itself. I personally want to teach at the college level later in life, and in general, that requires at minimum a master's degree in the field. If you aren't too concerned with academic research, teaching, or generally being able to tell others you have a master's, then I would suggest the dual major.

Cons of Master's:

  • Expensive if you can't get employer to pay for it.
  • You could spend that time working in the "real world".
  • Developers who have "made it" without a Master's will take shots at you and say you don't need a Master's to be successful. (They're right)
  • There's no way to possibly learn how to work on a large team at a multi-year project in an academic setting.

Pros of a Master's:

  • It opens doors. Not everyone you meet who can open amazing doors in your life will be a software developer. A Master's can sometimes give you an edge. Opportunities matter.
  • You get to work on sweet projects in the lab that in the real world are extremely hard to come by. Many software projects that started in the lab at universities have eventually gone on to change the face of software.

I wrote an article earlier this year on this subject here. It contains a few other things not mentioned. Keep in mind, I worked full time during both undergrad and my master's. Most of my success I would attribute to real world work, and most of those real world work opportunities I attribute to connections I made in school. Your mileage may vary.

share|improve this answer
    
Getting a masters or a PhD are very useful in very specific ways. If you want to work in some kinds of research be it for a big company or a university you probably will need one. But for a lot of other stuff its not that important. It really depends on what you want to do. –  Zachary K Mar 18 '12 at 16:20
add comment

I'm about to get flamed.... but here it goes:

I say study music, art, literature, politics, and history. Study typography, color, biology, chemistry, math, photography, and argue with hippies about "what art is".

The art of software developing is an art of pattern recognition. It's much harder to recognize patterns if you spend your whole academic life looking at one thing.

Just don't forget to write code 6-8 hours a day.

share|improve this answer
2  
+1 I still think taking an SE degree is required in this case, but god do most engineers need to study the humanities too. It is very difficult to be a systems analyst, or perform requirements engineering when the limit of your horizons is still upon the screen. –  Orbling Dec 14 '10 at 1:24
    
Not to mention that sometimes the soft skills, by which I mean communications, are the really key ones. My ability to write and give a talk have gotten me more work than I can shake a stick at! I promise you being able to give a truly KILLER talk at a user group will get you noticed a lot faster than a masters. –  Zachary K Mar 18 '12 at 16:11
    
I heard an interesting argument once that said they should give a MFA in programming. (From a programmer who had an MFA in poetry) –  Zachary K Mar 18 '12 at 16:20
add comment

I graduated from SE and I can tell you my university wouldn't allow a double major with CS, I don't see why any university would. They are not different disciplines, they are two parts of the same one.

A double major in CS and SE doesn't make any sense. My university offered an SE option to CS students (they took a 3-course series on specification and requirements, architecture, and testing) and all SE students basically took slightly-modified CS courses in addition to those three courses. We learned CS theory, and many of my classmates specialized in algorithms and all of that.

I have never encountered an employer who has cared about the difference, and very few realize there is a difference other than the name. This is especially true in the US, where "Software Engineer" titles are conferred upon people who took a meaningless 1-hour certification course at a conference.

If you're good at what you do, you can get a job in CS/SE anywhere. The competition is not exactly fierce, there are tons of jobs available. Get a Master's degree if you are interested in research, solving special problems, etc. Otherwise rely on your skills and not the name of your degree.

share|improve this answer
1  
+1 Agreed, they are part of the same whole. Granted you can have one without the other, but either absence creates a poverty of skill set. –  Orbling Dec 14 '10 at 1:26
add comment

I'd venture that what will be best is heavily dependent on what your goals are for after college.

If you know exactly what kind of jobs you want to obtain, research what is best for that particular goal (by asking people who already have the sort of positions you wish to obtain).

If you don't know exactly what kind of jobs you want to obtain, YAGNI (you aren't going to need it - the extra education that is).

And with that I'll be the first to say, at least in my experience in my field of Line-of-Business applications, education barely makes a whit of difference in comparison to experience - from both a what/how much will I learn perspective and a how many doors will be open to me after this perspective. That is, real job experience > education.

share|improve this answer
add comment

I did the BS in CS and MS in SE. I went full time to school for the BS and worked while doing my MS part time. I liked this because when you are young, going to school full-time during your bachelors allows you take electives that will make you well-rounded afterwards. It is amazing how many times I've been in business situations where history, political science, or economics comes up and I can contribute because of my liberal education during the bachelors.

Experience is more important than a formal education. But, my master's in SE did teach me some best practices and gave me a breadth of the field so I know what someone means when they say CMMI or Earned-Value management. May not agree with it, but I can speak to it.

I WISH they would do better at universities setting up education for software developers; but universities are like big ships and take a long time to turn. Hence, they can't keep up with the pace of the IT industry. I blogged about this here.

share|improve this answer
add comment

You will be much better off with 4 years of school + 2-4 years of employment than you will with 6-8 years of school.

Even after a master's degree, your friend will still be looking at entry level jobs/salaries when he graduates. You will have been earning a real salary for 2-4 years, getting raises & real experience, and not paying for school.

In the software industry, 2-4 years of experience is worth way more than a master's degree, both in salary level and appeal to potential employers.

share|improve this answer
1  
I could not agree more! Especially if the OP has to borrow money to get his MS!! In the US anyaway, there are lots of opportunities for a working person to get a Master's Degree if that's an important life goal. If the goal is to get a good job in the tech industry the race isn't even close. Two or three years of real experience vastly trumps an MS degree. And to most employers, there is no difference between CS and SE majors, and nobody is impressed by a 'double major in CS/SE'. If you must do a double major, make the second major Art, business or English. –  Jim In Texas Mar 18 '12 at 16:29
add comment

Suggestion, if you really want to do a double major make it CS and Communications or the like.

Being able to write well and give an amazing presentation will get you a lot more notice than a masters will. Next week I am going to a user group meeting and if the speaker gives a Killer talk you better believe I will be trying to figure out how to get him on my team. (Well actually this time the speaker is from out of the country but otherwise I would).

Being able to code well is important, but being able to communicate about it will make a much bigger difference in the long run than a masters will. When you are trying to get a job or a project you want to be able to stand out from the crowd and make the person looking at the pile of CV's stop cold on yours, or better yet bypass the pile to start with.

Really after 2-4 years working no one will care if you have a masters or even what your degree is in, mine is in Physics not CS, trust me I have done more interviews and pitch meetings and I can't say that anyone has ever cared.

share|improve this answer
add comment

If I were you and have enough time and money to invest in two majors, then my take will be Computer Science and Applied Mathematics. In my opinion, this should increase your chance of employment in any field.

share|improve this answer
add comment

University of Waterloo Computer Science lists a Software Engineering option that to my mind makes more sense than seeing these as such different disciplines,i.e. SE is mostly a proper subset of CS to my mind. That said, CS was one of my majors in university but I didn't take any practical 4th year courses but focused more on theoretical areas like Computational Complexity Theory and Symbolic Computation so I'm not sure how well I would have fared in SE courses.

I didn't do a Masters primarily due to my grades coming out of my Bachelor's being just low enough that I was below was the good grad schools wanted. My final average was 75.8% and usually 78% is required for the good schools, thus I went into the work force instead. There wasn't the SE option for CS students in my time at Waterloo as it was just being decided as I was graduating so I can look back and wonder, "Maybe I should have tried SE instead of CS," but that's in that "coulda, woulda, shoulda," land that isn't very productive, in my experience.

share|improve this answer
add comment

@LLWoodyiii I agree with most of what you said in your post here and your blog post, I however have an issue with one of your claims. This might be because of vastly different curriculum or a poor quality teacher, but I know after I took discrete math in my undergrad my programming skills and ability to learn knew programming skills increased ten fold.

Maybe you already knew all the relevant topics taught in discrete, but I have to say the month we spent on algorithms (not on the computer, mathematical algorithms) in addition to the time we spent on mathematical recursion, was a huge help to me. After discrete I felt confident solving much tougher problems in CS and at work. I just wanted to point that out, and I am by no means discounting your experience or calling you out, I just wanted to express my opinion.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.