84

I am in a position where I have to hire a programmer and have the option of 2 candidates, the first has experience but he doesn't have a passion for coding and he says so while the second doesn't have the experience but he has the passion, he did well in the interview and is certified.

We have the resources to train someone, but I really don't want to blow this process and hire someone who will be disappointing. Can anyone help me as to how to approach this situation?

yannis
  • 39,547
  • 40
  • 183
  • 216
Duke
  • 303
  • 3
  • 7
  • 6
    I wish it was , "skillful vs passion" – iamgopal Jan 17 '11 at 11:37
  • 32
    -1 to the interviewee who admits to not having a passion for the job he is interviewing for. – Wonko the Sane Jan 17 '11 at 14:30
  • 1
    Please elaborate. _Passion_ is a loaded word in this usage. Also it is not clear whether _passion for coding_ means strictly for the coding phase of development or shorthand for software development. What do you need? Is meeting short-term goals the most important thing? – mctylr Jan 17 '11 at 17:00
  • What does your company need? If the focus is maintaining the status quo, the experienced guy is going to have a lot to offer you. On the other hand, new technologies, ideas and products are better handled by a lifelong learner. Technology never stops changing. The experienced programmer's experience will soon become useful only to aging products. But, in reality some companies only work on aging products and will get little use from a passionite programmer focused on the latest and greatest. – P.Brian.Mackey Jan 17 '11 at 17:38
  • 1
    hopefully neither candidate is a member of this site – Dan Hanly Jan 17 '11 at 17:55
  • 4
    What if he lied about the passion or just was acting? – Lukasz Madon Jan 17 '11 at 22:29
  • 8
    +1 to the interviewee who admits to not having a passion for the job he is interviewing for, At least he is honest enough. – Sarawut Positwinyu Sep 10 '11 at 02:19

19 Answers19

155

Hire the inexperienced programmer with a passion for the craft. A passionate programmer will learn quickly, care about his work and enjoy doing it. I've worked with both types of programmers and I would always hire the passionate type over the experienced.

People who don't care about their work eventually lead to problems in quality as well as in meeting deadlines.

Since you explicitly state that you have the resources to train someone, this is a no brainer. Hire the passionate programmer.

Matthew Kubicina
  • 551
  • 1
  • 4
  • 7
  • 6
    +1 ... at least the passionate one does not have a reason to leave ... unless he/she is too passionate. – Job Jan 17 '11 at 02:35
  • 10
    +1 There's a saying... "that guy has 1 years experience 7 times". A clear case where experience (of sorts) is not really working for you. – quickly_now Jan 17 '11 at 07:03
  • 14
    On top of that, a lot of "experienced" programmers are just people who have been around for a long time, not that they are good :p – Philippe Jan 17 '11 at 09:45
  • +1 The passionate programmer has the fire of learning burning brightly within them - that is the most important aspect of all. – Gary Jan 17 '11 at 09:50
  • 3
    +1 Every time. It's a **lot** easier to gain experience than it is to restore passion and you don't need a "passion sump" in any team. – John Parker Jan 17 '11 at 11:31
  • 5
    True, with one caveat. A passionate programmer *may* learn quickly. Sometimes, unfortunately, some people "just don't got it." – Wonko the Sane Jan 17 '11 at 17:11
  • 3
    @Matthew, I'm loving the fact that the top two voted answers are polar opposites **:D** – gingerbreadboy Jan 17 '11 at 20:32
117

Whilst no one posting here is in a position to tell you which to hire, I'd like to offer a little counterpoint to the proceedings...

One of our most recent new starters is the absolute image of professional experience.

In at 9, out at 5, one hour for lunch. No lates, no weekends.

Which probibly sounds terrible to most of the people who have responded so far.

However, not only is his code better (clean, concise, patterned, understandable, maintainable, test, on time!) than most any other team member, he is also an excelent sounding board for the passionate devs when they think they are about to solve all of our woes is a single deployment, a fountain of knowledge, and a voice sanity saving us from ourselves.

He knows how to push back against pushy management. He can spot scope creep a mile down the road. He writes more unit tests than anyone else. He doesn't b*tch and moan when he gets lumped with a boring task, and he'll probably still be here in 5 years time.

(To add to my first answer)

How do you know the passionate bloke is passionate other than the fact he told you?

He might be doing his best keen face because he so desperately needs the job, people will say most anything to get a job at the moment

He might think he's passionate about coding, but will the sheen start to tarnish when he realises 99% of us don't write sexy code.

Experience is quantifiable and provable.

Experience know that day-to-day, most of us work on non-sexy systems and dirty legacy code. And Experience shows that they can still drag themselves out of bed in the morning to deal with that.

I would like to reiterate I am not telling anyone who to hire. I do not think experience is better than passion or vice versa. I am not on a massive downer about people who are passionate about coding, but I find it a little worry to see the lack of balance being presented here. All of the other top voted answers here make very good valid arguments (Matthew Kubicina, User 9094, Otávio Décio, Bernard Dy) and I have voted them as such even if I have reservations about some of their opinions.

gingerbreadboy
  • 496
  • 1
  • 4
  • 12
  • 1
    And before you all start to vote this down ask yourself, are you voting it down because it's a `WRONG` answer, or because you disagree? Remember: this is a `subjective` question and answer community. If everyone votes down things which they disagree with (rather than things which are `WRONG`) the community with die a death and every answer will be a populist point grab... – gingerbreadboy Jan 17 '11 at 09:12
  • @runrunraygun, any advice if I intend to upvote? :) – Benjol Jan 17 '11 at 09:30
  • Yes, always up vote me :D – gingerbreadboy Jan 17 '11 at 09:32
  • 7
    +1 That said, it sounds like the person in question is pretty damn passionate about coding. (I don't think there's any professional/passionate divide, in that sense.) – John Parker Jan 17 '11 at 11:39
  • What you're telling is true, but it does not answer the question. The person you're talking about is "just" a professional, experienced and (not sure how much, but certainly somewhat) passionate programmer. – mafu Jan 17 '11 at 11:58
  • 9
    He doesn't spend his free time writing code. He doesn't join in arguments about different bloggers opinion on the latest coding fad. He is always telling people to stop trying to make it so complicated. He is not a nerd and work is not his #1 prority in life. So how do you spot a `"somewhat" passionate programmer`? Does choosing a degree & career in programming not suggest *some* amount of passion? Just because the candidate doesn't identify as a fanatical ninja-uber-nerd who cracks off to StackOverflow, doesnt this just mean he's not a total geek who has a life outside of the office and? ... – gingerbreadboy Jan 17 '11 at 12:23
  • @runrunraygun: I agree with your answer, but your last comment is pushing it. You're starting to degrade people who actually *enjoy* programming outside of what the boss says. I don't get to do the things I want to do at work, so I program for fun so I can. That doesn't mean I have *no life*. – Jeremy Jan 17 '11 at 12:39
  • I can see how you got that from what I wrote. But what you have taken from my comment was not that which was intended, so I apologies for not being clear. However, I **didn't say** that people who enjoy programming outside of work are `fanatical ninja-uber-nerd who cracks off to StackOverflow` and have `no life`. I said people who `identify as a fanatical ninja-uber-nerd who crack off to StackOverflow` have `no life`. Do you `identify as a fanatical ninja-uber-nerd who crack off to StackOverflow`? Think about it. If I wasn't **in to** programming, why would I spend my time posting here?.. – gingerbreadboy Jan 17 '11 at 13:12
  • @runrunraygun: and where did you find this perfect developer? You know, this just seems to be to good to be true. Either you haven't mentioned the catch, or you haven't discovered it yet. Or it's just not true. Yeah, reading it again, it's too good to be true – Jürgen A. Erhard Jan 17 '11 at 14:22
  • 1
    The dev who **won't** do overtime. **Won't** come in on weekends at crunch time? Demands a pay packet about 3x what I earn. I doubt my boss sees him ask perfect. Awesome colleague though. Where did we get him? Through a **very** expensive agency. – gingerbreadboy Jan 17 '11 at 14:30
  • 4
    I did mention the catch though `In at 9, out at 5, one hour for lunch. No lates, no weekends.`. Also, is someone who writes `clean, concise, patterned, understandable, maintainable, testable, on time` code really too good to be true? Or just experienced and professional? – gingerbreadboy Jan 17 '11 at 14:35
  • 15
    The 9-5 may be experience speaking as well. By laying down the law, it forces management to plan accordingly and not try to overfill time. Overtime has a way of becoming a habit. – MIA Jan 17 '11 at 15:36
  • 2
    @runrunraygun: I see your point. Thanks for clarifying. – Jeremy Jan 17 '11 at 15:42
  • 32
    +1 for the 9-5 guy! Don't underestimate the programmer who just gets quietly on with the job and produces great results. Unfortunately management have a tendency to overlook these people for those who shout the loudest. At our place, going a week overdue and then proclaiming how *hard* you have worked to finish it tends to get noticed more than just getting it done on time in the first place. – Qwerky Jan 17 '11 at 16:59
  • 2
    @Qwerky - unfortunately, I think you can safely take the "At our place" out of the last sentence. – Wonko the Sane Jan 17 '11 at 19:47
  • @Qwerky - I know the feeling, but do not give in to poor management practices! Insist on code-review from a technical manager or a lead programmer with your manager present. http://www.codinghorror.com/blog/2006/01/code-reviews-just-do-it.html – gingerbreadboy Jan 17 '11 at 20:30
  • 1
    @runrunraygun - Ha ha, I could tell you a funny story about that. Been there, bought the T-shirt. Code reviews never got off the ground because the design and programming aren't the tech lead's top skills. – Qwerky Jan 18 '11 at 10:24
  • 2
    @runrunraygun I want to be this guy. Don't get me wrong, I love coding, but there are other things in my life too! – RYFN Jan 21 '11 at 16:09
50

I would say it depends on the rest of the team:

  • if you have a lot of experienced programmers already, then pick the passionate

  • if, on the other hand, you have only one or two experienced programmers plus many students/cheap-labor-with-little-experience-but-that-don't-cost-much, then the experienced one will be more useful.

wildpeaks
  • 2,691
  • 1
  • 19
  • 17
  • 13
    Unless Mr Experienced is bored, set in his ways, or disruptive. In which case you have a disaster on your hands. I've seen cases of experience people having so much experience that their way is the only one and true RIGHT WAY, so they refuse to work to company standards, disagree with strategy, complain about management... and turn corrosive. Passion can be destroyed but is also (if harnessed) a powerful force for enthusiasm and cutting through the crap. – quickly_now Jan 17 '11 at 07:04
  • 2
    I agree completely. I was actually about to write a post about how important experience is. A bunch of instant training cannot substitute 5-10 years (or more) of experience. It just comes down to the experienced programmer begin able to see all the pitfalls straight away. Also, I see that inexperienced programmers have a higher tendency to create much more complex solutions. So if you don't already have that level of experience in the development team, get it! – Pete Jan 17 '11 at 11:47
  • 1
    +1 THIS. As you can see from other answers, there are reasons to choose either way. So choose the one that best compliments your existing team and provides something you don't have a lot of. – BlairHippo Jan 17 '11 at 18:37
20

"Experienced" doesn't necessarily mean "stuck in his ways"

As a mid-level experienced developer myself (I'm not quite 40), I am a little alarmed that the overwhelming majority of the answers here seem to imply that someone that has "been there, done that" doesn't know how to keep up with the youngsters. It's an unfair and dangerous assumption to make.

I would be interested to know what the experienced guy actually said. If he said "I have no passion for coding," then yes, I probably wouldn't consider him, the same way I probably wouldn't consider a vegetarian to be a butcher. If, however, his answers to "what do you do in your free time" wasn't about coding and the interviewer implied that that meant he had no passion for coding, it's something else altogether.

Note that I am not saying he should hire the experienced guy, or the passionate guy. I didn't interview either one, and have no idea of the culture of his company.

From Dictionary.com:
ex·pe·ri·enced    /ɪkˈspɪəriənst/ Show Spelled[ik-speer-ee-uhnst] –adjective

  1. wise or skillful in a particular field through experience: an experienced teacher.
  2. having learned through experience; taught by experience: experienced through adversity.
  3. endured; undergone; suffered through: experienced misfortunes.
    Origin: 1560–70; experience + -ed2

—Related forms non·ex·pe·ri·enced, adjective qua·si-ex·pe·ri·enced, adjective un·ex·pe·ri·enced, adjective well-ex·pe·ri·enced, adjective

—Synonyms 1. skilled, expert, practiced, veteran, accomplished, versed, adept, qualified.

Wonko the Sane
  • 3,172
  • 1
  • 24
  • 24
  • 7
    As a fellow near-40 industry vet who rarely fools around with code in his free time unless he has a very specific problem to solve, thank you. You don't need to take this job home with you to be good at it. – BlairHippo Jan 17 '11 at 18:43
  • There is a difference between balancing work and home life and being apathetic, low energy, and suffocated. I don't think anyone was implying that experience was bad, just that experience without drive is basically like a super fast muscle car without a gas station. – jmort253 Jan 18 '11 at 06:59
12

Alternatively, pick the one with the highest StackOverflow score :D

wildpeaks
  • 2,691
  • 1
  • 19
  • 17
11

You should hire the one that you identify as having the most interest in addressing your company's needs above all else. I've seen cases where a very good and passionate developer got hired only to quickly finish whatever he had to do for the paying employer and rushing to take care of his own business.

Otávio Décio
  • 5,299
  • 23
  • 34
  • Elaborate please - what did you mean by "take care of own business"? – Job Jan 17 '11 at 02:34
  • 1
    @Job: I'd assume he'd work on his own agenda and do "gray-zone" work, i.e. not explicitly recommended nor forbidden. This might be a good boon to a project with many holes and rotten parts, but it usually disrupt the schedule/roadmap, at least in the short term. – Macke Jan 17 '11 at 07:54
9

IT management consultant Paul Glen wrote about the concept of passion in the workplace in this essay for Computerworld. You might find it an interesting perspective, though I don't agree with Glen's implied assertion that passion and stability are mutually exclusive. I think you can have both. I'd suggest you also browse the comments following the article; some people had other insights.

That said, in your case, it does seem to be a choice between the two. But let's qualify what you mean when you say "passion."

When the experienced guy says he isn't passionate, is it that he doesn't care about the quality of work, or that programming just isn't his first love (perhaps he has a family? A lifelong interest in cars or music or home brewing?). Really, if an experienced guy isn't passionate about learning three new languages beyond what he already knows, but still keeps up with his main languages, tools, and such, and also home brews some beers, I think I can live with that.

But if the experienced guy is a terrible developer and doesn't care to improve, then I wouldn't call that passionless, I'd call it unprofessional. Thumbs down in that case.


EDIT: After reading some more answers, I thought I'd add a little. I think the difficulty is in the parameters of OP's question: we don't know which of the two developers is competent. We are focused on evaluating two traits seemingly at odds, though as I mentioned above, I believe you can have both experience and passion. However, both can be bad things too.

I worked with an experienced guy once that was smart, but also had spent most of his life developing in a vacuum. I spent as much time arguing with him as I did getting any work done. He was both experienced and passionate, but neither really helped my team.

Bernard Dy
  • 3,188
  • 26
  • 33
  • 3
    Yeah, I love my job, but I'm not 'passionate' enough to pull repeated all-nighters just because some manager hasn't got their act together. – Benjol Jan 17 '11 at 09:29
  • 1
    Excellent points, especially (IMO) in the edit. To continue down the same path, it is certainly possible to be passionate about, but still stink at, coding. I've worked with those guys, too. – Wonko the Sane Jan 17 '11 at 15:53
5

If you read Code Complete you would know that:

Experience doesn't matter as much as you think

This is because even the basics change constantly in the software field, this means that the experienced guy is stuck in his old ways and isn't interested in learning new things - year after year.

The passionate guy will almost certainly do this - even in his own time. I would hire passion over experience every time

billy.bob
  • 6,549
  • 4
  • 29
  • 45
  • Bingo. I know to many "experienced" devs who know one language, the one they work in *right now*, and one tech for this and one for that... the ones they are using. Nothing else. And nothing else interests them. – Jürgen A. Erhard Jan 17 '11 at 14:25
  • 2
    [Really?](http://stackoverflow.com/questions/432922/significant-new-inventions-in-computing-since-1980) The SO community couldn't come up with a significant invention since 1980 that affected the basics of software, at least IMHO. [Alan Kay](http://stackoverflow.com/questions/357813/help-me-remember-a-quote-from-alan-kay) is supposed to have a quote to this effect. – justkt Jan 17 '11 at 14:55
  • 1
    @Jae Superficially, I understand and agree with you. But I also know some developers that know several languages and code the same way in all of them: badly. I think the key is competence, as experience and passion can have both good and bad sides. If a team's developers are competent, then experience and passion are secondary traits that simply add texture to the team's composition. – Bernard Dy Jan 17 '11 at 15:08
  • There is not much in main stream programming that wasn't known in academics 20 years ago. With proper education, one doesn't have to try things out in one's spare time. – Sjoerd Jan 17 '11 at 20:42
  • @Sjoerd LINQ - 20 years ago? They might know things in theory, but we all know practice is much different – billy.bob Jan 17 '11 at 20:46
3

Neither

I'd never hire anyone who aren't passionate about their work unless it was a pretty menial task and perhaps not even then. Typically not having passion means that that they

1) are not enjoying what they do:

2) they are spending the minimum amount if time required doing it, aka "It's just a ob"

3) Are taking away from the atmosphere in your team/company rather than adding to it

On the other side, experience is crucially important for programmers, a passionate noob might be able to spend the 10 000 hours of experierence required to become an expert faster by sacrificing his "life" and other hobbies but it's still going to take a couple of years

Since experience is so much worth it's hardly offset economically by a marginally lower salary. So I'd say neither, go with someone with decent experience at least who's passionate. The younger (because they don't have any pesky kids and wives) and more passionate they are the less experience you can demand :)

Homde
  • 11,104
  • 3
  • 40
  • 68
  • 3
    That's a cop out. – dan_waterworth Jan 17 '11 at 07:42
  • Based on that argument, no beginners would ever be hired. You can’t get experience *unless* you have a job. – Konrad Rudolph Jan 17 '11 at 11:38
  • only if you discount bad hiring practices, and that's a big if ;) There are some projects where you really need lots of programmers though (even if they then to run into Brooks's law) where you could cram in new beginners. Beginners/New grads also has a big benefit in that you can run them into the ground working day and night in your little company bubble before they grow up, know better and move along. That seems to have been Microsofts strategy atleast in the early days. – Homde Jan 17 '11 at 12:28
  • 1
    so, how is it being a cynical bastard? ;-) – Jürgen A. Erhard Jan 17 '11 at 14:27
  • Hey, it's not like I would do something like that :P But it's good to know business "practices" like that to avoid falling for them. Hopefully most have enough sense not to employ them. Besides, personally I believe that hiring a fewer but more skilled programmers and richly rewarding makes much more business sense *and* is more pleasant for everyone. – Homde Jan 17 '11 at 14:43
2

Simple answer Go for Passionate one

He/She will put his passion to make things better and will code for long time

Fraz Sundal
  • 769
  • 5
  • 14
1

its easy to mix passion for code versus passion for get a job (or passion for get a monthly check).

Also, its easy to mix experience with years of use a cubicle.

Anyways, a real experienced programmer can do from x2 to x10 than a novice, no matter if the novice have passion or not.

In opposite, a novice can spend you a lot of time doing stupid question, remember, most programmers are evaluated by their job, not by teaching others.

magallanes
  • 218
  • 1
  • 5
1

It sounds like you might need more information to make a decision. As a part of your interview process, did you have the candidates actually design or write any code? If not, maybe that is your next step. Think of a simple problem for them to work on and set them on that task for a short amount of time.

Review their work with them later in the interview. See how well they can explain their solution. Probe them to see if they can think of ways to improve what they've already delivered.

In my experience, putting developers through an 'audition' like this has been the best way to identify the candidates that are really worth hiring.

1

Passion doesn't always translate to skills. Sometimes passion == arrogance and inflexibility.

Experience doesn't always translate to skills. Sometimes experience == arrogance and inflexibility.

Bottom line: Hire the best person for the given job. This includes passion, experience, skills, personality, reliability, and don't forget tenacity.

Bill
  • 811
  • 8
  • 7
0

IMO depends on why the not-passionate person lost their passion. Did they have it at all? Would they rather be doing architecture than fiddling around with APIs and loops? Have they just been soured on seeing bad code/poor management that it made them just stop caring? Don't discount someone who says "I'm not passionate about my craft" because there may be valid reasons. Even the most passionate person will quickly lose their fire when they run into walls every time they try to show passion. Like the hamster who gets shocked, eventually they'll learn to just tow the party line and the passion gets lost.

Wayne Molina
  • 15,644
  • 10
  • 56
  • 87
0

At the end of the day, experience means nothing without passion. An experienced person void of passion is never going to live up to their full potential, and they are not going to improve their skills. What you see is what you get, end of story.

Passion is a hot, burning fuel that can turn inexperience into experience. Passion can help solve problems that the experienced say are unsolvable. Passionate people will always be looking to improve. Passionate people don't give up.

Experienced people who have given up are like Gene Wilder's character in Blazing Saddles. He had all of this recognition as being the fastest gun in the west, yet all that experience meant absolutely nothing as he could no longer hold his weapon steady to shoot straight.

An experienced person who can't hold steady when it comes time to outperform the competition will only become a liability.

Go with the passionate person, or continue interviewing more candidates until you find the right mixture of fire and wisdom.

jmort253
  • 9,317
  • 2
  • 35
  • 63
0

I feel, if you found that in an interview in-experience candidate performed technically good and also he is love to coding. So he will be more productive to your organisation after some time if he got trained properly as compared to the experience candidate.

If you want to eat test less food cooked by someone else, knowingly. Finally the choice is your's.

0

Wow guys this has stirred up a lot of debate in the end I decided to give the rookie a shot and he has great promise so far, to the point that I am so worried maybe he is working so hard that he'll burn out.

In the end I gave them a simple 10 minute programming task and discussed how they came about to their solution and other possible solutions, the pro's and cons and I just felt like the rookie seemed to have a sound understanding. So in the end I read a lot of articles but I felt like the young guy was a good choice.

There is nothing wrong with experience, but a lot of programmers go to work and spend their time daydreaming. You don't have to code in your spare time, a lot of us do but it's not a must. A competent programmer ought to spend his 40 hours at work each week solving problems and keeping up to date with his tools. The truth though is the divide between great and average programmers exists because in this profession an individual can just coast and just be an architectural astronaut.

Thank you all very much

Duke
  • 303
  • 3
  • 7
-1

I believe that passion is overrated a a selection point for a programmer. Hire the one who you think will stay on the job the longest.

leed25d
  • 1,139
  • 6
  • 6
  • Quite the opposite I think - un-passionate (is that a word?) developers tend to be lazy developers, in my experience. They don't care about getting the job done right, they just care about getting it done. – sevenseacat Jan 17 '11 at 03:15
  • @leed25d - Not sure I agree. The last thing I want on my team are a bunch of fat cats sitting around sucking up all of the oxygen and wasting space. – jmort253 Jan 17 '11 at 03:16
  • You both are talking about energy not passion, it seems to me. I stand by my statement that 'passion' is a buzzword these days. – leed25d Jan 17 '11 at 03:37
  • 3
    Never hire someone who doesn't care about what they do. It will show in your product. – Nicole Jan 17 '11 at 07:29
  • @leed25d: well in a way it is about energy - energy to go the extra mile, do more than just 'get it done'. – sevenseacat Jan 17 '11 at 08:26
  • 1
    Programming is a mixture of technical skill and creativity - programmers without passion are missing half of that mix. In extreme cases even if their skills start off OK they'll rapidly degenerate. – FinnNk Jan 17 '11 at 08:33
  • FinnNK is spot on with this, programmers that enjoy their job (i.e. are passionate about it) will be more motivated to keep on constantly improving their work, finding new ways to do things even using their own time, which those without passion simply won't bother to do. – adamk Jan 17 '11 at 09:19
  • @leed25d - I have never met a low-energy, passionate person. Generally these are two traits that do not compliment each other. – jmort253 Jan 18 '11 at 00:51
-1

I would go with the passionate guy as he is willing to learn and would add great results if proper guidance and motivation is given to him.

Programming is always 2 + 2 = 4. Its never gonna change, and the passionate guy would add more results to it with more ways of producing the same result 4.

Thalaivar
  • 103
  • 6