101
votes

While most interview questions are focused on current knowledge of a candidate or check his/her skill to solve algorithmic problems I would like to hire a developer who is passionate about programming.

What if instead of asking questions like

What do you know about technology "X"?

I will check check the knowledge that is not directly related to solving software engineering problems but shows how curious you are to IT.

For example if I look for a Java developer I can ask who are the most influential people in Java world or show a basic Scala snippet and ask a candidate to interpret the code.

I even considered to show photo of Alan Turing and let the interviewee guess who is on the photo. Does this practice make any sense?

16
  • 119
    Just because someone can name-drop influential programmers doesn't mean they are passionate about programming. I consider myself a fairly passionate programmer, but I couldn't tell you what Alan Turing's face looks like right this moment. Although now that I've seen your question, I'll make sure I take a quick glance at the Wikipedia page before going on any future interviews. Commented Jul 25, 2011 at 4:35
  • 11
    I agree with @Robert: I've got a terrible memory when it comes to names (and faces). There are quite a few books that I could talk about for quite some time, but I could tell you the authors for very few of those. Commented Jul 25, 2011 at 6:31
  • 27
    While hiring a passionate person is realy everyones desire, you need to be careful about doing it. Interacting with someone who is passionate about something normally leads to a higher level of engagment. In an interview situation this may lead to a more favourable impression being made over a more skilled and capable but less passionate individual, especially if you're time limited and skip the technical parts. So be careful. Also passion isn't everything, a "passionate idiot" is still an idiot while a "disinterested genius" is still a genius, and I know which of the two I'd rather have.
    – CdMnky
    Commented Jul 25, 2011 at 8:51
  • 37
    @Robert Harvey: I agree. Namedropping is just for show-offs. Don Knuth told me that :-) Commented Jul 25, 2011 at 12:35
  • 11
    @yes123, I didn't start programming until college, and I consider myself to be a passionate programmer. I'm sure there are plenty of programmers with passion who started later in life. I don't think there's any correlation between when you started programming and how much you care about programming.
    – zzzzBov
    Commented Jul 25, 2011 at 13:09

16 Answers 16

227
votes

All you have to do is ask him to tell you about one of the projects he's worked on that he most enjoyed. You'll find out more about his enthusiasm in the following 60 seconds than you ever could showing him photographs of deceased notables.

16
  • 34
    Also, you should make sure, that "project he's worked on" does include projects he was'nt hired for
    – keppla
    Commented Jul 25, 2011 at 6:45
  • 6
    I agree with Keppla: especially ask for sparetime/Open Source projects. I can't imagine someone being enthusiastic about something and not having the urge to do this in his sparetime. Commented Jul 25, 2011 at 7:17
  • 106
    @Lenny222: I consider myself an enthusiastic programmer, but I simply don't have time to code in my sparetime. I have a life besides coding, also! And when I code in my free time, I am mostly hired for it as well. But I do read lots of articles and books in my free time, too, and I visit this site even on saturdays and sundays.
    – Falcon
    Commented Jul 25, 2011 at 7:24
  • 8
    @Falcon: Agree, you could be a passionate programmer but after all you are human as well, you have a life, you have a family, kids etc ... in my spare time i read what's new in programming (RSS, tweater, facebook etc ...) while playing with my kid or while listen to my wife :) , so a proff that I am passionate: My wife need's to do "something" on a PC, so I wrote her a program to help her (somethimes simple JS bookmarlets, somethimes bash ...) ;)
    – Radu Maris
    Commented Jul 25, 2011 at 8:01
  • 9
    @keepla, people who are passionate about their jobs often don't have to program at night. I'm enthusiastic and passionate about what I do, but I have other things to do at night. It is critical that people have other passions as well or they wil lburn out in only a few years.
    – HLGEM
    Commented Jul 25, 2011 at 14:38
70
votes

For example if I look for a Java developer I can ask who are the most influential people in Java world or show a basic Scala snippet and ask a candidate to interpret the code. I even considered to show photo of Alan Turing and let the interviewee guess who is on the photo.

That is trivia and technical knowledge. If you want to find out if they are passionate about programming then you need to engage their passion in some way, there are a couple of easy ways to do this:

  • Find out if they read programming blogs/magazines
  • See if they program out of work as a hobby
  • See if they are involved in any user groups or organizations
  • Ask them what drew them to programming and if that is still a motivation for them
  • Find out if they have a StackExchange account

If none if those light a spark in their eyes then you probably don't have a passionate programmer. You might hit some that are too busy with other things - but I'd bet you'll see a history or at least real regret at not hitting some of those points.

5
  • 11
    +1 engage their passion Especially by asking them what got them interested in programming. I believe that any passionate programmer will go on at length about this topic. Commented Jul 25, 2011 at 5:11
  • 3
    +1. I typically sum these up in a question like "what kinds of things do you do outside of work to keep up with technologies?" hoping to hear something about open source projects, podcasts, attending SIGs/UserGroups, etc.
    – rally25rs
    Commented Jul 25, 2011 at 15:32
  • I recently interviewed a guy, who left a company because they were giving him repetitive work and he wanted to work on something interesting and dynamic. But on asking "what kinds of things do you do outside of work to keep up with technologies?" and "about one of the projects he's worked on that he most enjoyed" he had nothing great to add. But I did feel some passions though. I guess better is judging "if he will give up or keep on going to find a solution". Commented Jul 25, 2011 at 19:23
  • @George Marian I do all of the other things listed but if you asked me why I became interested in programming my answer would be rather short. I even spend a lot of my time at home programming (no kids) for fun! My answer however would be "I've always been interested in computers and my father was a programmer so I was naturally born drawn to that circle". Please don't discount someone based on the answer to this question.
    – m4tt1mus
    Commented Jul 25, 2011 at 23:52
  • @mattimus A fair point. Note that it isn't an exact science. After an answer like yours, I would ask: Why do computers interest you? What is it about them that interests you? Also, I would be paying attention to how the questions are answered, not just what words are used to answer them. That's one reason that I highlighted the phrase engage their passion. Commented Jul 26, 2011 at 2:52
28
votes

(warning, long post, only partially on topic)

Well I have been asking the same thing for ages. About 6 years ago I was trying to get recruiters to understand what we were about (they just ticked the boxes as you say).

At the time I wrote:

Do you geek like we do? (Open letter to recruiters and candidates).

Our culture is all important to us, I am not talking about race here, it is background based, how you view your job, what you intend to get out of your job, how you approach your job and dealing with others.

I have been mistaken before for meaning race so I will clarify now, this isn’t a race based thing, it is a mindset and drive thing. We have worked with people from many races that have been great. We also know many who are plainly and simply useless. So race doesn’t define what we are looking for at all, it is a “cultural” fit.

There are many sub cultures within Australia most of whom you wouldn’t pair up together, I am trying to explain ours - The Geek.

  • Many people need explicit instructions: "A>B>C>D" others you give them A and some background and they will work out B>C>D and E all on their own. We are looking for the second group.
  • People will simply agree with you because you are “senior” to them. Others will voice their opinions and contribute their ideas. We want the second one. Sub to this is if the decision goes against them they will still throw themselves into it.
  • Some people have learnt by rote: You do A then B then C which gives you X. Others have learnt how to learn and think. See beyond the immediate and solve the underlying problem.

Many of our jobs over the past 14 years have come from our clients need to cleanup and finish projects that have failed, mainly because the company has hired the wrong type of staff ... it costs far more than simply their wage if you get it wrong.

Now trying to pick these types of people we mean when we say “like us”:

  • Good inventors, great ideas, terrible and finishing off a project. This is describing myself. Need to hire people to cater for this problem.
  • Fantastic optimisers and “do”ers, if you want it to work really well get them. Flip side is narrowing focused and take a long time to get it there. Generally good techie trait but usually can’t converse with the outside world.
  • Very good at and knows “the correct way” and “end to end” work. They can see a project from start to finish and not miss stuff. “because it should be done that way”. This is an attitude we have in here; the clients know this and pay for it. Combine this with the “do”ers and they are ideal.
  • Quickest path to the immediate result. Tell everybody about it, loudly, bit hap hazard. (Don’t care get it working). Good for a start up, bad for established business that needs consistency. In a pure Support / Maintenance role this is good provided other developers are cleaning up afterwards. Prototyping and proof of concept work this is great.
  • Generally interested. What ever is going … tell us about it, what can I do, how can I add my value to it either as knowledge or sweat (getting on with something they see as required).
  • Rote learners / process workers. Where project has been planned out to the endth degree and they have “their bit” to do and that is it. Are good in very large teams. There is no danger of “tangents” being taken and unexpected results out of 1/200 people. They expect to be handed their “what to do” list and then they do that and come back for the next bit. Many cultures (both race and schooling) around the world tend toward rote learners or Boss/Underling style workers. This style of person is useless to us, send them to larger corporates.
  • Our people are equals in a team, expected to work within the team to achieve the goals set by the client.
  • You do whatever is required to land the job.
  • You give you opinions and perspective without attachment.
  • You think things through and analyse boundary cases.

Language is a barrier to working with us. We pretty much have our own language in here, you at least need English and some technical skill combined with a sense of humour.

If you don’t understand us you won’t grasp the requirements of what you need to do or how the rest of us will go about implementing the solution ... you won't last.

Why would you want to work with us?

  • You get paid. Alright its not the same as you would earn out in the "real world" but its good money.
  • You get to participate in decisions. While the directors have final say we want to hear from all, what they think, how and why the think it. It all helps.
  • You get to research your own stuff. Interested in geek stuff, coding, new products, latest MS vs Linux war developments, Design techniques. All these things you are given time every week to research and discover what you want to. You just have to share it with everyone else.
  • You get to try out new technologies. Either through research or through new projects we want to try new things and design new things. The projects are there to allow us to do so. (provided it helps the client and doesn't cost more than the project to do so)
  • You aren't required to wear suits. Unless the situation requires it, like visiting clients or events.
  • We want you to learn more and will put you through targeted training to improve what you know.
  • You aren't usually requried to run 9-5. If you are running support for an agreement that is 9-5 then you do, otherwise get the job done and don't abuse the priviledge.
  • Great team to work with. Well we think so anyway, we laugh at each other jokes out of politeness and have a no stabbing in the back policy. 
  • We are geeks as well. Some of us have girl friends and kids but don't let that fool you.
  • We enjoy the respect of some very big companies and can walk in without question.
  • Our client base is spread around Australia and across the globe. Leaves a lot of scope for travel and
  • We build very good relationships with our clients and their employees which means we have lots of people we can go drinking with.
  • If you have a need or problem we don't mind you taking the time off to sort it out. So long as you make up the difference with a few extra hours later on.
  • Your ideas are valued and you get to see a greater reward for those ideas.
  • You share in the success of Redgum.

Now, do you still want to work for us? Why?

Conclusion

I wrote that in 2004/05, I have done some 50 or 60 interviews myself, worked with 14 or so recruitement agencies who threw anyone who ticked the boxes at me ... most of this was a waste of time and I suck at picking people from an interview.

So far the most success I have had is in finding one single recruiter who understood the meaning behind the above and what I was looking for and could filter down the list to people who fitted.

Now I have 1 recruiter who I trust knows my business, knows my needs, we have lunch every other month to catch up ... I let him go, give him the time and trust that he will only show me appropriate candidates.

Recruitment is a specilist area, and while at the end of the day you have final say ... if you have the money, let the people with skillset do their thing.

Once they have found someone, I interview them, ask them about their experience, their interests, the things that motivate them, the coolest projects they have done, hear their answer to the above ... once I am convinced I bring them in for a second interview with the team over lunch, everyone else in the team asks them questions and lets me know the thumbs up or down ... then we hire.

4
  • 16
    +1 for mentioning "(warning, long post, only partially on topic)" :)
    – treecoder
    Commented Jul 25, 2011 at 7:48
  • Wow, are you hiring? :)
    – Josh
    Commented Jul 28, 2011 at 6:30
  • @Josh, actually, yeah we are, but we are in Melbourne Australia :) Nice bio though, definately the kind of profile we look for. Commented Jul 28, 2011 at 7:43
  • Very well said -- I got whiplash from nodding my head so much. And you have the same 'gift for brevity' that I have (It's not that I write too much, everybody else just reads too slow!) Commented Mar 6, 2014 at 22:36
21
votes

Alan Turing is a bit too much, but naming an influential person sounds alright to me. If I were asked this question, I would say , the guy wrote Effective Java...

Hiring is a two-way street. You need to know your talent pool first. If you want to hire passionate programmer, you need to ask a few questions first. Do you have exciting problems for them to solve? Secondly, do you offer competitive compensation?

If, in reality, you can't offer both, then it would be better to focus more on skills and professionalism.

3
  • 14
    +1 You can't hire passionate programmers unless you have a job requiring and rewarding that passion as much or more than all the competing alternatives available to that type of programmer.
    – hotpaw2
    Commented Jul 25, 2011 at 6:32
  • Clarification request, would you say "the guy wrote Effective Java" or "Joshua Bloch"? :) Commented Jul 25, 2011 at 7:45
  • @FredOverflow - Why remember his real name when a typedef will do? :D Commented Jul 26, 2011 at 4:51
8
votes

The people at 37 Signals wrote a great post that deals with hiring great programmers.

You can read the post for details (it's worth it!), but it can be roughly summarized as follows: there are things you can look into and ask about during the interview, such as

  1. How opinionated are they?
  2. How much do they contribute to open source projects?
  3. How much do they enjoy programming?
  4. Do they actually ship?
  5. What have they mastered?
  6. How well do they communicate?

You can further mitigate the risk of hiring someone by taking them on for a small project to see how they work. This will show you how they handle tasks, manage their time, communicate, and so on.

1
  • 4
    Copying the entire blog post and posting it in a way that makes it look like it's your own work based on that post, even with a link, is not permitted. The post you copied is under copyright and you cannot repost it in full. I've updated your answer to only provide a summary of the article and a link to it.
    – Adam Lear
    Commented Jul 25, 2011 at 17:05
4
votes
  • start a casual conversation about design patterns/anti-patterns/programming practices -- and see how informed the candidate is. How interesting or refreshing their views are. And, whether or not they have ideas of their own about these things
  • talk about a real world problem and see how the candidate starts proposing the solutions
  • see how much (and how long) a candidate can talk about programming (the philosophy NOT the mechanics) without referring to a particular technology or language. See if the candidate is a visionary or is all about nuts and bolts
  • ask them to talk about their most fantasized feature(s) in a programming language -- a passionate programmer will always have feature fantasies
  • ask them programming quotes and see if they know some of the popular ones
  • test their sense of humor on programming
0
3
votes

No, that approach makes absolutely no sense. I'd recognise a photograph of Alan Turing and I could name some leading lights in the development of Java but that tells you nothing about how passionate I am about what programming can offer us. Nor would I go down the road of List all the open source projects you worked on. Some of that is easily acquired knowledge and some of it is very often used for CV/resumé dressing.

Ask them to describe a real world problem - no matter how trivial - that could be fixed by programming a solution. It doesn't have to be something so practical as identifying the infrastructure behind. Just have you thought about how you could program your way into a better way of doing something. The languages used are of secondary importance. By attaching to a particular language, you're not necessarily getting someone who is passionate about programming.

2
votes

The definition of passion is a broad here. I have seen several kind of programmers. We can't just call them programmers. For me I define a passionate programmer,

  1. Who knows the fundamental of programming (I mean the real fundamentals). Seriously it shows the attitude and capabilities of learning new things on the fly though we're not directly using the fundamentals in the production code.
  2. He must have ability to deep dive in to the problems and technologies. Most of the programmers is expert in using ready-made things but that helps only to an extend.
  3. He must be update with the technologies and industrial updates he have. I really hate programmers who are not ready to put some time to read stuffs. Most of the people out here are smart the they're ready to sort out the problems. Have seen smart people spending hours and hours for the commonly known problems. What they truly lacks is the ability to read.
  4. A passionate programmer will equally passionate about the user than his code. He do everything in a user perspective.
  5. Should show the abilities to to use/create good software architecture gradually over the period.
1
  • +1 Great answer. I like the way you have put "use/create good software architecture gradually over the period." Commented Feb 2, 2012 at 8:40
2
votes

Do you want "passionate" people or competent ones? I'd rather have people who know their business but can distinguish between it and reality than the kids who don't know anything outside their computer screen, have no hobbies except some open source thingy they're contributing to 16 hours a day (half of it while nominally working for me), etc.

2
votes

Ask him real-world problem solving questions

In addition to telling you about what this candidate's skills are, if you pay attention to how enthusiastically he approaches the real-world problem solving questions you ask him, you can get a very good sense of how passionate he is about programming. And if you ask him different types of problem solving questions (some coding questions, some algorithm design questions, some system design questions), you can get a sense for which areas of programming he's most enthusiastic about.

I suggest reading Joel on Software's Guerilla Guide to Interviews not only does he tell you how to find that passion, he tells you that passion isn't one of the most important things you're looking for -- you're looking for "smart" and "gets things done". (He does mention passion, but I think that his intention is that it's a sign of the other two things you are looking for).

1
vote

I'd say if you're passionate about programming, you'll be able to spot others. All you have to do is talk about programming which shouldn't be difficult during an interview. And focus on the candidate doing the talking. Make sure you qualify their level of competency regardless of their passion. Otherwise, this could cloud your judgement.

1
vote

Ask if:

  • They answer questions on StackExchange sites
  • They have a blog or a website?
  • They do side projects (possibly commercial)
  • They contribute to open source projects.
1
  • 5
    I do little of that because my current job demands 50+ hrs per week, but I still think I am passionate.
    – Job
    Commented Jul 25, 2011 at 14:22
1
vote

Before you can hire passionate programmers you need to determine what you mean by that.

When I look for passion in programmers it has to do with the enthusiasm in thier voice as they discuss a difficult work problem thy had to solve. It has to do with being passionate enough to get some depth of knowledge and stepping up to solve the hard problems. What is has nothing to do with is whether they program outside of work or can name three famous programmers from the past by looking at their pictures.

When interviewing you can hear passion in the way they answer questions. They go into greater depth than the non-passionate people and they tend to be enthusisatic in what they say. They understand the business domain they have been programming in and are able to talk about how they solve problems and what suggestions they have made in their jobs to improve the programming processes or design of the application. They talk about refactoring and design patterns without being asked specifically about them.

When they talk about their achievements, they talk about things that go beyond basic coding of a module. They talk about how they saw a problem in the design and refactored or they talk about how they found a new technique to use to solve a difficult problem and they talk with enthusiasm. A passionate person is difficult to shut up. They really want to describe their achievements and goals for the future. They may have things they specifically would like to work on that your job offers and their current one doesn't. They show a pattern of growth in skill and complexity of what they do.

0
votes

Ask what he does in his spare time, if it's coding and working on his personal project's it's a pretty sure sign of a passionate programmers. Not all passionate programmers program in their spare but most who do are passionate

Another thing is to ask him to estimate the number of hours he has spent programming, the more hours the more passionate (adjusting for age)

PS. I'm not saying that you should spend all your time coding. You need to have life, hobbies etc etc. We do however tend to spend time on the things we love (spending time on a spouse and children is accteptable :) so putting in extra time coding is a good indicator DS.

...and yeah yeah, you un-passionate programmers can downvote me all you want ;)

DS.

4
  • 2
    I'm interested in people what are passionate about what they are being paid to do, not hobbyists. Passion is more about learning in depth and being excited to do your job than working open source which is often a detriment to professional behavior becasue people are more interested in thier fun stuff than your work stuff.
    – HLGEM
    Commented Jul 25, 2011 at 14:44
  • First off, a passionate programmer is not a hobbyist. He codes at "work" and at home and is passionate about both. Secondly you'll have a hard time convincing a passionate programmer to accept a job that's not, at least in some degree fun. I really take offense with an employeer's attitude of employee should not have "too much fun" on the side so that they can concentrate on their "dead-end boring" job.
    – Homde
    Commented Jul 25, 2011 at 14:58
  • 1
    programming on Open source is a hobby. I could care less about your hobbies and legally I probably shouldn't even be asking about them. I want someone who is going to bring the passion to work. So I look for people who are passionate about what they do during work hours. I'm not going to think people aren't passionate because they don't do Open Source.
    – HLGEM
    Commented Jul 25, 2011 at 19:34
  • I haven't said anything about open source, just that they code and learn about coding in their sparetime whether that's a pet project, open source, building a mobile app for fun or whatever itch they want to scratch that they can't at work. Of course they need to bring that passion to work as well, but that's the point. An employeed master carpenter is passionate both about the work he does as an employee and for himself. He might be be more passionate on the project he get's to chose himself but that's pretty natural
    – Homde
    Commented Jul 25, 2011 at 20:28
0
votes

Before the interview, you can tell the difference between a passionate developer and the rest by the resume. The passionate developer talks about what they did, the rest talk about how they did it. The passionate developer lists their blog, personal projects, etc. the rest don't have them.

My manager sat in on my first few interviews and was almost floored when I didn't even tech screen a candidate during the interview. He asked me later why I skipped it. "I had already read his code on his blog, I know he can code."

During the interview a single question identifies passion "what got you into technology" to a person you'll probably have to cut a passionate developer short as they start going off on tangents about the first time they used a computer, wrote a program, and so forth and so on. I find myself having to stifle a yawn when hearing an answer from the rest.

Finally, my tech screen starts with questions that a passionate developer might get offended by (and I preface it as such), the non-passionate developer might answer a few or even all of them correctly; the passionate developer will rattle them off as if they had a cheat sheet.

My bias is toward hiring a passionate developer with less experience than an experienced developer who isn't eager to learn and grow. The plain and simple fact is that technology changes too rapidly to hire someone who won't stay abreast of upcoming trends without the job requiring it.

I fully acknowledge this isn't fool proof. Some quality talent might slip through my fingers because of my method. I know there are people who are highly skilled but turn of the computer at 5. On the other hand I have been regularly impressed by the passionate programmer and regardless of years of experience, I quickly find that I'm learning as much from them as they are from me.

-1
votes

All great answers here - I'd add that I often ask if the candidate has worked with other people's code (sometimes fresh out of college hasn't), and if so, what is the biggest pet peeve they have with that old code. Sometimes they will go off and describe bad patterns and how they fix them. I take that as a good sign. Other answers may show you a very laid back programmer or one is pedantic....something you may or may not want.

2
  • 1
    wrong attitude on your part. IMO someone who goes out and changes code seemingly at random because he doesn't like the patterns used in it is a rogue who does more harm than good. All change to existing code should serve a specific purpose, and that purpose should be directly related to either fixing identified problems or implementing new functionality, never "I don't like how the previous guy did things so I'm going to rewrite the lot of it" (which is a common attitude among juniors who've had their heads filled with theory but never programmed themselves out of a clutch in reality.
    – jwenting
    Commented Jul 26, 2011 at 11:40
  • Fair enough, but I wasn't looking for them to change it... just to care when it's wrong and to not do those same things. Normally I get answers like very large functions, no comments in code, no try/catch.
    – Jody
    Commented Jul 27, 2011 at 12:55

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