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.

Possible Duplicate:
Is a university education really worth it for a good programmer?

There're many talented programmers who didn't go to school and who accumulate tons of personal projects. There're also many non-talented ones. There's the entrepreneurial kind that just needs a job to pay bills. Why wouldn't you hire someone without a college degree or long term experience who just seems to be the guy for the job?

share|improve this question

marked as duplicate by Anna Lear Oct 18 '11 at 4:56

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

What precisely does "moonlighting" mean in this particular question? –  user1249 Nov 23 '10 at 15:31
Moonlighting: I mean programmers with tons of personal projects, the seemingly entrepreneurial kind that just keeps trying and failing. –  dblock Nov 23 '10 at 15:33
I suggest you use another term. Moonlighting indicates they will be working for you as their second job. 'Hobbyist' may be a better choice. –  Thomas Langston Nov 23 '10 at 15:38
The question as a whole seems somewhat ill-formed aside from the weird use of "moonlighting". You also don't seem to be using the term "experienced" very clearly, and overall it feels like there are some unstated underlying assumptions whose nature is unclear. I'm having real trouble figuring out just what kind of developer you're talking about. –  Nicholas Knight Nov 23 '10 at 15:46
You're right. I just removed moonlighting, I am more interested in the second part. –  dblock Nov 23 '10 at 15:48

14 Answers 14

up vote 63 down vote accepted


I was very unimpressed with my own schooling and some of my fellow students were really not very good at programming and only passed because they got their hands held. Because of this, I do not value college degrees that much.

I am much more interested in past experience, how intelligent the programmer seems, their problem solving abilities, and the sort of personality they have.

share|improve this answer
+1 for experience, intelligence, and personality. –  bogeymin Nov 24 '10 at 12:32
One of my friends is about to graduate and can hardly write any code. He's very smart, motivated, creative and all that other good jazz -- but my school simply doesn't know how to teach or test students. One of my profs proudly boasts that he taught intro Java without having known any syntax. Another taught C without any understanding of how a non-GC (non-Java) language manages memory. The class average was below 40%, and he wasn't sure why. –  Rei Miyasaka Dec 27 '10 at 17:38
Oh by the way, this school is supposed to be one of the most prestigious comp sci schools in Canada. I believe in academic reputation for certain fields -- but programming/computer science isn't one of them. –  Rei Miyasaka Dec 27 '10 at 17:40
Dilbert has taught me that motivation, intelligence, and personality are futile. –  Xeoncross May 19 '11 at 18:54


For me once you've got a few years experience education is basically a Resume / CV thing - it gets you an interview but beyond that it's unlikely (unless you have a spectacular degree) to be a major deciding factor.

My reasoning is essentially that (a) if you've worked for three years then I'm far more interested in what you did at work than what you did at university as it's far more likely to be applicable to what I'm going to ask you to do and (b) we all make a bunch of dumb decisions when we're young and I don't think what someone chose to do (or messed up) when they were 18 is necessarily that relevant to what they're doing when they're 25.

If someone without a degree can convince me that they are, based on their experience and other factors, worth an interview, then I'll interview them and from then what they demonstrate there will likely be far more important than what was on the resume.

Possibly worth remembering that Bill Gates never graduated and Albert Einstein failed his university entrance exam.

share|improve this answer

I think you aren't understanding how the hiring process typically works.

Your question has an implicit assumption that hiring managers look at one candidate and make a yes/no decision on that person based on whatever criteria they prefer. Unless there is a severe shortage of programmers at the time I am hiring, the hiring process is a lot more like a competition. It isn't about proving you can do the job. It is about proving you are the best/safest choice in the candidate pool.

So, would I hire someone without a degree or lots of experience if they could demonstrate competency? For a product development job, sure. If they could prove that competency, a task made much easier by certifications, degrees, or experience. However, they would also have to prove MORE competency than the other people who are applying. All else being equal I'd take the person with the degree/experience or both.

For a job within a consulting firm I'd have a much harder time bringing in someone without documented credentials because in this scenario I'd essentially be re-selling that developer's skills to clients. Even if they are a star in practice, but not on paper I'd prefer not to have to repeatedly try to explain that to potential clients.

share|improve this answer
Hi @JohnFx im curious to know why you would have to explain your employees education to potential clients? –  Jonathan Nov 24 '10 at 3:33
@Jonny: As a consulting firm, you're billing out employees to clients. The clients will want some assurance that the people they get are good, and they'll likely be more interested in credentials than performance (which they're in no position to judge up front). In a long-term consulting relationship, this may be less important, as the client and consulting firm would have built up some trust. When the consulting firm is trying to drum up new business, anything that needs explanation or excuse is bad. –  David Thornley Nov 24 '10 at 14:59
@Johny - Pretty much what David said. If I was selling computers they would want to know the specs on it. When I am selling programmer's time, they want to know the same. –  JohnFx Nov 24 '10 at 16:13

I've done it three times, and regretted it two of them. Here's why.

Anybody with the right talents and motivation can become a competent coder. But it takes a lot more than that to become anything other than a code monkey.

Professional software development is really about making somebody's life easier, or more fun, or solving some problem they have by writing code for them. To do that effectively, somebody has to be able to understand and encompass the customers' concerns. If all you can do is crank out code, that person isn't going to be you.

When you get an American computer science degree, it's not a four year version of high-schoool auto shop for programmers. They require you to study lots of other subjects like science, literature, sociology, art, music, and so on. If you actually pay attention, that broad background is incredibly valuable in a software development career, because it will give you a basis for understanding the needs of people who are willing to pay you to write software for reasons you would never come up with yourself.

The other thing you can get from a bachelor's degree is four years of mentored training in how to learn about really difficult, weird subjects you might not even care about. If you cooperate with what the faculty is trying to teach you around that, you will wind up with the self-discipline, patience, and intellectual tools to achieve rapid comprehension of an astonishing range of topics.

Of course, I'm not saying everybody who comes out of college has achieved those things - in my experience, most have missed out on some or all of it. (I'm currently reading a lot of literature at 52 which I could have studied in college if I hadn't been so full of myself at the time.)

And I know for certain you don't need a CS degree to be a competent coder, because I'm a chemist/mathematician who's only ever taken two FORTRAN classes in the '70s. Nowadays, I do all kinds of interesting computer graphics and human interaction work in C, C++, and Objective C on Linux and Mac, and even present papers on it. And I've hired really great programmers who wrote great software with non-CS degrees, including a medievalist, a physicist, a mathematician, a clarinetist, a historian, and a cinematographer.

Why did I regret hiring those two guys? One was a college dropout who couldn't cope with steep learning curves, so when we ran out of trivial work for him, what he wrote was junk; he quit right before we were going to fire him. The other is a really brilliant coder who dropped out of high school for a programming job, but is a "my way or the highway" kind of guy who kept blowing off the customer's need to get the job done on time, so I fired him.

Of course, it's possible somebody with a degree could have those problems - but it would be a lot less likely. If you can't learn, or you won't do what the prof wants, you'll get lousy grades and you won't get a degree.

And it's possible somebody without a degree could have learned all the non-CS skills I cite above outside of college. But that would be way more effort than picking those up by going to college. So not only would they need to explain why they didn't go to college, I've honestly never met anybody with those skills who didn't go to college.

share|improve this answer

I personally think someone like this deserves serious consideration if they can demonstrate that they know what they're talking about in an interview, but I'll play Devil's Advocate:

  • Risk aversion. Noone ever got fired for hiring someone who took the traditional path over someone who didn't.

  • Someone like you describe is more likely to have only very narrow experience doing one specific type of programming in one or two languages. Someone with a comp sci degree or more experience is likely to have the breadth of knowledge required to think outside the box and/or solve problems that are not exactly in line with his/her job description. Then again, you can weed out people like this by asking a few slightly off-topic questions in the interview. For example, ask a Web programmer something about memory management, or ask an embedded programmer something about object-oriented design.

share|improve this answer
+1 for "experience is likely to have the breadth of knowledge required to think outside the box and/or solve problems that are not exactly in line with his/her job description". –  Chris Nov 23 '10 at 16:05
  • Another candidate with similar skills plus a degree or experience. This primarily.

  • A requirement to not only code, but also articulate your process in terms a degree or experience would have taught.

  • A requirement from higher up in my organization for credentials.
  • To protect myself, if the hiring decision turns out to be a poor choice.
share|improve this answer

I feel as though most good software engineers moonlight just by virtue of wanting or needing to have projects outside of work. Whether it is part-time consulting that you get paid for or contributing to open-source projects, it's 'work' that you are doing outside of 'work.'

If I were interviewing a programmer for an opening on my team or for my client, I'd be a bit suspicious if he or she didn't do any kid of side work. I'd be concerned that he or she was passionate enough about software engineering to be any good at it.

Anyone who can produce high-quality results on a predictable and sustained basis is OK with me.

share|improve this answer
+1 for "work outside of work" being important! –  Frank Shearar Nov 23 '10 at 17:01
What if a developer has a fulfilling job that keeps his/her tools sharp, and also happens to be an outdoor/travel/art/people enthusiast with 2-3 kids who does not have time for an open-source project. I personally would be suspicious if a programmer did not have life outside of computers. –  Job Nov 23 '10 at 18:35
@Job: an entirely valid point. I would look at the hypothetical candidate whom you describe as being a well-balanced person, and in fact, it sounds a lot like me; although, I do consulting and open-source projects, too. No rule is ever absolute. –  Adam Crossland Nov 23 '10 at 19:15
On Programmers.SE, Job finds you!! :D –  dr Hannibal Lecter Nov 23 '10 at 20:29


A degree doesn't show ability or aptitude for a role.

Also see this on SO "How does someone without a CS degree get an interview in a sluggish economy?"

share|improve this answer

I don't much care whether a candidate has a degree or not -- I haven't found it to be an accurate predictor of anything. Some graduates are useful, some are not, and the same goes for non-degreed folks.

I get a lot more from talking to people, checking out their references, and from seeing their code, than from their pedigrees.

share|improve this answer


I would only do it if they could provide reliable references who will support their claim that they actually did the work on the project(s). Additional feedback on keeping promises, hitting deadlines, finishing projects, etc. would need to be provided.

Not sure this is any different than someone with job experience. Anyone straight out of school, the focus would be on school work, internship, and self study (more points for self-study).

share|improve this answer

A four-year bachelor's degree tells me that a candidate can start a long-term project and see it all the way through to completion, in the face of large quantities of chickensh*t and lots of temptations to go do something more lucrative and more fun. The ability to see something all the way through, and not quit and leave my company in the lurch, is IMPORTANT.

The candidate who doesn't have that degree has to make that showing some other way.

Also, it at least used to be the case that a four-year bachelor's degree in Computer Science meant that the candidate had been exposed to a certain body of knowledge. As ONE example, the candidate can reasonably be expected to know what mutual exclusion is, and why it is important, and what deadlock is, why it is bad, and how to keep from getting h0zed by it. The non-degree candidate may have holes in his knowledge base, he may not even be aware of those holes, and filling those holes may cost my company a lot more money than hiring the degree candidate would.

Admittedly, I work in mission-critical embedded real-time systems, systems on which human lives routinely depend. This isn't Web 2.0. My recent work has been voice and data systems for combat helicopters. That system is on the Minimum Equipment List: If it isn't working on the ramp, the helicopter doesn't leave the ground. If it fails in flight, the pilot declares an emergency and lands the bird as soon as he can.

share|improve this answer

In light of the revised question...

First, formal education on its own is virtually worthless for most of today's developers. The best thing to come out of e.g. a computer science degree is a (hopefully) strong grasp of mathematics, but most of the time, developers never use anything beyond basic algebra.

There are subspecialties where this isn't as true, but odds are your company either doesn't need it, or you already know what you need and that this isn't it.

Experience and a general keeping-up with the field trumps formal education every time, and much of that experience can come in many forms.

If they have no experience working in a real business, contract for a small one-off project and see what happens. Or, they might have general technical skills that are useful -- make their primary duty "IT monkey" and start giving them bits and pieces of development projects to work on (that's basically what happened to me five years ago).

In six months, you'll either have a good programmer, or you'll have limited (if not negated) the damage from hiring the "wrong" guy. Just make sure you don't leave the good ones hanging with that crappy starting salary and monkey title too long.

share|improve this answer
Have you ever been in a good degree program? You can learn a whole lot of useful things, including English writing skills, which are surprisingly useful in most careers. –  David Thornley Nov 24 '10 at 15:01
@David I've never met a good developer who wouldn't have been just as good (if not better) without having blown time on a piece of paper. I also can't comprehend why you would think spending four years on a supposedly technical degree and getting nothing but ancillary life skills was a good deal. If you want that, and your high school completely failed you, spend 1-2 years on a general education AA. You'll get better results. –  Nicholas Knight Nov 24 '10 at 15:44
I don't know what you mean by "good" in this context, I don't know what fields you work in, and I don't know how you can tell how a developer would have turned out differently. Further, the ability to communicate clearly, beyond high school level, is hardly an ancillary life skill. –  David Thornley Nov 24 '10 at 16:58

I would hire someone without a formal education, provided they can do the job and show that they can learn new things. The main problem without having that degree is getting through HR. If you can get past those people and get your resume on my desk and are a good fit for the job I really don't care if you have a degree or not. In fact, a lack of degree probably means you can save me money because I probably won't pay you as much.

share|improve this answer

I would, why not? If their resume is compatible to what my company needs, there is no reason to not even offer an interview. You'd be surprised by people's programming abilities that have no degrees or have non-related degrees. You could always ask some technical stuff or ask them to implement something on the fly to make sure they are not bluffing. I'd also prefer a person without a degree if he/she seems like someone easier to get along with than a person with a degree and a bit more knowledge.
Knowledge is easy to attain, personality is often unchangeable.

share|improve this answer

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