views:

2189

answers:

44

I've been in an ongoing debate with our IT HR folks about the minimum requirements for mid- and entry-level developer/programmer positions.

I contend that with the right aptitude and attitude, good programmers and engineers can come from a variety of backgrounds, including the "school of hard knocks" route. My HR peeps want to throw away any resume that doesn't have BSCS in the educational background section.

Some of the brightest devs I've worked with have come from eclectic/non-traditional educational backgrounds.

Thoughts?

EDIT Anecdotal example: I can't count the number of times I've had to explain why version control is important to a new grad. If a candidate can prove an intimate familiarity with version control and release management, they're %75 of the way to getting hired.

+4  A: 

Less than a practical test. Most people that come out of college haven't written a line of code outside of class and don't know jack about coding in real life.

At least, that's the way it was for me.

Most of my current skillset I learned by reading and trying and failing and trying again. They don't teach that in college. Its a damn pity.

Will
+3  A: 

It is important if you are running a consulting company that has to send people out on jobs. It is also important if you are getting into areas that require a background knowledge in the areas covered in a CS degree- algorithm analysis, artificial intelligence, compilers, etc. It is vastly more important to know that these people can write code in a professional manner- which no degree truly indicates. How to figure that out is much more difficult, but hopefully you are using at least a simple programming test.

MattMcKnight
+2  A: 

I'm a C developer at a company making firewalls, network audit stuff, etc. and my education isn't complete. Half the employees are waiting for their diplomas, and nobody has any trouble. So it might be good, but it's not an excluding factor. It helps to have someone on the interviews who's technically adept enough to see if an applicant is a hack with a diploma or someone talented without one.

terminus
+3  A: 

I think your HR people are idiots. By their reasoning they wouldn't have employed Steve Jobs, Bill Gates, or John Carmack (though I guess Jobs wasn't really a programmer).

In my experience there's almost no correlation between the aptitude of a developer and whether they hold an undergraduate degree. This does change with post-grad degrees if you're looking for a candidate with experience in a certain area.

Andrew Grant
I suspect Bill Gates isn't/wasn't a particularly good programmer. He had good business acumen and, with help, coded something "good enough".
slim
@slim you would be incorrect. He's definitely a better business man than a programmer, but he definitely has the chops.http://tinyurl.com/7kedthttp://tinyurl.com/4j3ya
Wedge
/me accepts correction with grace :)
slim
+3  A: 

In all honesty, depending on where you are obviously, it's not. I would say some fields of programming would require it, but for the day to day stuff at most companies it's not really important. If someone is smart enough to get through the interview process and doesn't have one, it shouldn't make a difference. Two of the smartest people I worked with don't have degrees in CS and I would hire them any day over anyone I've worked with who has a degree in CS.

Kevin
+8  A: 

It is definitely not required, and if imposed as a filter may eliminate some of the best choices you have.

OTOH if you are swamped with resumes for a junior position then you need some kind of filtering and it is a better bet than just choosing names starting before M. The more senior to position the less relevant the degree becomes since the candidate should have the experience to prove they are qualified for the post.

Rob Walker
+2  A: 

Some of the best developer I know have a very different background. Even worse, relatively few of the really good developers I know have a BSCS :-(

But then HR need something to go on and unless you can afford to invite anyone and have them do a real test it is pretty much only thing you can use as a first selection.

But you want really good people look for the self thought people who came out of the army or studied something like music and test their aptitude and problem solving skills.

Maurice
+1  A: 

For mid-level, I wouldn't think the degree would matter much at all since they already have real world experience.

For entry level, the question is much tougher. I totally agree with your point that a good programmer can come from just about any background, but they need to have shown some sort of prior experience with programming before you hire them.

Most engineering and math majors will have had some sort of programming experience in school, and it's fairly common for people with those degrees to hop right into development jobs. And I think it's certainly a disservice to your company to not consider those candidates. My degree is in Mechanical Engineering, and I've had a successful 14 year software development career since then.

For someone with a degree like history or English it's much harder for them to show any sort of significant programming experience.

17 of 26
+3  A: 

I would say that example code and projects would be more beneficial than a BSCS. I'm currently working towards mine, and I know that I've learned far more on my own than I have in the classroom. Essentially, I've only learned terms to go with things I'd already discovered myself, if I hadn't read about them previously. I also know plenty of students who are practically inept yet still seem to be making it through classes.

Andrew Burgess
+1  A: 

It's only one aspect of the mix, and it only indicates that (A) they were persistent enough to finish college and (B) the subject was either their first choice or least unpleasant one. But it's not a very good filter criterion, in my experience. If you use it that way, you'll miss out on hiring some of the best in the industry.

Marcel Levy
+1  A: 

I would say that it depends on what level you are hiring the individual at. If you are looking for a Junior Developer then a couple of years of experience or an Associates degree should be enough to get a talented and motivated individual going. Where as if you are looking for for a higher level position then they should either have a lot of "real world" experience or have a Bachelors degree in a similarly aligned field (ex. computer engineering, mathematics, ect).

I wouldn't hold it against someone if they come from a non-traditional background but I could understand someone giving a plus mark to someone with the degree as opposed to without. Generally when interviewing you want to limit the time you spent to the applicants that you think would be the best fit for the job, so limiting the first wave of interviews to just those with a BSCS does make sense from a time management perspective.

From my perspective, more than anything else, the Bachelors degree in Computer Science offers the assurance that the individual with the degree has at least been exposed to the material and hopefully understands it. Where as someone coming from the "school of hard knocks" route there is no assurance that they have been exposed to it other than their work history.

Rob
+15  A: 

Your HR people are in HR, not tech. They have a pre-conceived notion of how to view the world, and it's an outdated one. Whether you can change that attitude or not is another question.

I honestly have no idea what the majors were of most of my colleagues. I majored in Asian Languages, for all that's worth. Several of my colleagues have no college degrees at all, and are entirely self-educated in coding. It makes no difference in their ability, as aptitude is king.

I'd rather take an uneducated kid who taught himself C at age 12 so he could build computer games, then a CS major who's a "9 to 5 programmer", any day of the week. (sorry for the run-on sentence!)

Danimal
Personally I wouldn't be so quick to dismiss the "9 to 5 programmers" in some cases I've noticed that they can produce high quality code that doesn't require them to work additional hours to get working.
Rob
Agreed. More hours doesn't mean better software.
Lars A. Brekken
"9 to 5 programmers" isn't about working hours, they are the people who start being programmers when they arrive at the office, and stop being programmers when they leave the office. It is a term meant to contrast with those who find the field interesting and program as a hobby.
Jim
That's not a proper run-on sentence. It's less than a page!
Marcus Downing
That's not a run-on sentence, it would be grammatically correct if you had used 'than' instead of 'then', unlike this sentence, which uses the forbidden comma splice and IS a run-on sentence.
Matt Kane
Not sure if it is an outdated one, or a never been correct one.
Alex Baranosky
If you don't enjoy programming in your spare time you'll never be as good as someone who does.
Chaoz
+1  A: 

It all comes down to how much time you're willing to spend on interviews. Adding filters to your resume stack decreases the amount of time you'll spend and hopefully improves the quality of candidates you'll interview. Of course, any filter has the potential to screen out a worthy candidate.

So: if interviewing every last applicant is worth it to you so that you don't miss that "diamond in the rough", go for it. Honestly, I think it will be difficult to convince upper management that the time spent is worth it.

JavadocMD
+52  A: 

Not important in the slightest when it comes down to it, really.

Heck, lots of the best software engineers I've worked with or hired either never finished college or had never taken a computer science class in their life (the physics programs at some universities have tended to produce exceedingly good software engineers in my experience).

Now, I'm a little biased since I'm one of those people that never really took a computer science class, and never finished college... and while I was there, I was a business major.

Now, that being said, some people really do benefit from some computer science programs, and they can be valuable, just as soon as those who have gone through them realize one or both of the following:

  1. They still have a LOT to learn, and knowing how to "program" is a long way off from being a competent software engineer
  2. They're going to need to forget lots of what they just learned

With real entry level people that would be coming to work for you straight from college, it can be pretty tough to weight their resumes since the "education" section will be so prominent compared to the "experience" section, although if you're getting good submissions along with some sort of cover letter or note, or, better yet, answers to some sort of little test or other question(s) instead of JUST their resume, this is made far easier. That should be enough to at least decide which ones to interview, which is where the real decision is made anyway.

To sum up, no, having a degree is really in no way any kind of accurate measure of how "good" somebody will be, skill-wise, and I can guarantee you that if you throw out any resumes that don't have a degree listed, you're going to pass up some real gems.

Chris Ingrassia
No need for me to write a comment now. Thanks for taking away an opportunity to up my rep.
MusiGenesis
You're right. The degree is BS.
SoloBold
+2  A: 

What is important (and this depends on the circumstances, assuming a developer role):

1) Experience (especially that which is relevant)

2) Educational background (especially good universities) although the course itself isn't a big factor

3) General attitude, past work history, lack of gaps in work history, grammar

The lack of a random qualification (e.g., Sun Certified Java Programmer) shouldn't be a problem to getting an interview. At the interview you can analyse the person's analytical and problem solving skills, and get a feel for how he would integrate with the team.

Not having a degree would be a major issue, but having a degree from a good university, but in a non CS field shouldn't be a problem if they've done work since that's relevant (e.g., physicists and engineers do programming as well, maths surely isn't a barrier, etc!)

JeeBee
See, I'd put #3 in the #1 spot. If someone is hungry to learn, loves tech, fun to work with/mentor, they'll be a star, and they'll succeed.
David Hill
I'd actually move your third choice up to at least the 2nd spot. I've seen some green developers with no previous experience or education, come on to a project with a willingness to learn and a generally good attitude, and turn out to be one of my greater assets.
stephenbayer
+1  A: 

I don't have a traditional CS degree, and I got hired on at a very large company for my interview skills and ability to learn new things.

In my opinion, I think CS graduates are more prepared than non-CS grads, but not enough to warrant excluding non-CS grads. In my personal experience I've learned more in my first month of employment than I ever did in school.

Ryan Thames
A: 

I know this is about Bsc's in general, but in respect to requiring a Computer Science degree...:-

rant

I am constantly frustrated by the requirement for a BSc, etc. Computer Science degree. I have a degree in an engineering discipline from a very good university (5th best university in the world) with a 2:1 grade, however it wasn't in computer science. I am teaching myself all the theory the course would have taught me as well as writing a damn C# compiler to somehow prove that I know what I'm doing, however I constantly feel like I'm never going to make it at the sort of company I want to work for without doing something so magnificent as to make me stand out.

I appreciate that having the requirement roots out a lot of no-hopers, but surely there should be some provision for people like me who work day and night to improve themselves to stand even a inkling of a chance of working somewhere like microsoft or google or another decent software house where I might stand a chance of being happy as a software developer.

/rant

Conclusion - require a degree/ [perhaps a non-cs degree] + experience, but don't just close the door on not having a CS degree. It is so frustrating for somebody like me you wouldn't even begin to understand.

Apologies!

kronoz
and you're the exact "diamond in the rough" that would be filtered out with such an assinine filter.
Danimal
A: 

I think some of the emphasis on degrees is you want to find someone who can see something big in their life like college through to the end, to weed out flakes who don't take things like that in life seriously. But that's a little unfair since there are a lot of reasons someone can't see it through, money increasingly being a big one.

I think that experience trumps degrees and certifications, or at least it should. That said there are some thing people are going to be exposed to in CS that they're not going to be just coding on their own, so a degree is not worthless, but there are lot of people who put the minimum in and also pass. You don't want those. I'd place more emphasis on their portfolio of work -- quantity of work tends to be a better indicator of coding ability than anything else I've seen. Which only makes sense, people who love to code, code more.

Steve Baker
A: 

When hiring developers, I usually look for a degree of some form (other than for occasional trainee/intern positions) but I don't care what that degree is in. Having hired several dozen developers over the years, I've found no correlation between having a CS degree and turning into a good developer.

I've hired first-rate people with maths, physics and engineering degrees - as you might expect - but also with languages, history, politics etc.

More important than the 'right' formal education is a track record as a developer (even if on small or home-grown projects for junior positions), a positive attitude, natural smarts, and a good character fit for the organisation.

For more senior people, I might give stronger consideration to a post-graduate degree in something appropriate (but still not necessarily technical) but certainly no more weight than to equivalent work experience.

Simon Forrest
+1  A: 

The place that I work at considered two years real work experience was equivalent to one year of college. From my personal experience I believe the reverse is true.

To me, what is more important is what did you do while earning that degree and how have you applied your knowledge. It the end it boils down to the interviewer having good phone and face to face interviewing skills to learn what the potential employee knows and not how much college a programmer has.

bruceatk
A: 

IMO, a degree means nothing unless you consider (1) the university it came from, (2) the transcript of the person, and (3) the person in an interview. I wouldn't accept or dismiss anyone based on a degree of lack thereof.

Thomas Owens
+1  A: 

I think it really just depends on how many people you want to interview, and how in depth your interview process is going to be. While a BSCS isn't everything, accepting only people with a CS degree probably does eliminate a lot of "noise" from your applicant pool. Maybe only 50% of the people you interview with a BSCS will be any good, but I'd bet that number would be less for people with either a different background or no degree at all.

I know a lot of people who when I say that I'm a "programmer" say, "Oh yeah? I do programming too - have you heard of Microsoft Access?" Unless your an Access dev shop, that person is probably not the right choice.

A well designed interview process (programming questions, team interview, whatever else fits) will likely screen out the candidates who wouldn't work regardless of if they have a degree or not. But, I think your HR department is just trying to save you from having to interview tons and tons of unqualified candidates. There's nothing worse than taking time out of your day to sit down to an interview with someone who 2 minutes in your realize doesn't fit the bill at all and must have lied on their resume about knowing C#. At least it's a lot harder to lie on a resume about getting a particular degree from a University....

Sam Schutte
It takes me < 5 minutes to review a resume and decide whether someone is worth pursuing or not. Even then, I'll do a phone screen, and in the first 10 minutes know whether a face-to-face is necessary.
David Hill
+1  A: 

Often HR feels compelled to screen applicants for the manager. If you were to filter your own applications this may not be required. They may be receiving 100s of applications for one position. They are looking for any filter to reduce the number of applications to be looked at. I see this requirement often in postings where I live which keeps me from looking around even though I have 10 years experience and an AS in computer science.

yakdan
+2  A: 

I think a CS degree is worth a lot. It exposes you to a lot of ideas about programming that 'school of hard knocks' types often dismiss, and are less useful because of it.

For example, even if you never use Scheme in your work, you might apply a functional style in some part of your code in procedural language, where it fits, and have better code as a result.

I've known people who pride themselves on industry experience, who dismiss essential things like test-driven design, as academic fripperies.

Personally, I'd like to work with the kind of people who have seen through three years of university. That's just me, and of course there are exceptions.

Of course there are people who become great developers without a degree. I think it would be more difficult for an HR department to identify them. They should probably have some sort of points system, rather than a blanket " !degree && resume.dispose()"

slim
+2  A: 

Google has sort of spearheaded the resurgence in demand for CS degrees. The demand has also moved into the zillions of "Web 2.0" companies that have appeared over the past several years. This debate has raged on numerous websites over the past 15 years and raged on BBSes and Usenet prior to that.

There is no easy answer to your question. The questions you have to ask are, does my company foster a culture where a formal education is valuable? Does the company want people with advanced degrees, or the capability to earn advanced degrees? Will we provide salary equality for degreed and non-degreed professionals?

Your anecdotal experience has value, and I'm sure some of the best programmers you've worked with came from non-CS backgrounds or had no degree at all. But on the other side, some of the best programmers have come from CS backgrounds. There's no real litmus test that says one is better than the other overall. It just depends on your company and its culture.

If I founded a company that focused on biotechnology, I would want my people to have degrees, preferably Ph.D.s. Why? Because I would know that they had substantial experience performing research and dealing with academic topics. If I founded a company that enabled microblogging, I would probably not care about degrees--just as long as the people could code and understood the stuff that we talk about here on Stack Overflow. Jeff Atwood does not have a degree. Joel Spolsky does. And yet, here we are.

(In the interest of disclosure, I don't have a degree. I studied philosophy for two semesters back in 1993.)

Robert S.
+2  A: 

It's a very minimal certification and little else. Given two candidates with similar backgrounds, I'd lean toward the one with a BSCS. For a programming position, though, I'd take a self-taught programmer with lots of Open Source experience over a newly graduated CompSci major any day of the week.

Having said that, the BSCS does mean that you can at least expect them to know basic theory. I'd much rather discuss database design with someone who knows what "normalization" means than someone who learned about databases from knocking out a home page in PHP. A self-taught programmer may very well have the same theoretical knowledge, but you need to explore that in the interview.

Just Some Guy
+1  A: 

Not important if you want to be programmer, anyone can learn online how to program. If you want to be a Software Engineer though, you most definitively need one.

I disagree. Yes, anyone can learn how to program. However, a big part of engineering is being able to deconstruct real problems, abstracting levels of complexity so that human brains can conceive of an entire problem-space. This isn't something that -only- BSCS grads are taught to do.
David Hill
A: 

All you really need is experience. However, in order to get in the door at most major corporations, you need to have the degree so HR will pass your resume on to the people who need to see it.

I have had a career in IT for 8 years and have yet to complete my undergraduate degree. The head of my IT department majored in Chemical Engineering. When he is asked what his qualifications are, he loves to state "I'm a chemist."

Haabda
A: 

Any company focused on technology should not be having a debate with HR about whether a degree (what kind and in what discipline) should be used as a filter for applicants. Remove the HR department and replace them with HR employees who have experience and knowledge about technology, and the people who make technology.

Once the HR department contains the right people for the job, they will understand for which positions, and under which circumstances, a degree is important.

A large portion of development is in-house, not meant for public consumption. Software houses are a relative minority. In that regard, HR is doing a lot more than just hiring programmers, so they're applying the same standards to programmers that they apply to, say for example, white-color types.
David Hill
+3  A: 

Quick answer: A BSCS is not a good measure at all, your HR folks are nuts.

Longer answer:

What are you doing, and what are you looking for? The CS part may even be a negative depending on what you're looking for. CS contains lots of theory and low-level OS type stuff. I'd expect a CS to be able to discuss the finer points of thread-queueing, but he may be completely useless when it comes to realistic database design supporting millions of rows of data. Of course, if you're looking to hire someone to help write Windows 7 then the thread queueing is more important than the database. The BS too may not be all that useful. The school of hard knocks, as you mentioned, can be a very good educator.

Having said all that, there needs to be some sort of filter, and most HR people can't use technical questions as a good barometer since they don't get the answers. So they use education as it's something they can grasp.

More importantly, what's the job description for the position? Did you write it? Did it mention BSCS as a requirement? If so, why did you include that requirement. If not, why is HR using a requirement that not in the job description? And if you didn't write a job description then how can you be upset w/HR? :-)

-Walden

WaldenL
A: 

In my experience (I've participated in interviewing a lot of candidates for software developer positions, and interacted with developers across a wide spectrum of skill levels) having a BS in CS has little correlation with developer skills. Seeing that data on a resume tells you essentially nothing.

On the other hand, there is a huge variation in skills depending on the College or University the degree comes from. Some schools definitely do a better job at ensuring their graduates have a reasonable skill set upon graduation than others, by a substantial margin.

Perhaps most importantly though, Computer Science is the wrong degree for software developers. Joel Spolsky talked a little about this issue on his blog. The main problem is that CS is the de facto "software developer" degree, which is very wrong because software development is mostly engineering and art, not science. Sadly, there is no adequate degree program in existence which provides a solid "software developer" education. This is due mostly to the young age of the field, the spread of degree credentialism across many parts of the workforce today, and a general uncaring about the huge gaps in education that entry level developers tend to have today.

Wedge
Some institutions offer both Computer Science and Software Engineering degrees. The SE programme would typically have less of stuff like Turing, lambda calculus and formal logic, and more Java, .Net and Python.
Dan Dyer
Worst case, the SE track teaches a different 5-10% of skills that are actually used in the industry (vs CS). More likely is that the SE program teaches 10-15%, which helps, but not enough. I'd rather students studied Code Complete, Rapid Development, Refactoring, source control, bug tracking, etc.
Wedge
+8  A: 

I think this is one of those questions for which you really have to come to an answer yourself. Posed in a forum like this, you'll invariably get a deluge of responses like "I didn't finish school, and I do just fine" and "lots of really smart people I work with don't have degrees". Such people carry strong feelings about the matter (which doesn't make sense, really), and will likely dominate the responses. People who earned degrees and currently work in fields related to their degrees are more apt to shrug and say "It might be important, but it depends", or not answer at all.

But all of that is irrelevant, because none of these people work for you or have your experiences or have to make your decisions. Just remember what a B.S. degree is: a general base of knowledge and scholarly aptitude with some non-negligible portion of specialized knowledge that is difficult to obtain. BSCS students, the good ones, will pick up a lot of the same skillset as a "self-taught" programmer will do; both out of necessity. Technical skills in particular technologies isn't what a degree provides (not good degrees, anyway). What you need to evaluate is if you need particular technical skills (probably) and whether you need people with certain bases of knowledge that are difficult to obtain outside the structured environment of formal instruction.

All that rambling is really just to say: just be cognizant of what a degree really is, and then decide if your business needs people with that kind of training.

Ben Collins
I think what you're saying is reasonable but it should make a lot of sense why some people have strong opinions on this topic. This issue comes down to identity and choices. People get worked up about everything so why not something that speaks to the heart of who we are as programmers?
Jon
The reason it doesn't make sense for the non-degreed to have a really strong opinion on the matter is because, by definition, they typically aren't doing jobs for which degrees are truly important and meaningful. Those of us who have degrees and *do* have such jobs may not even realize it.
Ben Collins
+2  A: 

I think it's important to remember that "no degree" doesn't necessarily mean "no formal education in programming". There are no doubt countless people who studied computer science or engineering at a university but never graduated (think: lack of funds, family crisis, etc).

If you require a degree you'll be missing out on all those folks and some of them could be very talented.

Bryan Oakley
+2  A: 

I've worked with people who are excellent programmers but don't have a degree and people who do have a degree but just don't get it. Many good developers I've worked with have degrees but not in CS (e.g. Physics, Chemistry or Engineering). So a CS degree by itself proves nothing. You also have to bear in mind that all degrees are not equal. A 2:2 from a below-average institution is not the same as a first-class degree from a top-rated CS department.

If you have to choose between 2 people of the same age, one who has got a CS degree and one who instead spent those years working as a programmer, the one with real world experience is almost certainly going to be more immediately useful to you. And once you get to dealing with people with 5+ years of real world experience, what they did or didn't do at university is largely irrelevant.

However, while they may well have more in-depth practical skills (such as the version control that you cite), self-taught programmers are less likely to have been exposed to as broad a curriculum as somebody who has a good degree. Elements of CS theory (such as computational complexity and compiler techniques), mathematics, and exposure to alternative programming paradigms are areas that may be blind spots.

Dan Dyer
A: 

I'n now in my mid forties with ten years experience in Lotus Notes development, I'm busier now than I have ever been. I have learned from a combination of books, expereince and carefully selected courses and nothing scares me when taking on new work. I came from a background in teaching (science/ maths/ cs in honesty) and used to think that I might not have a long career in IT but I now believe that I can outwork and out-think any graduate. If I was hiring, and I might be in the next year I would avoid recent graduates in favour of 30+ candidates with good analytical skills and some life experience. Don't let HR dictate who you get to interview.

AndrewB
I interviewed with a company in Akron OH in 1995 doing Lotus Notes consulting for Goodyear. They billed Goodyear $300/hr and paid new hires $30,000/yr. Pretty good gig, for the company at least.
MusiGenesis
A: 

Better that you get HR to pull that requirement off very quickly. I know many of the talented developers at my company, including our Microsoft MVPs, would have been filtered out for that requirement alone.

You're quickly going to find yourself scrounging for resumes or subverting HR completely if they try to enforce this rule.

Karthik Hariharan
+2  A: 

Your attitude is very similar to my manager, who was the one who hired me for my current position. I think it is a good attitude to have, but I may be biased because it got me a job. However your edit about version control software doesn't seem to reflect your general attitude. I actually never used SVN until my last semester before I obtained my BSCS. I instantly recognized how awesome it was, and how much time and headache it would saved me had I started using it earlier, but figuring out how to use TortoiseSVN took me all of an hour. SVN command line takes alittle bit longer, but the general idea is not a hard one. So why would you hold it against a interviewee if she had never worked with version control before, when it would take at most a week to get up to speed with the ins and outs of version control.

I can see your point of view, but if I interpreting you right, you are looking for people who are willing to learn, so it seems inconstant to hold lack of working software engineering experience against someone who just came from an academic background, especially when they are simple concepts that be overcome quickly if your candidate has the right attitude. Essentially I think it works both ways, I feel you are right in accepting someone without a CS background if you willing to overlook certain areas, I think you should also be willing to accept with a CS background who will most likely have more academic experience then 'real' experience.

James McMahon
Agreed Nemo. Don't get me wrong. Not having worked with version control won't get you thrown out. There are other ways to score big bonus points. That's just an anecdotal example of something that isn't being taught in BSCS classes.
David Hill
A: 

I'll tackle the mid-level developer part of the question first. When I've made hire/no-hire decisions in the past, the absence of a bachelor's degree in CS is not an automatic disqualifier for me. If a candidate has an undergraduate degree in a hard science (e.g. physics, chemistry), a discipline with a quantitative emphasis (math, economics), or engineering, along with work experience in programming, they're worth interviewing.

That said, I recommend against "hiring by anecdote". Everyone has at least one story of someone they know, who didn't have a CS degree who was the "best programmer ever". A candidate search that casts too wide a net is likely to bring a flood of resumes you don't really want. For example, I used to work for a company that wanted to hire a software development manager. The job description cast so wide a net that we actually received a resume from someone who was currently managing a hotel.

If there are particular things that you want your candidate to know, like version control, release management, NUnit, or anything else, put those things in the job description.

Unless you've got the bandwidth to mentor and train fresh college graduates or junior developers (or an internship program), it might be best to limit your hiring pool to experienced hires.

Scott A. Lawrence
A: 

A Computer Science degree might work as a filter, if you have a ton of CVs and need to filter them quickly. At least the people you get are likely to know something about programming.

I would NEVER use such a filter. A much better approach, if you have that many applicants, would be to limit yourself to CVs with a good class of a degree, or from good universities. Yes, I know full well that you will miss out on good candidates that way, but you will miss out on good applicants by applying ANY filter.

FWIW I started coding when I was about 11 or 12, and did Engineering for my degree, because I knew full well I'd end up coding for a job and wanted to do something else first. I now employ two fantastic software engineers, one with a PhD in Engineering (Image Processing) and the other who did Computer Science. Quite keen on picking up a Mathemetician and a Physicist at some point to mix things up a bit, but I certainly won't be limiting myself to any particular degree. Everyone is different.

Airsource Ltd
A: 

I've been managing software developers for over a decade now. Computer Science is still an evolving field but this is what I can share with you from my experience at the largest software company in the world. Although it used to be true that all we cared about was the ability to write code, and sure there are good self-taught coders out there, the fact is that today Engineering software for performance, security, supportability, and expandibility is becoming far more important (notice I highlight the word Engineering). IMHO degree'd programmers give you the best ideas and flexibility to help a project grow to a long-term maintainable state. After all, degree programs do expose these people to a broad range of ideas and techniques, and these programs are so difficult that only the best people survive. Also, the undegree'd programmers usually have a chip on their shoulder against education for whatever reason (which is always bad) and they are limited in other ways. Yes, some are experts in their "niche" but if you have a different kind of software project that needs different engineering, your undegree'd folks will always fall back on their past experience which isn't usually optimal for the new needs. The brightest in high school tend to go off to school, and become the brightest for new hires. Of course there are exceptions to the rule, but if you want quality problem solvers I will always recruit the kid who did well in a Computer Science degree program.

A: 

A major caveat with people who do not have the BCBS but are good programmers is that they are often lacking in theoretical CS angles that may affect their work - algorithms, data structures, and most importantly, computability.

Being able to do regexps in perl, for example, doesn't mean that you necessarily understand why you can't do a^nbB^n is a problem, or why you really can't calculate a certain thing.

This is also occasionally a problem with developers who have a BCBS in other fields and are now developers.

That being said, being a good CS person != being a good engineer

Uri
+1  A: 

Experience trumps degrees in my opinion. Bill Gates, Albert Einstein and Thomas Edison were all dropouts.

You forgot to list all of the other drop outs that we never found out about because they became homeless meth addicts.
brian d foy
+1  A: 

It is not of the slightest importance. One of the better programmers I had working for me had a HND (British vocational equivalent of a degree) in business studies and had come up through the secretarial route.

The key thing to remember about people who come into CS from other careers, is that these people wanted this job enough to start again at the bottom, which is a highly desirable character trait. They didn't just walk into software engineering because "that's the next thing to do".

In case you were wondering, my career history goes

BSc electronics
systems engineer
firmware engineer
team leader
s/w development manager
salesman
senior software engineer
principal software engineer
consultant

I've had a couple of wrong turn myself, so I'm certainly not going to object to anyone else changing careers :-)

Bob Moore
+1  A: 

It is an obvious truth that there are brilliant developers without a BSCS degree. Here are a couple more examples I didn't see mentioned:

  • Anders Helsberg, the architect of Turbo Pascal and C#. No degree.
  • David Cutler, the architect of VMS and Windows NT. He has a degree, but not in CS.

I use these same examples to also refute that the only way to become skilled at CS topics such as languages, operating systems, and compilers is through a CS program.

jwanagel