Do Software Engineers Need a Degree in Computer Science?
The role of a software Engineer” does not necessarily require a degree in Computer Science. However, since Yahoo’s Chief Executive Scott Thompson was stepping down recently due to a fake computer science college degree, it has been a point of discussion if someone needs a university degree. For instance, in his article for Dr. Dobb’s, “Software Engineers All!” Andrew Binstock discusses whether software engineers really require a degree in computer science to perform an excellent job.
According to Binstock,
Software engineer" is only the latest term to undergo this peculiar disconnection from the reality it implies. In earlier generations, the title of "analyst" was the favored term. In the data-processing world of yore, the entry level was "programmer." When a change of title was needed to reflect tenure, the programmer was elevated to a "programmer/analyst." Then ultimately, an "analyst." This metamorphosis might have implied that programming was an activity the employee had finally left behind. But in fact, most analysts did even more programming than their more junior brethren. Analysis was not often a large part of the job, except insofar as some of positions did require analysis as an adjunct to programming.
The article refers to Mark Zuckerberg and Bill Gates as software engineers who were successful without having a degree in computer science. Thus, Binstock’s conclusion is:
The ill-defined "equivalent" affords plenty of room for candidates with demonstrated coding prowess but lacking the academic formation. In sum, all are welcome to the party. And with that in mind, I raise my pen to you, dear readers — software engineers all!
Not all readers who have commented agree with Binstock’s conclusions. For example, user pjmlp explains,
In every profession there is a learning path that proves that the person in question has the required set of skills and it able to offer a certain quality for their work. My experience was that self taught programmers are not able to deliver the quality most software shops expect, because their skill set is reduced to what they were able to learn on free time.
RussG has a different viewpoint:
Sadly, a degree in computer science does not reliably make one a good programmer. Computer science and computer programming are generally very different things, and most graduates seem to come in with expectations that work in academia but not very well in a large team building million-line applications.
Another important point of discussion in this context might be more specific roles in software engineering such as software architects. Does a software architect who is responsible for the backbone of a system require a computer science degree or can she also be a self taught software engineer? Or do engineers need both academic education and profound practical experience? As Einstein once said, “In theory, theory and practice are the same. In practice, they are not”.
Word games
by
Dave Nicolette
Words like "engineer" and "architect" are very, very far afield from any type of work related to software. They are feel-good words people have coined to label job titles so that they will sound "advanced."
IME it doesn't take four solid years of full-time study to learn enough fundamental programming skills to work effectively in a programming job. IMO the notion of degreed programmers is one example among many of academic bloat - the creation of ever more degree programs and the perceived need on the part of employers to insist on degreed employees for nearly every job. Soon people may have to earn a degree in "sanitation engineering" to get a job as a janitor. It's all make-believe, and it's all absurd in the extreme.
What determines a good software engineer and architect
by
peter lin
A CS degree is just a piece of paper. It's the person that makes it mean something.
Continuous education is needed
by
Dean Schulze
I don't know how much of what was taught in CS programs in 2005 is relevant now, but to stay current those 2005 grads will have had to do a lot of learning on their own.
I like the idea of a CS course
by
Leonardo Kenji Shikida
Denying the antecedent
by
Luis Espinal
In my 15 yrs of experience, the primary factor in the quality of an engineer isn't a CS degree. The primary factor is passion and love for software. Some of the best and brightest engineers I know don't have a CS degree. In my own experience, 50% of the top engineers do not have CS degree. Several have a degree in philosophy, 1 in chemistry, another got bored in college and dropped out his second year, several have MS in math and a few have EE BS.
The first problem with your statement is that you are not differentiating between the different types of engineers and scientists from the type of engineering/science disciplines required for building complex software systems (*** more on that below).
Moreover, the problem with that kind of thinking is that it focuses on the outliers, the people that will excell in software engineering without having a formal background in programming. Yes, I've seen the same phenomenom as well. In fact, in my first programming job 17 years ago, some of my peers (who were excellent programmers) didn't have a CS degree at all.
But the key to have a valid point is not just on finding the outliers for which the point holds true. Does the point holds true in the general case? In 17 years of working in the industry, my answer (based on what I hope is objective observation) is a resounding NO.
In the general case, a person without a formal background in software development, be it via a CS or MIS or CE degree, does not do well in the modern software arena, where we now build complex software systems that overshadows in complexity the type of software we used to build 15-20 years ago.
Does it mean that having a CS/MIS/CE degree will ensure its holder the capacitity to be a software engineer? Of course not. But we cannot logically use the negation of this to propose that a CS degree is unnecessary. That's a logical fallacy committed by denying the antecedent.
In terms of defining what it is to be a good engineer, I work (and have worked) with EE degrees that are working on the role of software development (be it as they transition into enterprise development, or in embedded development).
It is usually the case in which I've struggled in making them understand the necessity of having well-defined abstraction layers, and why it is a bad idea to to ditch that and have direct access to a region in memory.
Are they stupid? Of course not. In fact they are excellent engineers, with a grasp of Applied Mathematics and Physics, let alone Electrical Engineering that is beyond my training. They are engineers.
But software engineeers, good software engineers? No. They face a certain type of cognitive obstacles when it comes to building complex systems (which are becoming the norm in the embedded space.) They are simply constrained, as software engineers, by the same sophisticated skills that make them excel as electrical engineers.
Is the ability to be good software engineers beyond their graps? Obviously not either. But they need to diversify their skills, devour software development and modeling literature (which at the core is CS-based), look at software in different ways (and if they are lucky, work at places that allow such skill acquisition).
And typically, barring the naturally gifted, this requires exposure to CS literature and training, in particular software engineering literature based on a strong CS foundation. This is typically done on the side, on the job, by going back to school, or a combination of any of these. And I've met my share of EE majors who have made the cognitive/skill transition and excell at software engineering (sometimes more than my CS brethen.)
The situation cuts both ways.
I'm a CS major, and to function as, say, a DSP engineer would be beyond my grasp. I have a grasp of the theory, but that is not sufficient. I would have to rework my skills tool-set. I've known CS majors who haven't had a need to do so to make the transition. But those are outliers. I'm not one of them. I'm the general case, and so most of the rest, and by the rules of probability, even you (you the reader of this paragraph.)
Engineers are not interchangeable chess pieces interchangeable across disciplines without formal training. Never have been. Never will be. Outliers do not disprove this. The general case observed every day in the trenches, OTH, that firmly proves it.
Engineer is a token word that conjures the ability to solve problems in a methodical, analytical, scientific fashion. But it is also a nebulous token word that has no concrete meaning until you attach a context to it.
Software engineer, mechanical engineer, electrical engineer, chemical engineer. You can be a good engineer, but not be a good electrical or software engineer. So to claim that you do not need a CS degree to be a good engineer is a statement that is true in principle, but that conveys no useful meaning.
A CS degree is just a piece of paper. It's the person that makes it mean something.
But that is also a truism that does not convey any meaning. You could say the same with, say, a law degree or a medical degree. The statement can mean anything. Ergo, it means nothing.
Yes, there are outliers out there than can perform a task without having a formal degree on it. But again, those are outliers.
What matters is the general case. In general, you need a formal education for a particular task (or a formal education that has sufficient carry-over knowledge.)
Re: I like the idea of a CS course
by
Michael Kay
Re: Denying the antecedent
by
peter lin
I also agree that engineers are not "interchangable", even if human resources likes to think that is the case. Most of what I work on is messy enterprise integration stuff, so my experience is probably not the typical.
Re: I like the idea of a CS course
by
peter lin
Should you get a CS degree?
by
Richard Hightower
Re: Should you get a CS degree?
by
peter lin
To use an example from real world software engineering/development. Most CS graduates had to take a class in compilers. The thing is, most software engineers can't write good compilers. A person either has a knack for it, or they don't. Sure, a person that isn't naturally gifted at writing compilers can get decent at it, but they will never be great.
To use a different domain. I could learn the piano, but I'll never be great at it. I "might" get decent, but I just don't have the passion or innate talents for it. The same is true of software engineering. Some people are just naturally gifted at software engineering. Most people (ie 90%) just don't have it in them. I am not one of those people that are naturally gifted. Instead, I use my passion, dedication and honesty to over come my limits.
10,000 hours
by
chad hurd
Re: Should you get a CS degree?
by
Richard Hightower
Re: Should you get a CS degree?
by
peter lin
CS degree is not a must, the foundations touch there is a huge advantage
by
Koga Kazu
However, like any other engineering field, academics researched for years what are the skills and knowledge that will make difference for a new graduate to excell as a Software Engineer professional.
I think that a degree in Computer Science from Universidade de Sao Paulo in Brazil, having being trained to be logical, deep driving in mathematics, being trained on technical-process-team work skills, gave me a huge advantage on any of the workplaces I have worked before, here in Japan.
No
by
Tero Vaananen
CS vs Software Engineering
by
Javier Diaz
When you start trying to make examples out of extraordinary people you get into ridicule:
* As Le Corbusier had no architecture degree there is no need for having a degree to design houses or even full neighbourhoods.
* Let's take one more step: As Leonardo had no civil engineering title, there is no need to have an engineering title to be as good as Leonardo in design, mechanics, painting, warcraft, architecture ...
Last, but not least, working experience only does not favour having well grounded knowledge.
Re: CS vs Software Engineering
by
Javier Diaz
A degree in Medicine does not warrant anything. You also have to get experience before you are allowed to work. I would not use the services of experienced "doctors" without a degree. Sadly, we need to kill a lot more people or at least their reputation (and society needs to hear about it ...) before sw education is taken seriously.
Lying in your qualifications makes you a weasel, no buts.
No correlation
by
Anthony Shaughnessy
If interviewing graduates with no experience, its a different matter. Then you're assessing on possibility, not experience.
Anthony
Wrong Question
by
Cameron Purdy
The real question is how we can improve Computer Science education, so it becomes more and more beneficial, so that when someone does invest four years (or more) of time studying Computer Science, that they are well equipped for working in the real world on real and contemporary problems. Regardless of whether someone has a Computer Science degree or not, what I find all too often is that people tend not to have an understanding of how to design great software, and how to build great software. Even worse, very few people ever learn how to, even after years working in the industry.
Peace,
Cameron Purdy
(I work for Oracle, but opinions are my own.)
Re: Wrong Question
by
peter lin
Re: I like the idea of a CS course
by
Mark N
I've worked with lots of people who were excellent programmers who didn't have a computer science education. The one weakness they tended to have in common was a tendency to reinvent the wheel; they didn't recognise when there was a textbook solution available to a problem.
That is funny because that is how I typically define engineers - they always think they can do it better and thus, many times, reinvent the wheel.
Re: What determines a good software engineer and architect
by
Mark N
Re: Wrong Question
by
Michael Wenk
Of course most colleges and unis would hate this, but this would be the better approach.
I personally feel that degree is mostly irrelevant, because a degree doesn't show intelligence. It does show that a person was able to accomplish something, which while something isn't the end all be all.
Note above I said degree. Some classes, especially algorithms, data organization are highly useful to working in IT. You can of course get this by reading and doing practice as well.
Intelligence, problem solving, and adaptability are cornerstones to the IT world. If you have these skills, you will go far in IT, degree or no degree. If you do not, you will not. And unfortunately, no school can teach the first and third skills, and the teachable skill will only get one so far.
Re: Wrong Question
by
Rickey Jones
Re: Wrong Question
by
peter lin
There have been numerous instances where I felt a non-degree candidate was sharper and a better fit than a "luke warm" candidate with a degree. The HR folks ended up hiring the degree candidate, which ended up not working out. After that happened a couple of times, I had to talk to our VP to get the issue resolved. I don't blame degrees or colleges for bad HR practices. The reality is, lazy people use degrees as a crutch in all sectors, not just IT.
In contrast, great head hunters are able to figure out which candidates fit. For me, a person's passion for their work is 25-35% of the equation. Obviously the candidate must have the experience and skills.
Conclusion
by
srikanth nair
do they "need" a CS degree? No...
by
Jason Little
*sigh* There is a distinct difference...
by
Ethar Alali
I have seen a couple of formidable programmers who don't even have GCSE's (equivalent to junior high graduates in North America) but at the same time, I mostly see people who tend to not really understand the 'engineering' aspect of software engineering at all and assume it is all about programming. They tend to be the people who spout that an IQ of say, 165 is high, without stating which scale the IQ was measured on because they don't really appreciate the normal distribution curve and the importance of the mean and standard deviation in that distribution of that curve say (sorry for the dig Richard, but I couldn't resist ;-). If a mensa IQ is 173 on that scale (and there are scales out there with that measure, traditionally from a good few years ago), then in the same meaning that is inferred, 165 is a bit dim!
To link it to my old favourite analogy of building a building. It is likely that neither an architect nor a structural engineer has any idea how to lay a brick efficiently. Similarly, a builder likely has no idea how to calculate bending moments or sheer forces. Everyone is needed to get the job done and quibbling about who is best turns into a totally unnecessary urination competition. A business is investing a lot of money in building software. Sometimes as much as it spends building shiny new offices. You wouldn't normally spend that sort of money without engineering. The only reason salaries and rates are linked to those job titles is simply because of demand, not directly to sound important. There aren't that many people who totally understand, say, combinatorial optimisation and its role in enterprise scale software systems or how to test to cover 100% (no more no less) by calculating the number of tests required from pre-and post-conditions (aka Given... When... Then... for those with BDD) or how operating and optimising Kanban can be predicated by an understanding of queuing theory, the theory of constraints, linear programming etc.
Statistically, not many people get to be good at software being self-taught, but when they are, they are truly brilliant! A degree can give you that consistency and predictability (which is what companies normally want for stock staff) but it is often the mavericks that change the world. The statistical likelihood of that happening from any background? Probably about 1 in 30,000 (and even then, they have to have a good run up :-) so a company can't usually afford to wait for 20 of them to come along and be able to start.
Re: *sigh* There is a distinct difference...
by
Richard Hightower
100 IQ is average. 110 to 120 is average college student. 165 is typically considered very high (something like one in a 100,000 to 1,000,000). en.wikipedia.org/wiki/Intelligence_quotient
The above all is moot. The point was there are exceptional people and the same rules are not going to apply to them. I know everyone thinks they are special because our moms spent the first 18 years of our life telling us how special and unique we are. But you (not you, but the global you) are probably not Bill Gates, Steve Jobs, or Mark Zuckerberg.
Do you disagree that having a CS degree although not required is a good idea?
I still don't understand how this can be a controversial statement.
If you have someone design your house or office building, I am pretty sure you either want them to have a degree in architecture and/or an incredible list of past accomplishments. Vis a vie, it is a factor.
I never said it was required. I said it was a really good idea.
I think education without talent and passion is somewhat useless. If I had to pick two of the three, I would pick talent and passion. But, it is a better idea to get all three. IMHO.
To those thinking about skipping college and getting a job becoming a developer, I would like to leave this special message.
“You are not special. Your are not a beautiful or unique snowflake. You are the same decaying organic matter as everything else.” -- Chuck Palahniuk
Stay in school.
Re: *sigh* There is a distinct difference...
by
Richard Hightower
Re: *sigh* There is a distinct difference...
by
peter lin
Without a doubt talent + passion + education tends to produce above average or exceptional individuals. Though, for most people passion + education can get a person pretty far. Not that they will be superstars, but it "should" be enough to have a happy and productive career.
On the lighter side, this kind of debate will never be resolved. Humans will be debating the same thing 1000 years from now, assuming we haven't killed the planet and ourselves.
Re: do they "need" a CS degree? No...
by
Jeff Smith
People use applications that are cool everyday that are built in Html5/Javascript/Mobile Dev/Python/Rails/Whatever and they want to learn those frameworks/languages. They don't want to spend money learning the foundations and C/C++/C#/Java/PHP/or Pete's sake VB.net (not my opinion...just what I hear). What do they do? They use google/watch youtube/make a trip to B&N to get a book. They show great passion and dedication while learning {insert framework/language} here. The foundations are of CS are left out and they are learning what they want to know not what they need to know so to speak. What's the answer? I am trying to figure it out, but I feel something needs to change. At this point...if I could get an associates with just the Foundations of CS I would take that hands down. Sigh...who knows.
Re: *sigh* There is a distinct difference...
by
Ethar Alali
Sorry, I wasn't meaning to troll :-) It was meant as a light hearted dig. But I thought I best point out that the 'modern tests' section does denote that the tests that are applied are 'modern' and have had the standard deviations narrowed to 15 points (which is what I stated earlier). Most modern IQ tests CANNOT measure to 165. One of the most accurate applied to the general population is considered the WAIS scales (Wechsler) and just like many, that can only reliably test as far as 140 (where the 2% interval required to enter Mensa is at 130). Most other tests test around that scale and the difference if one gets 100% is the time and the pertinent age groups.
Also, I best point out that IQ isn't actually a measure of intelligence. It is a retrospective correlation between future life outcomes and a set of scores on a series of tests. It is an extremely narrow field of intellect (if one considers Gardner's theory of multiple intelligences which encompasses a total of at least 8), but I am not here to debate the psychometry.
I don't believe that people are special. You can be 'born' with a genius' ability to learn, but if you don't do anything with it, or work at anything, you are a nobody. If one work hard actioning bashing a wall down with one's face, then that is also likely to get you nowhere (apart from maybe A&E). The key is both are needed and I tend to state that skill is a product of intellect and knowledge and you can make up for the lack of one with an advantage in the other to at least a certain degree.
To relate this abstract set of statements to something more concrete, you can only get that degree of effort if you are passionate about what you do and put in the time. You either pick things up slowly or quickly, but the time that you put in is what gets you that knowledge and hence improves your skill. Others prefer to map this 'new shiny thing' to this 'old-not-so-shiny' thing, see the more abstract similarity, pick it up and run with it! Those who program in more than one imperative language will most likely have done this without thinking (Java is conceptually the same as C#, which is the same as OO Delphi which is somewhat the same as C++ etc. etc. etc.) which is somewhat stating the obvious to those that have been through it, but change the language to functional, logical or some other paradigm and that bridge is much harder, simply because the model is different whereas in imperative languages, the concept of a loop is the same, the concept of a branch is the same, the concept if inheritance in OO is the same etc. and after that, as far a the lingo is concerned, it is all syntax. What makes people stand out is how they put together these bits of syntax to make a 'thing' in the most optimal way possible and sometimes, that means putting these together in ways that other people can't immediately see the reason for at all (or ever).
1) Anybody can pick up a paintbrush and 'paint', it takes a da vinci to paint the mona-lisa.
2) An engineer is someone who can do for a penny (cent) what any old fool can do for a pound (dollar)
Cheers
Re: *sigh* There is a distinct difference...
by
Ethar Alali
...or someone finds a way to measure the optimum amount of each and the problem is then solved, ergo :-)
Re: do they
by
Ethar Alali
However that kicks the nation because the number of people who truly understand IT is shrinking, which means those that know, get more reward, but are increasingly fewer in supply which drives up the demand, which the universities certainly can't or wont supply and companies can't pay for which inflates the existing bubble until it bursts or the industry outsources which kicks the local IT economy from several angles.
Why do the likes of Google/Facebook recruit the way they do? They know that that market is full of people who really don't understand the problems they deal with at a conceptual level and so can't play with the ideas easily enough. I remember showing just the first level of a precious years' Google code jam to some colleague and I was socked to find that none of them could answer the question. This is the prevailing capability at the moment I am sad to say.
you don't need
by
yan brad
What you need is passion and intrest,not the degree.I love doing something about hacking.And I am going to be a hacker.
In university,you need to learn how to learn.
Educational Content
Tuning the Size of Your Thread Pool
Kirk Pepperdine May 23, 2013
Co-making Great Products
Jeff Patton May 22, 2013




Hello stranger!
You need to Register an InfoQ account or Login to post comments. But there's so much more behind being registered.Get the most out of the InfoQ experience.
Tell us what you think