In this multi-part series, I look at software engineering as a separate discipline from Computer Science. For the software professional’s daily practice, I believe SE is a better degree, and I explain why. I decided to pursue a master’s degree in SE as opposed to CS. Earlier posts are found at:
Part One | Part Two | Part Three | Part Four | Part Five | Part Six | Part Seven
The field of Computer Science and the software industry are not necessarily the same thing. They may be in the same galaxy, but they are not on the same planet. Sure, Computer Science yields useful discoveries that benefit the software industry, but the relationship is not more involved than that.
If you always thought that an undergraduate or graduate degree in Computer Science was to a professional software engineer like an education degree is to a teacher, then you might be surprised to know that around half or more of the nation’s software programmers/developers/engineers have degrees in something else than Computer Science. The skills that a Computer Science degree teaches are not actually that useful to the everyday software practioner. More and more, the necessary skills actually derive from a pool of knowledge that seems absent from academia.
The degree that does fit with software industry practice is called Software Engineering. Right now, universities that could offer a Software Engineering degree instead offer Computer Science degrees. After the student pays some ungodly amount for a CS degree and learns algorithms, calculus, and object-oriented analysis, they hit their first day on the job. Where they suddenly are a fish out of water because they don’t know anything about version control, programming against a database or web service, functional programming, or standard security practices.
(This programming against a database thing I just mentioned is a real anecdote recently shared to me by someone else in the industry. He seemed surprised that a new hire had never written a line of SQL though she was top in her CS class. I reminded him that databases are an elective in most CS programs so there’s no reason for any student to take it other than interest.)
Long story short, the software industry simply puts up with computer science degree holders when they enter the industry. Believe it or not, “puts up with” is the right description. If you keep your eyes open and look around a bit, you’ll find dozens of stupified software professionals relating stories about other software professionals who can’t write a line of code to save their life. The Daily WTF is a whole site dedicated to the bad code written by Computer Science degree-holders.
Some might protest and say, “Well why then does it always say in every programmer job posting that someone must have a Computer Science degree?” One answer is these companies don’t know any better. But the real answer to this question is another question: “Why do most job postings require at least two years experience AND a computer science degree?” See, that requirement for two years experience is an attempt by the company to make up for the inadequacies of someone with a CS degree and no experience. It is well known that in order to break into the industry, a person has to intern, work for free, be a known contributor to an open-source project, or something of that nature, in order to prove they actually have the skills to contribute to the industry.
Suddenly it looks like that expensive CS degree doesn’t matter that much.
And anyway, what can these companies do but put up with the situation? They attempt to compensate for the lack of background of their new hires in various ways, but what they should be doing is applying pressure on universities to have true software engineering programs. Perhaps if they applied this pressure, and more universities started offering an SE degree, this could also make up for the current deficit in qualified applicants for software jobs.
Before that happens, though, people like me are trying to raise awareness of SE. I didn’t know there was such a thing until I had been a programmer for at least five years. To learn more about SE, please check out the other posts in the series!