views:

3608

answers:

26

I'm hiring a programmer, how can I differentiate the good programmers from those good programmers who have a real passion for their work ?

+105  A: 

Kathy Sierra wrote a good blog post about this and identified a simple 4-question test to see if someone has a passion for their work:

  • When was the last time you read a trade/professional journal or book related to your work? (can substitute "attended an industry conference or took a course")

  • Name at least two of the key people in your field.

  • If you had to, would you spend your own money to buy tools or other materials that would improve the quality of your work?

  • If you did not do this for work, would you still do it (or something related to it) as a hobby?

Source:
http://headrush.typepad.com/creating_passionate_users/2007/02/dont_ask_employ.html

David
I don't think this is a great test, I can only answer correctly (which presumably is yes) to 2 of these and those are the last 2, but I'm passionate enough that I spend almost all of my waking time, at my computer programing, 40% of which is hobby, so I think I would qualify as passionate.
Unkwntech
I disagree with the 'buy tools' one considering how expensive some tools are. Take a simple SqlDiff program...
Nazadus
The first one is good but certainly not interchangable with "course" or "conference". Conferences and courses are much harder to combine with everyday life. I do agree that having read a book or article recently is an indicator for being actively interested in a subject.
galaktor
why the qualification on the last question? I'd just go with "do you code for fun?"
Jimmy
"Name at least two of the key people in your field." That's a good one that I haven't come across before.
Daniel Auger
These questions are terrible. Books? Journals? Have you heard of the Internet? Name people in what field? I write software in the financial field, do I need to know names of other software authors working in finance? With all the OSS out there I would not pay for any tool, ever. Only fourth one can I answer yes too. And like Jimmy I'd like someone who does programming at home too.
jmucchiello
Buy materials yourself? If I were a potential employee, I would be a little surprised. They don't give me the tools I need for my work?
@dehmann: which means I can *choose my own tools*?!?!? Sign me up, baby! :-)
Bob Jarvis
+27  A: 

Someone once said: Ask them about the previous projects and observe them. If they are really passionate about it, maybe even a bit angry about politics or technical problems or whatever, that's a sure sign of passion.

But if they are talking about their past project and it gives you the impression they could as well read aloud a telephone book, they are possibly not passionate.

Michael Stum
That was Joel Spolsky. Search for `One:` in http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html
Alex Bagnolini
+1  A: 

There are 2 ongoing series called A Programming Job Interview Challenge and Tales from the Interview.

huseyint
Puzzles like that are never helpful. Think up a problem on your own related to your day to day and ask that question. You'll be amazed at how much better the people you hire are.
cciotti
+39  A: 

I think the single biggest indicator is what they do in their free time.

Do they have side projects that have nothing to do with work? Do they read books and web articles, attempting to better their craft? Do they experience everyday events and think about how those experiences might relate to a piece of code?

That's usually the sign of a passionate programmer.

Jason Pratt
I would consider myself a "passionate programmer" but on the weekend/free time, I'd rather be on a mountain than in a book. To me, passion is about overall life choices and following your dreams even when others might laugh them not reading blogs (that's what work is for).
cciotti
@cciotti: So you're saying you spend NONE of your free time reading books or articles on programming or doing any development? I really don't think you're that passionate then.
rmh
I'd much rather hire a coder that takes time off on the weekends away from programming! I wouldn't hire someone who thinks they could judge someone's passion from a comment in a newsgroup! Maybe he reads every night like the rest of us!
+2  A: 

I got my first programming job after disagreeing with the bosses assertion that Classic Star Trek was better than The Next Generation. He wanted somebody with similar interests to him because the people he'd previously worked with who coded well had certain other traits. I'm not too sure how true that is now but there are certain themes running through the community which at least tell you if a person will fit in with the existing team.

Personally I get passionate about my 'pet' interests at the moment and when they come up in interviews I must look like a crackpot but I always tended to get the jobs I wanted so attempt to push personal buttons and see passion in action.

sparkes
+3  A: 

I would be looking for people that have done open source work. You don't find many open source contributors that aren't passionate about the code they are contributing.

The advantage is that you can also check the code they have contributed to get a feel for the standard of coding they are capable of.

Having said that, there are usually few unemployed open source contributors

lomaxx
+1  A: 

I had a very good experience with a worker we hired a couple of months ago: In the interview, I gave her a problem to solve in code. After a while I came back, and she was very close to finishing it. I was content with the solution she had reached, and didn't need her to get to a final bugless version. However, she very much wanted to finish the project- I could see it really interested her, professionally, to understand where that last little bug was coming from. We decided to hire her based on the solution she reached, and we've found that she is a very enthusiastic programmer, and a real asset to the team.

Lea Cohen
+2  A: 

I know this is kind of meta to the site since Joel is one of the founders, but his "Guerilla Guide to Interviewing" covers that and a lot more.

Adam Haile
+1  A: 

Here's one to ask a web developer: "If someone reported a syntax error in one of your CSS files, but this syntax error did not seem to affect the display of your web site, would you correct the error?"

John Siracusa
+2  A: 

I like telling them a little about one of my projects but leave a key ingredient out and see if they pick up on it. Tell them you used to use source control but you stopped because no one on the team liked it and see what they say. It's evil but it works. Someone that's truly passionate will argue the finer points with anyone.

Also, a quick web-search will usually tell you where someone hangs out and what they do in their spare time (unless your canididate is John Smith as one of mine was).

Wolfbyte
"Tell them you used to use source control but you stopped because no one on the team liked it and see what they say. It's evil but it works" Or they find another company since your don't even use source control? ;)
Carl Bergquist
+1 Carl Bergquist. I would never discuss version control. I would get up and leave, instead of wasting any more time. Then again... I would probably have known before they got to say something like that.
Jørgen Fogh
+1  A: 

In short, if you're looking for someone with at least a little experience, simply ask them about their previous positions. Ask them to name their contributions, what they best liked about the previous companies they worked for.

There are two distinct divisions of people in this field.

Then there are others who view this purely a job. A lot of times I would even say it's thought of as a factory job. You're there to build widgets. You go to work, punch in, and from 9 to 5 you build widgets. You get a paycheck, and you're happy. They generally do good work, are very reliable and rarely complain. But they are less likely to favor optimized code, clever algorithms or going above and beyond to invent new things. They don't understand the importance of "20% time". These people tend to be working as consultants, very rarely working directly on internal product development.

Then there are those who love to create. Who see programming as art. Those who value inventive and clever solutions. Those who tend to be partially or completely self-taught. Usually they take a personal stake in their creations and care more about quality and correctness, doing the best they can. These are the people who are happy to work overtime if they feel they are contributing to something very important. They will come to you with cool ideas or ways to make the product better. They are more likely to pro actively fix problems. They are the ones who are good to have for product development.

Mark Renouf
+5  A: 

Ask them how often they browse stackoverflow.com, or what their reputation is :-)

Mike Stone
That is my newest question: "What is you SO rep?" if it's greater then mine, the I cant hire them (after all I don't want to be shown up) if it's any less then 2000 less then mine, then I can't hire them. LOL
Unkwntech
+26  A: 

One question:

Tell me how you feel about programming.

One simple question. Based on the response you get to that question, you'll know within 30 seconds whether or not this individual has any kind of passion for what they do.

KG
Wish I could upvote that more.
Donnelle
Me too, @Donnelle :-)
KG
+2  A: 

Ask a broad question about a previous project. See how the interviewee responds. Try and get them to talk about something they didn't like, or went wrong.

The problem with asking questions like 'Would you spend money to improve the quality of your work?' is that it is clear what the answer the interviewer would like to hear.

Express an opinion, on some programming matter, which you think may be different to their opinion. If they are passionate they won't worry about having a discussion on the topic, even in an interview.

Andrew
+10  A: 

One key is to gauge the interviewee's attitude and enthusiasm when they answer open ended questions such as:
1. How did you get into programming and when did you decide you wanted to do this for a living?
2. How do you keep up with developments in your language and platform of choice?

Examples of good answers:
1. I got my first taste of programing while learning the Unreal editor. I knew immediately that I wanted to make a living writing code.
2. I read the following blogs... I participate in the following forums...

Examples of bad answers:
1. I kind of fell into it.
2. I tend to learn on the job.

Daniel Auger
Wow... I'm way late on this, but why is it bad to learn on the job? I tend to... I have a really hard time learning something if it's not useful to me at the moment. My bosses/coworkers seem to be ok with my work though...
Telos
I just noticed this comment almost a year after you posted it.. Sorry about that. I don't think it's bad to learn on the job as long as that's not the ONLY way new ideas / technology come your way. Most of the great programmers I have worked with spend some degree of time outside of the office honing their craft by reading or working on side projects.
Daniel Auger
A key point on the learning on the job is being able to expand the answer a bit to show that what is needed for a specific project is quickly learned and one can remain nimble by knowing when to pick up whatever skills are needed for a project when it is needed. Giving a short answer that doesn't seem to lend itself to followup questions would be a bit of a yellow flag to my mind.
JB King
+6  A: 

I'm not sure I'd want to work with people who spend all their free time coding. A little balance in the work place (and people's lives) is a good thing. Coding 18hours a day will burn you our pretty quickly. You can tell people who are passionate about coding by talking to them about it, people who love what they do will get a (metaphorical) glint in their eye when talking about code they wrote

David Hayes
A: 

If they can't tell you about a fun project they've worked on ( or at least thought through with some effort ) either in school or in their spare time that isn't a good sign. Honestly passion about the craft should be pretty easy to determine, it's a special look in their eyes. Specifically a look that is bloodshot and has plenty of bags underneath.

Brian Paden
+31  A: 

Some simple questions I ask. I believe they more or less bear some similarity to other interviewers.

  1. Name the top three books, of all time, that you reckon all developers ought to read. Explain why. (if you want to be cruel, top five)
  2. What exactly do you find so fascinating about software development, that makes you want to work in this industry?
  3. What are some technologies you wanted to learn but haven't gotten the chance to?
  4. What are some things you are hoping to learn from this job?
  5. Recall your past projects, what were some of the clever stuff you achieved with pride, and what were some of the shameful stuff you'd would have improved if given more time?
  6. Mention some challenges or problems faced in your past projects, be it technical or administrative, and what you did to improve them.
  7. Any design or programming philosophies or practices you adhere to when developing software?
  8. List some blogs or community sites you'd recommend to colleagues. What is so great about them?
  9. Describe some activities you carry out to improve your craftsmanship as a developer.
icelava
I don't read books... but, the rest of the qeustions are great :)
Timothy Khouri
@Timothy Khouri, I agree > 100%
Unkwntech
I probably couldn't list many of those off the top of my head. It would also be easier to list shameful stuff than clever stuff. At times I might not even admit the shameful stuff was stuff *I* did ;-) (was usually forced to do it regardless of consequences)
Nazadus
This is a great list of questions, including the one about books. There's also a discussion on SO elsewhere about how to respond to project failures. I think a candidate's response to a question like that would be telling.
Barry Brown
Whoops. The discussion I was thinking of was the most recent posting on Coding Horror. http://www.codinghorror.com/blog/archives/001297.html
Barry Brown
A: 

I'd say spend a little longer interviewing them instead of just the usual 30 mins lots of companies spend. People can be very nervous at the start of an interview, and you need to give them time to relax so their true passion can come across.

I have received feedback from an interview saying I didn't seem very enthusiastic about the job when this wasn't the case. It's just that I was slightly nervous and also often come across as very poker faced.

+28  A: 

Note that a passionate programmer is not necessarily a good programmer. Incompetent people who don't realize they are incompetent can be just as enthusiastic as the superstars.

Kristopher Johnson
Hampsters on the wheel are incredibly passionate, but not very successful.
Jonathan Beerhalter
@WindyCityEagle LOL
Unkwntech
A: 

There are lots of great points being made here, so I won't repeat them. I will say that one way of identifying passionate young programmers is to ask how they've done in various programming competitions. The ACM ICPC and Google Code Jam, as well as topcoder.com, are great places to find passionate, talented, bright people. Good performances in the first two, and the algorithmic division of TopCoder, also demonstrate a math and algorithms background that is relatively rare amongst practicing programmers. If you're looking for people who can really do the heavy lifting in terms of key algorithms and solving big computational problems, these sources are particularly important.

In fact, there are slots for your scores/finishes in each of these 3, as well as several other programming competitions, on Google's engineering application, and as previously mentioned, many companies, including Facebook, pose programming puzzles both as weed-out questions and to whet the appetites of the type of people they want to hire.

Matt J
Not all students are young; I participated in my first programming contest (ACM) when I was 46.
kajaco
+1  A: 

I like to ask candidates what they run on their boxes at home.

Andy Lester
Yeah, if they say "Linux" or "Mac OS" I would let them know that they won't be getting the job :)
Timothy Khouri
I don't see why this got down-voted. People's answers might be interesting, even if it doesn't matter what platform people use. It's all in the "why".
Jørgen Fogh
I don't agree with the implication that 'real' passionate programmers would only use certain systems. @Jorgen, there was no 'why' in the question, only 'what'.
UpTheCreek
A: 

There are a lot of great suggestions in here... and I think that truthfully, no one of these is going to hit it.

The only thing I would suggest to add (and I can't believe it hasn't been said already) is to Google them. <-- I have that on my resume btw, it's a great asset.

Along with those good suggestions, you could also try to pull it out of him: "We have some junior developers that just don't seem to really be passionate about programming... what do you think we can do?"

His response (and words) can tell you a lot.

Timothy Khouri
+1  A: 

I was once asked during interview what I read to keep current. The answer was that I really didn't read much; it felt like it was suddenly really obvious that I wasn't passionate.

One idea I'd like to suggest:

Find a question that the programmer does not know the answer to. If they try and think it through, you can probably get an idea whether the challenge of figuring it out excites them. Also, when you tell them what the answer is - if they just say "Ohhh OK" that might not be a good sign -- a passionate person would probably reflect on it a bit or say "that's very interesting" and follow up with a question about it.

Another thing and this is not always true - but I haven't met a lot of really polite and friendly amazing developers. The really good ones are usually more crabby and short and don't really sugar coat things. I think the better you become at programming the more charm you lose! ;)

A: 

Passionate and good programmers are likely to fulfill some of the following criteria:

  1. They consume programming related blogs, books, and/or podcasts. In other words, they continue to invest in their knowledge portfolio.

  2. First started programming in Basic. (I.e. started programming at an early age, on their own time.)

  3. Can talk exitedly about something they have developed, possibly in their spare time.

  4. Are concerned about points found on the "Joel Test". (May not have heard about the "Joel Test", but being concerned about such things is an indication that quality matters to them, more than salary does.)

Ola Eldøy
You have a very narrow sense of programming judging by 2 an 4. There are more things in the world.
OscarRyz
Point 2 is narrow, I agree. I guess it shows wehere I come from ;) But I would believe that having a good development "enviromnent" (source control, automated builds, bug tracking etc.) is something that should be of great interest to any passionate (and good) programmer!
Ola Eldøy
A: 

I would love to ask:

What was the best code (u think) you have written in your life, and why do you think it is the best?

Ankit Jain