##Why developers need a CS degree Perhaps the most important part of my job at Netsoft was the identification and acquisition of talent. Finding high caliber people is hard, and particularly hard in Manhattan. Given the competition with the financial institutions for the top talent, there are days when I’d like to just give up.
But all is not lost. One of the greatest recruiting tools I have at my disposal is that my company is a cool place to work. We are one of the few consulting shops that I know of that practices software engineering. We are not looking for coders, we are not looking for programmers, we are looking for Software Engineers.
Given that the majority of people on the development staff have been working as developers somewhere on an average north of 10 years, my focus lately has been on locating less experienced developers (read college graduates) that can fill in the ranks and fuel the growth of our business. The carrot to attract these newly minted engineers is a robust software engineering environment lead by a team of smart engineers.
Obviously the best place to find software engineers as they come out of college is at the colleges themselves. To that end I attend career fairs at various area universities, looking for talent. When I go to these career fairs it’s pretty clear what kind of company we are, we are a professional services software shop (I’m speaking for just the development group, we have other disciplines as well but I manage the development group). So it should be clear we are looking for people that have either a Bachelors and Masters in Computer Science (preferably both). But inevitably more than half of the people I end up talking to either have a bachelor in a non-Computer Science field, or a masters in Electrical Engineering.
Let me start with my opinion regarding the first issue, do Electrical Engineers make good Software Engineers? The question isn’t one of character or intelligence, is a matter of training. I think it would be hard to argue that there aren’t significant differences between the two disciplines. For example, EEs have to deal with real physical constraints, such as heat, power dissipation, process factors, etc. Back in the old days Software Engineers also dealt with constraints, typically memory issues, but with servers now holding gigabytes of memory I can’t think of too many reasons for a developer to put too much effort into reducing their code footprint. The problems that EEs tend to work on have significantly less state management than even minor software applications.
I think the latter point is key. The software industry, in order to deal with the complexities involved with managing the larger state inherent in software systems has evolved. It is not sufficient to be able to program in a language, it is necessary to understand the fundamentals of software engineering. Much of what is covered in CS coursework, and not EE coursework, is the accumulate knowledge of the industry in managing the design issues inherit in complex systems.
I graduated in 1984 with a BSEE degree and my first job was software. Back then EE and CS disciplines were more closely related. In fact many schools had only just started to differentiate the disciplines. I was also one of the lucky ones in that I had significant programming experience at that time, which was quite a feat given the rarity of personal computers when I entered college in 1980. I was able to grow with the software industry, jumping into C++ as object oriented programming and design swept the industry. I also worked at a software company (Digital Equipment Corporation) and learned my software discipline from true software engineers (most of which didn’t have CS degrees).
The first question I have for a person with an MSEE degree seeking a software development position is a simple question - Why? Why get a MSEE yet pursue a software career? Why not a MSCS? There are many things that a computer science program offers that are relevant to developing software as a professional that are hard to come by one your own. For the most part I believe people are seeking employment and are applying for any position they feel they have a chance of landing.
As to why I’m so hard on EEs? First I was seeing significantly more people with EE degrees applying for a software developer position than any other discipline other than CS. The nature of EE programs is that most students are given exposure to programming languages, it is a rare EE that doesn’t know at least one object oriented programming language, typically C++. The impression I have received is that knowing a language is the same as knowing software engineering, which is not the case.
I work with many fantastic software engineers that have EE backgrounds. When we see an applicant with an undergrad degree that isn’t CS we are especially careful to properly vet them. Knowledge that we might take for granted with a CS education we need to validate if the person doesn’t have an undergrad CS degree.