Say you need to hire a programmer. You have two candidates at your table: one has studied 5 years at uni (and holds a Master's degree, of course), but has no work experience; and the other holds no university degree but has worked for 5 years. Also assume that they both know the same programming languages, have about the same personality and spend equal amount of time programming on their spare time.

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.
If this question can be reworded to fit the rules in the help center, please edit the question.

12

You do have more information, which is needed to answer the question - what is the job? Does it require jumping into an on-going project that's just lost a developer? Can you afford the time to train-up a new person in any relevant technologies?
–
CyclopsNov 24 '10 at 18:52

17

"If you only had this information to go on" ... well, then it's simply no enough information to hire anyone. The uni guy could be an archeologist and the worker guy could be a plumber. Both know the same programming languages (i.e. none) and spend equal amount of time programming on their spare time (i.e. none).
–
user281377Nov 24 '10 at 19:52

1

Another consideration may also be government grants for taking on graduates, depending in the country you're from. If you can pay £12k for a junior developer (and they receive 8-10k extra from the grant) vs £30k+ for the one with 5 years experience, it may swing the decision. Budget is important too, and the one with more work experience will likely command a higher price!
–
adamkNov 24 '10 at 22:56

2

Depends on the job. Is it entry level? Is the position expecting to know a lot or a little? Is someone needed with practical know how or theory? The question is more or less unanswerable at the moment.
–
TonyDec 8 '10 at 21:14

17 Answers
17

I'd pick the guy with the work experience. He's a whole lot more likely to have experience with stuff like source control, team software development, edge cases/error handling and all those real-world things that programming classes don't tend to cover much, if at all.

This may or may not count for anything, depending on who the previous employer was, but it's worth noting that five years ago, this guy was good enough to get a programming job somewhere without a degree or work experience.

+1 for noting getting employed with 0 years of work experience and no uni degree.
–
gablinNov 24 '10 at 19:01

8

I don't know about the second half; work experience with no degree could mean anything. Could mean he was the boss's nephew. As usual, context is everything.
–
AaronaughtNov 24 '10 at 19:03

2

@Aaronaught: Yes, like I said, "this may or may not count for anything, depending on who the previous employer was."
–
Mason WheelerNov 24 '10 at 19:17

2

In a small company where getting the specific immediate work done, relevant work experience is more desirable. However, in a large firm (e.g. Microsoft, Google, Amazon) it's often better to hire a person with solid broad base, ambition, passion and potential, who will learn on the job and apply their skills in diverse contexts / different teams as they grow their career.
–
dbkkDec 7 '10 at 8:31

1

After reading this answer for the second time I'm even more skeptical than the first. Why just assume that the guy with work experience is "more likely" to have experienced those things? An academic may have worked on a lot of open-source projects whereas a guy working in a tiny shop may have never had to use source control. This is wild speculation; the only reasonable approach is to actually find out what experience they have from the CV and interview. I'm honestly no fan of the academic world but I'm even less of a fan of prejudice.
–
AaronaughtDec 9 '10 at 15:41

Do I want someone with more experience as the majority of other developers are rather green and thus haven't quite had to deal with real-world projects? If yes, then I'd take the 5 years of work as that could be very useful possibly.

Do I want someone that may have little work experience as the majority of other developers have a lot of experience and would like to take on a more junior developer? If yes, then the 5 years of uni. may be better as this person hasn't been molded by experience yet.

Another way to state this is whether or not that work experience can be seen as a good thing or a bad thing in hiring someone.

That really depends on what the work experience is. Myself, I would say I've learned more practical skills on the job than I ever did at university. But then again, as the saying goes, some people get 5 years of experience, other people just get 1 year of experience 5 times.

Does the experienced guy have stable employment history? Did he work on important projects? Did he have important roles? So much is riding on the specifics. At least, with a Master's degree, you know exactly what you're getting. It's very possible for people to slug through 5 years of work without ever really accomplishing anything.

I think you really need to evaluate the specifics of the experience. What did they learn/do in university and what did they do (and hopefully learn) on the job? Which is more relevant to the projects your company does? That is where your answer will lie.

@David: I've been continuously employed by one company for over 5 years now; I really don't think our field is as special in that respect as people make it out to be. That said, when you're in a hiring position you have to be able to make a judgment call; I wouldn't necessarily hold it against someone if they changed jobs two or three times, but if they never stay in one place for longer than 6 months, that's a red flag.
–
AaronaughtDec 9 '10 at 17:20

Seriously, I want someone with a education and some experience, so I'd advertise the post again.

The problem with the education only programmer is that I can't be sure that she can apply theory to practice. She might know her big-O, but does she knows how to make pragmatic decisions that will make business sense for both my clients and my company? I can't possibly know, so despite the impressive paperwork and post-nominal acronyms she's too big a risk.

OTOH, the experienced programmer might well able to hit the ground running. She has shown that she can hold down a job, so there is a good chance that she can add business value and crank out some code. On the other hand, she may not have the depth of understanding to progress beyond monkey-coding. She has shown little evidence that she has the analytical, problem-solving and creative skills that are required to become a first-class developer. To be blunt, she could well be a bit thick. I can't risk the future of my company on someone like that.

Both these candidates have failed to demonstrate that they have what it takes to work with me. They might both be brilliant, but the risk is simply too great to hire either of them. For these reasons:

it is a no hire from me.

However...

That need not be the end of the story:

My advice to the person with the Masters is that she go get some real world experience and come back in a year or two, because we could use someone with her brains.

To my experienced candidate I'd recommend that she spend some of her hard-earned on getting some higher education. If I have my way then there will be a post waiting for her if she can slog through the first year of her degree - at which point we can come to some arrangement over sponsorship for the rest of it.

The ideal outcome is that they both heed my counsel. That way I'll get two great programmers. Perhaps I will even get a chance to pair them up - they certainly appear to be well situated to help each other make the best of what they have to offer.

So now we're all happy, and I can revise my answer and hire them both!

Well, everyone is happy, except the company that hired the degree-holder, spent the time and money to train her and give her a year's experience - only to watch her quit and take a job at your company...
–
CyclopsNov 25 '10 at 0:46

5

-1: The question is loaded, and bad, but this answer is elitist - and a copout. You're asked to pick on.
–
Steve EversNov 25 '10 at 1:40

3

@SnOrfus: Elitist is required when aiming to pick the best staff.
–
OrblingDec 8 '10 at 20:22

All other things being equal, the guy with the degree is likely to have broader knowledge in the computer field, and has been exposed to a lot more different concepts, while the guy without has real-world experience, preferably with reasonable software tools, and is more likely to be productive right off.

Exactly what this means in terms of who you hire is entirely dependent on what you want.

it depends on the assignment. for example if the Master's thesis was in a research area that was critical to the project. in general, experience wins...but i don't have a large corporate HR department vetting candidates!

The first thing that an engineering manager learns is that engineers are NOT interchangeable components. You can take two guys who worked side-by-side EVERY DAY in school and/or at work, and they will STILL have different knowledge, talents, and skill sets. You HAVE to match the candidate to the job. If (for example), I need someone who KNOWS compiler design inside out, a guy who did his masters in compiler design is going to be a LOT more useful than a guy who spent five years hacking insurance processing in COBOL.
–
John R. StrohmNov 24 '10 at 20:29

In the real world things like this don't happen a lot and the person hiring the candidate has a lot more to figure out who he/she wants.
5 years of university: which university are we talking about? What was his thesis? Someone that has gone to school for 5 years and has no experience/contribution to a project/some useful app is a big red flag in my opinion.
If you need someone to work on a project that isn't very esoteric in terms of theory then the guy with 5 years of experience is more likely a better fit.

Edit:
I just wanted to add that non-degree programmers don't necessarily lack the conceptual/theoretical notion of CS that you think the degree person has. There are many degree-less people that know the CS theories enough to make informed decisions and vice-versa. I was reading Coders at Work by Peter Seibel and in many interviews, there are consecrated programmers that were self-taught (ex.: Jamie Zawinski), went to college briefly and dropped out, or just found it too limited. "When it did get interesting, it was over."

I'm a non-degree person (taking a break from college, just took one full year worth of CS) and I've been working for about a year as a developer and whenever I think I lack the "theory," I research, read books, watch university lectures online, etc. The difference between a college student and I is that I know what I need to or should know for a particular task or project that I need to implement, whereas a college student studies it with the aim of getting a grade on the class project, midterms, and final exam. Most forget what they learned due to the fact that they didn't have a real clue how it would become useful later.
Since I've been a CS college student, although briefly, I know how many of my CS mates felt when it came to CS classes and projects.

I have a feeling that if I stay productive at work, keep learning on my own, get sponsored training, my accomplishments will be worth a lot more than a diploma because I'll be able to say that I made my clients cut down costs, be more productive, not to mention the value to my own company. In case I feel I need a formal education, I'll go back to college and finish my degree and benefit from the perspective I gained from working in industry.

Since there isn't enough information to go on, I'm going to assume they are equal in every way but education v. experience; otherwise, if I can identify one being a better programmer than the other, that's who I'm going to select regardless.

That is not the case, so I'll hire the one who is cheaper. Sorry, but if you're just as good as someone coming out of school, you don't deserve more money-you're suppose to be better.

The place I'm starting at in January won't take anyone without an engineering degree (a government agency that deals with construction). It doesn't matter if you walk on water, make fish & chips for thousands, turn water into wine and invented the computer; no degree = no hire. It wasn't discussed at the interview, but I think I will have to get my PE.

I wouldn't be considering them for the same position. When I was recommending recent college grads for for entry level positions, we really liked a candidate just finishing a masters in CS. Unfortunately, we, including the SVP, couldn't hire her because she also had several years work experience. That put her outside the pay category for the position. In general, a decision was made on the experience level before the job was posted and only those with that level would be considered.

As I mentioned in another post, the value of a CS degree is in inverse proportion to the length of work experience: very valuable with no experience and of little consequence after about ten years experience.

Like many others have said, it largely depends on the specifics of the position.

The experienced guy will get things done a lot faster, but will plateau sooner.

If you need a line of business app done asap, the experienced person is your guy, but if you're building a highly complex piece of engineering and they will be mentored, it seems to me the educated guy may be your best bet.

I dont think there's any basis for the claim that those without a degree will plateau sooner. Its not like they hand out mysterious tomes containing secret knowledge to comp sci students that arent available to people outside of the university.
–
GrandmasterBDec 9 '10 at 21:01

I'd pick the guy with the 5 years experience. Depending on the course/degree the guy with 5 years in university has completed, he may have no experience of real world tools like source control, code analysis tools etc.

All this is extra training overhead. From personal experience, I had no idea what SVN was until I started working, this was after completing a four year Computer Science degree.

Depends on the position. If I need a junior developer, I'd grab the one with the degree, pay them junior developer wages for a couple years and keep an eye on them. If they're good, they're on a fast track to bigger and better things.

OTOH, if I need a senior developer who can step in, set up a build environment and start analyzing requirements, I'll hire the one with experience.

As with almost any answer to a "technical" question, the answer is "it depends".

Am I hiring someone where real world, practically is the most important part? Do I need them to lead a team and deliver on time, on budget?

Then you go with experience, because that sorta stuff you only learn by doing.

If I'm hiring someone to build something that's never been built before, or come up with a whole new way of doing X, then perhaps the education is more important. Then again, most of what you learned in school will be irrelevant in a few years, save for software engineering fundamentals.

This depends on one more factor that if the experienced guy worked in one company or multiple companies within this 5 years. If he had worked in maximum of 1 or 2 companies, I would definitely choose the experience guys.

Reasons are:

First of all, he will have work ethics. No more training needed on this case.

Practical knowledge is always better than theoretical knowledge. I am saying the same relevant field of the experience will have better knowledge than 5 years of course of the same field.

Since he did not move more companies in the 5 years, it shows his loyalty. You can invest on your money to get things done. With the fresher, you cannot expect that he will be staying if the work pressure is more or if he feels that the job is complicate.