Article Discussion
How to Interview a Programmer
Summary: Recognizing good programmers among job applicants is not easy. This article contains interview techniques, garnered from a recent summit on writing better code, that can help you can find the most qualified programmers for your project.
42 posts.
The ability to add new comments in this discussion is temporarily disabled.
Most recent reply: October 13, 2011 9:47 AM by Adam
    Bill
     
    Posts: 409 / Nickname: bv / Registered: January 17, 2002 4:28 PM
    How to Interview a Programmer
    February 24, 2003 0:08 AM      
    Recognizing good programmers among job applicants is not easy. Artima.com has published an article that contains interview techniques, garnered from a recent summit on writing better code, that can help you can find the most qualified programmers for your project.---xj40dkcfea73---Recognizing good programmers among job applicants is not easy. Artima.com has published an article that contains interview techniques, garnered from a recent summit on writing better code, that can help you can find the most qualified programmers for your project.

    http://www.artima.com/wbc/interprog.html

    Here's an excerpt:

    Dave Thomas: Hire for talent. One of the biggest mistakes companies make is to recruit from a shopping list: I need a programmer with six years Java, three years Oracle, and two years EJBs. The world changes, so you need to hire folks who change with it. Look for people who know computing, not necessarily particular narrow niches. Not only will they adapt better in the future, they're also more likely to be innovative in the present.

    How do you interview a programmer?
    • Ryan
       
      Posts: 3 / Nickname: rshriver / Registered: October 23, 2002 5:18 AM
      Re: How to Interview a Programmer
      February 24, 2003 9:55 AM      
      Part of our interviewing process asks a candidate to solve a simple coding problem in a language of their choice, and then in a language which they've never used. The problem is small enough that picking up a new language and implementing it shouldn't take more than a couple of hours. They must also submit a test case with each solution verifying it works.

      This exercise is done after their first interview but prior to follow-up interviews. It lets us get a feel for how well this person can adapt to new technologies and it also re-enforces our idea that we don't hire just "Java" or .NET programmers, we hire skilled programmers who can work in either environment if needed.

      -ryan
    • Frank
       
      Posts: 135 / Nickname: fsommers / Registered: January 19, 2002 7:24 AM
      Re: How to Interview a Programmer
      February 24, 2003 10:48 PM      
      The most important criteria for me in hiring is to judge the candidate's passion about his work. I think there are, basically, two kinds of candidates: the one considers his work merely a job, while the other thinks of his work as a way, a vehicle, to contribute to some project, or cause, in a significant way.

      I typically don't ask many questions, but rather let the candidate ask the questions. Their questions will reveal their level of curiosity, and often even aspects of their character. Also, the kind of questions they ask, and the process of their probing about a job or a potential company, hints at a candidate's way of thinking and problem solving.

      But I also think that character is more important than skill or enthusiasm. In a job, there are always crises, and it is in those moments that a developer's character really matters. Is he going to put his temporary frustration aside, and responsibly finish his work? Is he going to deliver things in a timely manner? Is he going to boost the morale of those around him? Or is he a complainer? Is he going to jump ship at the earliest opportunity, and go over to the enemy camp (i.e, my competitors)? I think someone's resume tells a good part of that story. I just don't believe that someone who worked for 10 different companies in 5 years is going to stick around for very long. In other words, I need to be able to trust the person completely and unconditionally, and if I can't, I just don't want to hire them.

      Next, I look for a sense of taste in the person, the candidate's aesthetic sense. So I like to informally talk to the person about what he does in his free time, what he majored in college, what music he listens to, where he travelled to, etc., Then I just pick one of those things (the one I'm familiar with), and try to find out why the person likes what he likes, what led him to be attracted to those things. I think if a person is attracted to beautiful and pleasing things, that person will also be attracted to well-designed, elegant software, and he will demand of himself the hard work needed to build such software.

      Finally, I always prefer candidates who believe that software is not an end in itself, but simply a way to express their ideas and, especially, a way to benefit others through their effort. In other words, I look for people who always, at every moment during their work, have their users in mind, and who respect their users, and try to make them the hero and focus of their work. That way, they also will be in agreement with the entire reason for going to work every day (at least where I do the hiring).
    • Frank
       
      Posts: 135 / Nickname: fsommers / Registered: January 19, 2002 7:24 AM
      How to inverview a programmer
      February 24, 2003 10:56 PM      
      The most important criteria for me in hiring is to judge the candidate's passion about his work. I think there are, basically, two kinds of candidates: the one considers his work merely a job, while the other thinks of his work as a way, a vehicle, to contribute to some project, or cause, in a significant way.

      I typically don't ask many questions, but rather let the candidate ask the questions. Their questions will reveal their level of curiosity, and often even aspects of their character. Also, the kind of questions they ask, and the process of their probing about a job or a potential company, hints at a candidate's way of thinking and problem solving.

      But I also think that character is more important than skill or enthusiasm. In a job, there are always crises, and it is in those moments that a developer's character really matters. Is he going to put his temporary frustration aside, and responsibly finish his work? Is he going to deliver things in a timely manner? Is he going to boost the morale of those around him? Or is he a complainer? Is he going to jump ship at the earliest opportunity, and go over to the enemy camp (i.e, my competitors)? I think someone's resume tells a good part of that story. I just don't believe that someone who worked for 10 different companies in 5 years is going to stick around for very long. In other words, I need to be able to trust the person completely and unconditionally, and if I can't, I just don't want to hire them.

      Next, I look for a sense of taste in the person, the candidate's aesthetic sense. So I like to informally talk to the person about what he does in his free time, what he majored in college, what music he listens to, where he travelled to, etc., Then I just pick one of those things (the one I'm familiar with), and try to find out why the person likes what he likes, what led him to be attracted to those things. I think if a person is attracted to beautiful and pleasing things, that person will also be attracted to well-designed, elegant software, and he will demand of himself the hard work needed to build such software.

      Finally, I always prefer candidates who believe that software is not an end in itself, but simply a way to express their ideas and, especially, a way to benefit others through their effort. In other words, I look for people who always, at every moment during their work, have their users in mind, and who respect their users, and try to make them the hero and focus of their work. That way, they also will be in agreement with the entire reason for going to work every day (at least where I do the hiring).
    • Brian
       
      Posts: 1 / Nickname: brian / Registered: February 4, 2003 9:33 PM
      Re: How to Interview a Programmer
      February 25, 2003 7:25 AM      
      I find that giving out a coding problem prior to interview is invaluable. Firstly it immediately weeds out a large number of people who simply can't be bothered to do the problem. Secondly you get a sample of the persons code in a situation where they could spend as much or as little time as they wanted solving the problem, this is a very good indication of what their production code will be like, and thirdly you get something concrete to talk about during the interview.

      The problems we give out are small but interesting enough that some level of design is required. For example, write a program to convert a number into words e.g. 1023 into "One thousand and twenty three".

      During the interview I often use a couple of the refactoring exercises from "The Pragmatic Programmer", asking people to describe their thoughts as they look at the unfactored code.

      As mentioned in the article, I also like to ask people what was the last book/best book on software development that they read. Obviously I much prefer interviewees to mention something like "Refactoring" or "Peopleware" rather than "Teach yourself EJB's in 10 seconds". ;->
    • Joshua
       
      Posts: 1 / Nickname: jsegall / Registered: February 26, 2003 11:37 AM
      Re: How to Interview a Programmer
      February 26, 2003 4:49 PM      
      Effectively filtering out bad candidates is a very hard problem. Most of the techniques suggested rely on (A) detailed coding tasks or algorithmic problems, and (B) getting to know the person.

      (A) is usually not very useful. You can weed out people who can't program at all, but it can also weed out good programmers that don't have the ability to think quickly under pressure (most development jobs don't require this ability). In addition, such tests are generally insulting to any interviewee who is not a recent college graduate.

      (B) is useful, but almost impossible to do in an hour or so. In the end you usually end up hiring people that you like personally, or are like yourself. It takes a very talented interviewer to understand then exact sociological requirements and find them in a candidate. Even then you can easily end up with a homogenous pool of programmers.

      I don't know that there is a really good way to interview. It all comes down to a gut feel, and maybe you just have to accept that some poor candidates will be hired and some great developers will slip through the cracks.

      Of course, some positions do have specific needs that can be easily discovered through interviews, but the general case of finding a creative, enthusiastic, hard-working, good-natured and intelligent candidate is very hard.
    • Sebastien
       
      Posts: 1 / Nickname: sebpaquet / Registered: February 28, 2003 5:24 AM
      Before the interview: read his weblog
      February 28, 2003 10:32 AM      
      You can learn a lot about someone by reading a couple weeks' worth of postings. Makes it easy to find shared interests to talk about during the interview.

      Phil Wolff wrote on this:

      http://dijest.com/aka/2002/06/20.html#a1669

      Checking out Technorati records can also be useful to coarsely assess social skills.
    • Paul
       
      Posts: 1 / Nickname: reiners / Registered: March 4, 2003 8:25 AM
      Re: How to Interview a Programmer
      March 4, 2003 1:31 PM      
      I would just ask them their TopCoder (http://www.topcoder.com/) rating. If they don't have one, I would ask them to come back after competing in some matches and obtaining a rating.
    • Prince
       
      Posts: 1 / Nickname: ptinna / Registered: May 17, 2003 7:09 PM
      selecting the right people
      May 17, 2003 11:18 PM      
      i find that difficulty of finding the right person increases with the amount of responsiblity you want a person to handle. Interviewing a fresher, senior developer, architect, team lead, project lead... selecting the right candidate becomes more and more difficult .
      there are people who have the right expirence, there are people who don't have the expirence but are good problem solver , and then there are who would score not so gr8 technically, but have very good attitude at job . who love what they are doing. Sometime you are lucky, you can find all three in a candiadate .
      i blv an org should have a mix of all people. so its not one type that you look for, you look for people who have thier own niche. if the team is full of over qualified techies..they are going to have a lot of ego problem.
      how do you select a person then, look at the current team, and then select a person who will fit better.
    • Chris
       
      Posts: 1 / Nickname: bloodshot / Registered: May 31, 2003 3:11 AM
      Re: How to Interview a Programmer
      May 31, 2003 5:45 PM      
      >
      > How do you interview a programmer?

      I'm facing that very dillema right now. I work for a company that does a lot of work with high-traffic websites (500K+ hits per day for most of our sites) and we're a month into a project to create an online dating site. We're using eXtreme programming (very cool) and are looking to add two more programmers to the team, so we're focussing on intermediate level programmers (2 to 4 years experience) in the holy trinity of Open Source web programming (PHP/Perl/MySQL).

      The current strategy is for myself and the team lead on the project to scan through the resumes, look for those who have the experience we want and then do the first interview.

      Personally, I think we've been asking too many b******t questions that have nothing to do with the test, and since we're starting a second round of first interviews in about a week, I'm gonna push hard to revamp the questions. Too many questions that only really have one good answer that everyone spits out:

      "If you have a problem with a co-worker, how do you handle it?"

      "What would you say your three best traits are?"

      If we like the person's potential, then we give them an hour-long written test (created mostly by me) that covers pretty much the basics of what we need: write some small scripts to connect to databases, process information posted to that page by a web-based form, create a sample SQL query and so on.

      Of 14 applicants, only 3 passed the test. But that makes me very confident that those 3 can do the job.

      I like the idea of getting the applicants up in front of a whiteboard, but what to ask them? A question about the design of the dating site?

      Any thoughts?
    • Ernie
       
      Posts: 2 / Nickname: erntheburn / Registered: May 14, 2003 0:22 AM
      Re: How to Interview a Programmer
      June 9, 2003 9:40 AM      
      Judging ones technical ability and overall intelligence and wit is relatively easy. Where it gets difficult, is judging ones true persona, character and their interpersonal dynamic, how they will work and interact with the rest of the team.

      I feel that I am a pretty good judge of character, even during the brief time I get with an applicant. But I still get, on average, about one bad apple out of twenty. And although this seems like a pretty good ratio, and not too difficult to manage, ocassionally you come across someone that just sucks the life out of you and the project. Unfortunately these people don't show their true colors until after a fair amount of time is invested in them.

      Only if people could be introspected as easily as Java classes.
    • Rahul
       
      Posts: 1 / Nickname: javaguru / Registered: January 29, 2003 7:49 AM
      Re: How to Interview a Programmer
      July 24, 2003 7:24 PM      
      Most of the interviewing techniques discussed here are good for a personal interview. But what techniques would you use while conducting a telephone interview?
      In the past I was a member of the panel that conducted telephone interviews. Below are few of the questions we asked.

      1. Briefly explain about the projects they have worked on
      and their role in those projects.
      2. What kind architecture did they use? It is important that
      the candidates understand MVC architecture, especially if
      they are going to develop J2EE applications.
      3. What design patterns have they used in their projects and
      explain those patterns.
      4. Then there were questions about the particular technical
      skills we were looking for.

      We could not do certain things like give a coding problem, discuss the project on a whiteboard etc because of telephone interview.
      I would be interested to know other people's experiences in conducting telephone interviews and how to get the maximum out of it.
    • Adrian
       
      Posts: 1 / Nickname: adip / Registered: July 23, 2003 6:23 PM
      Re: How to Interview a Programmer
      July 23, 2003 10:36 PM      
      I found this topic very interesting and helpfull as well. Though I'm not a recruiter nor an experienced project manager, from my working experience as a team player I've made my own idea of how to deal of choosing a software programmer if I would be in such a position.

      On the technical side if I had to choose from, let's say, five programmers the key test would be something like this: put them in front of a computer with a sheet of paper and a pen and ask them to solve a quite easy (but not at all trivial) programming problem (not to take more than 15-30 minutes). The first one who take the pen and draw something on the paper would be hired.

      The idea is that I see too many programmers who in the second minute you ask them to implement something they start coding, without trying to design first or think what is the bigger picture; not careing a bit at how their part should be integrated with other people's work; not asking "why". Using a sheet of paper to try to schetch a design even for a simple task is an engineering reflex that could prove the person is more likely to write quality code, I think.

      -adip
      • MikeD
         
        Posts: 3 / Nickname: mike / Registered: April 29, 2002 5:17 AM
        Re: How to Interview a Programmer
        July 24, 2003 1:05 PM      
        >...
        > On the technical side if I had to choose from, let's say,
        > five programmers the key test would be something like
        > this: put them in front of a computer with a sheet of
        > paper and a pen and ask them to solve a quite easy (but
        > not at all trivial) programming problem (not to take more
        > than 15-30 minutes). The first one who take the pen and
        > draw something on the paper would be hired.
        >...

        Try posting that on the XP mailing list and watch the reaction you get :)
        • Matt
           
          Posts: 62 / Nickname: matt / Registered: February 6, 2002 7:27 AM
          Re: How to Interview a Programmer
          July 24, 2003 2:21 PM      
          That is a bit silly and arbitrary. You might just be filtering for people who like to doodle. It is pretty unfair to filter people by how you like to work. It is not unlike the whiteboard criteria (which I think was already mentioned). I'm sure there are plenty of people who like to sketch things out, but still end up cranking out crap.

          I much prefer the idea of giving someone a small project before the interview. Ask the person to bring in the related work (if it includes sketches, you'll be extra pleased) and review it together. (It would probably be useful and reasonable to also make your phone number available for clarification and/or discussion before the interview, while s/he is working out the solution). If it is excellent work and the discussion is good, then you probably a good candidate on your hands.
      • Joshua
         
        Posts: 2 / Nickname: jesmith / Registered: June 30, 2003 10:39 PM
        Re: How to Interview a Programmer
        July 27, 2003 7:31 AM      
        > The first one who take the pen and
        > draw something on the paper would be hired.

        For your own good: Spend some time on Paul Graham's site. In particular: http://www.paulgraham.com/hp.html

        By your test, you wouldn't have hired him. He "sketches" in code. So do I. So does every programmer I'd hire again. (Sometime I sketch on paper, but only for fundamentally graphical problems like bit-twiddlers or funky data structures.)

        If you worked for me, and I learned that this was your interview technique, you wouldn't be involved in the interview process any more.
    • Lampret
       
      Posts: 1 / Nickname: denisl / Registered: August 1, 2003 9:42 PM
      Looking for some guys like you
      August 2, 2003 1:53 AM      
      Hello programmers. We are the WarlockTeam, a game-racing web-site and we are looking for some guys like you.
      When you have interse.in php,.. and you always wanna
      write some news,... we are the right team for you

      Please write us a mail for more information on :
      warlock@siol.com

      Denis Lampret
      WarlockTeam
      www.warlockteam.com
    • Klaus
       
      Posts: 1 / Nickname: klausikm / Registered: September 2, 2003 10:55 PM
      Re: How to Interview a Programmer
      September 3, 2003 5:17 AM      
      What came to my mind several months ago:
      Everyone talks about programmers, but to be correct, IMHO it should be spoken of developers. Or do you think, that there seems to be no or just little difference?
      To give an example for distinction: In my eyes, a developer works more "academic" than a programmer. This is often reflected by the fact that a programmer does not necessarily need a final degree or extended knowledge of computer science.

      Cheers

      Klaus
      • Matt
         
        Posts: 62 / Nickname: matt / Registered: February 6, 2002 7:27 AM
        Re: How to Interview a Programmer
        September 4, 2003 9:43 AM      
        I think titles are almost completely meaningless in this industry. You can choose to distiguish between different titles, but since there are no widely used standards, those titles won't convey any information outside your purview.

        There are plenty of people with the title Software Engineer who stuggle to write a simple batch file or script and others who are very competent and talented. There just isn't much coupling between title and skill, talent, inclination, or even experience.
    • Daniel
       
      Posts: 1 / Nickname: danielholm / Registered: February 24, 2003 2:21 AM
      Re: How to Interview a Programmer
      February 24, 2003 8:17 AM      
      An interesting question I use for interviewing new college hires is to ask which non-computer class they thing is most relevant or helpful to programming. One answer that I liked was foreign language (any really), because it helps to separate the thinking of what you want to say from the language it is expressed in. Shows a good understanding of the separation of design from coding.
      • Kent
         
        Posts: 1 / Nickname: jaykent / Registered: September 23, 2003 5:52 AM
        Re: How to Interview a Programmer
        September 23, 2003 10:04 AM      
        > ask which non-computer class they think is most relevant or helpful to programming...foreign language...helps to separate the thinking of what you want to say from the language it is expressed in.<

        I agree. Superior coding knowledge and capabilities are useless without a capacities for conceptualizing the end-user's experience & developing creative solutions as well as the desire to take ownership of developemnt and make it work. I've always looked for two key indicators which show me I have found a curious, creative, self-motivated individual who will likely posses the aboove chaacteristics:
        1. Do they interview me (Are they curious about our work or are they just looking for a job?)
        2. Do they have something, some interest outside of work, that they have started and made work. (One guy ran a soup kitchen; one guys lead a band; and one girl managed her ultimate frisbee team. It doesn't matter what the activity as long as they started it and made it work.)

        I've never found a good coder who was only interested in coding.
    • Konstantin
       
      Posts: 1 / Nickname: kostya / Registered: September 26, 2003 0:03 AM
      bad recipe
      September 26, 2003 4:27 AM      
      well, the article is fine.
      except for the code snippet that looks broken.

      on page 2, paragraph 2, Josh Bloch mentions "an optimal solution" to determine if argument is a power of 2:


      ((n & -n) == n)


      it may be fast, but it ain't correct :)

      if we wrap it in a function like this:


      bool is_power_of_2(int n) {
      return (n & -n) == n;
      }


      then the following asserts fail:


      assert(!is_power_of_2(0));
      assert(!is_power_of_2(-2147483648));


      besi des, the whole thing depends on negative numbers being represented as 1's complement.

      makes me wonder if Josh Bloch really meant the code that appeared in the article :)
    • ajitfernan
       
      Posts: 1 / Nickname: ajitfernan / Registered: January 6, 2004 9:38 PM
      Re: How to Interview a Programmer
      January 7, 2004 2:44 AM      
      Ajit Fernandes:

      Technical skills can be given a weightage of around 70%. The attitude has to be tested by devising proper what..if questions and also the patience need to be tested. The questions to test the above two qualities has to be compiled carefully over a period of time. Also the body language has to be studied carefully as a lot of information can be gathered from it. Technical skills can be easily upgraded if the candidate has the right attitude and patience.

      Lot of companies focus more on Technical/logical and other exams but fail to the the two qualities mentioned above. This may create problems in the long run.
    • Ani
       
      Posts: 1 / Nickname: anidutta / Registered: February 25, 2003 3:18 AM
      Re: How to Interview a Programmer
      February 25, 2003 8:47 AM      
      As someone who had to grow a 15 people team and deliver a project in 6 months I had to find an effective way to pick talent. The approach that I found worked well is
      a following 5 step process.

      1. Put the candidate at ease.

      There is no sense in putting the candidate under stress by inviting a committe of people to interview him/her. I consider this a serious mistake. Although finding their true character under stress can be valuable, most of their productivity will come from peforming their best on a daly basis. Rome was not build in a day and neither are software projects. Therefore I am trying to find their true self under normal conditions and making them feel comfortable in the first couple of minutes will go a long way towards setting the stage for this discussion. Informal comments about the weather or the communte to the interview will tend to accomplish this. I am trying to bring out the best in the candidate.

      2. Ask them why they are looking to change their job.

      The answer to this question will reveal quite a bit about
      their character. I am hoping that the reason is to grow and take on more challenges.

      3. Ask them to discuss the project on a whiteboard by
      drawing block diagrams, interfaces to other projects, hardware, software packages etc.

      This accomplishes several things:
      -- demonstrates their technical knowledge
      ---demonstrates their communication skills
      ---demonstrates their presentation skills
      ---gives a natural forum for asking in depth technical
      questions without putting the candidate on the
      defensive. Since the candidate is familiar with the
      project, it provides a stressfree backdrop for tough
      questions. One of my favorite questions is "If you
      were the technical leader of this project" how would
      this solution be different.

      4. Ask them how they keep up with industry changes.

      We all know that the more successful software engineers
      have a passion for what they do. They don't work for just
      the paycheck. They are constantly in tune with the newest
      technologies, design patterns, and ways to cut the development effort. Let them talk and do a lot of listening. The good ones will mention journals, books,
      news forum like this one, and user groups.


      5. I like to conclude the interview by
      -- asking them about their ideal job
      ---answer any questions they may have about our firm.

      The good ones have a clear idea about where they want to go in their career and are looking for a place to help them get there. I want to make sure that I draw the path to their destination for them.

      Ani Dutta
      • Glenn
         
        Posts: 1 / Nickname: questor / Registered: January 29, 2004 3:48 PM
        Re: How to Interview a Programmer
        January 29, 2004 9:27 PM      
        I really enjoyed the 5-step suggestions given by Ani Dutta, especially the one about putting the candidate at ease. I have found some of the best candidates absolutely detest job interviews because some in our field love to grill them. Many in our industry complain that we pay little attention to design during projects, yet when it comes to interviews, some expect candidates to start writing code on the spot.


        And now I would like to offer a variation on Suggestion #2.
        >
        > 2. Ask them why they are looking to change their job.
        >
        > The answer to this question will reveal quite a bit about
        > their character. I am hoping that the reason is to grow
        > and take on more challenges.
        >


        As someone who's studied interviewing, I've found it vital to find questions for which a candidate will not be tempted to lie. People are coached in interviewing through numerous sources, from outplacement firms to books and Web sites. A candidate is told to always speak good about previous bosses and workplaces; if he is indeed upset with a situation or supervisor, the last place he'll reveal it is during an interview. I used to ask this myself, never to really find anything truly revealing. So much in interviewing can needlessly deteriorate into false posturing (which is why some tell me they love asking only "ya either know it or ya don't" technical questions.)


        Still, I thought the move is indeed important. I'd like to know why they're doing it. However, the interview isn't really about why they want to leave their current place, it's about why do they want to come to mine. Remember, if interview is indeed a word representing 2-way conversation, then I have to sell them on my company. Why not do what a manager must do, i.e., delegate? In other words, have them sell me on my company.


        So I now ask why they want to come work for us. Yes, that one also appears in those 101 Great Answers-type books. Yet I've found those candidates who have taken the time to study the company and its products will use this as an opportunity to describe what they like and how they wish to contribute. They'll inject the right programming concepts too. It's their chance to be a star.


        Moreover, just because someone was good or bad in a previous environment doesn't guarantee they'll be the same in mine. Lots of variables contribute to a programmer's success or failure, many outside their scope and control. Personally, I despise the growing trend of "behavioral interview" questions, those that ask about what a candidate has done before. The moment that really matters most to the candidate and me is the present. That one's the toughest to lie about, esp. if both employer and candidate know what they want from each other. That's what I find most useful to focus on interviews, esp. to improve on the quality of hires. The programs you wrote for 5 others before aren't as important as the one you'll write for me.
    • Nils
       
      Posts: 1 / Nickname: xtreme / Registered: April 18, 2004 10:51 PM
      Re: How to Interview a Programmer
      April 19, 2004 3:04 AM      
      I think the biggest problem with interviews, is that the interviewer is often more stupid than the person who is being interviewed. The reason for this that good programmers don't do interviews. Bureaucrats do. And most managers only want to hire people who obey orders without thinking too much. Create people are doomed in this business. That might also be one of the reasons the jobs are moving to India. Software projects tend to be extremely expensive without talented people.
    • Bill
       
      Posts: 409 / Nickname: bv / Registered: January 17, 2002 4:28 PM
      Re: How to Interview a Programmer
      February 24, 2003 11:05 PM      
      I found this weblog entry on "The Fishbowl" about the Interview with a Programmer article:

      http://fishbowl.pastiche.org/archives/001258.html

      I couldn't figure out who actually posted it. Here's an excerpt:

      When I'm presented with a design problem to solve, you won't find me sitting in a chair with a piece of paper. You'll find me wandering aimlessly around the office with a can of coke, or tossing my pen in the air and catching it. You'll see me doodling on a whiteboard. You'll see me wander out the front door with my iPod playing at maximum volume, and walking around the block. When I need to think creatively, I get my best ideas when my feet are moving, not when I'm sitting in front of a computer, or in a meeting being pressured to come up with an answer right now.
      • Krishna
         
        Posts: 1 / Nickname: krishnausa / Registered: May 21, 2006 7:05 AM
        Re: How to Interview a Programmer
        May 21, 2006 11:08 AM      
        This is also my approach. Ver well said!
    • Mike
       
      Posts: 1 / Nickname: swami / Registered: April 6, 2004 5:29 AM
      Re: How to Interview a Programmer
      April 19, 2004 10:00 AM      
      I have several sets of questions that I ask.
      1) Stock technical questions. These make sure that the candidate understands the technologies that he says he does.
      2) Stock nontechnical questions. These questions are more about how the candidate thinks and his experience. (What was the best project that you worked on? What was your worst disaster? Why are you leaving your current job? What's your favorite programming language? What would you change about it if you could?)
      3) Questions off the resume. I ask about anything on the resume that looks interesting. Some people have done some really odd things, and it can be informative and fun. It's also a frighteningly easy way to trip people up.
      • Bozo
         
        Posts: 1 / Nickname: bozoclown / Registered: June 15, 2006 4:06 PM
        Re: How to Interview a Programmer
        June 15, 2006 8:17 PM      
        > It's also a frighteningly easy way to trip people up.

        It is staggering how many people just fill their resumes with buzzwords (yes, I know why; the automated resume mills have a lot to answer for).

        I interviewed one guy and after glancing at the language skills he'd listed asked, "So, which do you prefer C++ or Java?" His response: "Um, I've never used Java". I didn't know what to say.

        BZC
    • raj_shaker
       
      Posts: 1 / Nickname: rajashaker / Registered: March 5, 2003 5:58 PM
      Re: How to Interview a Programmer
      March 5, 2003 11:15 PM      
      I found that one way to interview a programmer is NOT TO INTERVIEW A PROGRAMMER. It's usually better that a selection should NOT be done in a half or one hour interview.

      If possible, taking on a person for a internship or consultancy for a small time period, making him work with the rest of the develoment staff, getting him to work on various areas of coding etc help form a balanced view regarding his/her suitability for a programming job.

      The cost of making a hurried decision by a senior person ( usually a manager ) who is probably non technical, is a lot more expensive to the organization in the longer run.

      Everything else, coding style, personalaty, curiosity, etc can be judged over a longer time frame.

      Just some thoughts...

      raj
      • Joey
         
        Posts: 1 / Nickname: joeyatlas / Registered: July 19, 2007 3:16 PM
        Re: How to Interview a Programmer
        July 19, 2007 9:52 PM      
        Hi

        Don’t you wish there was a complete guidebook letting you know exactly what you need to do – and what you shouldn’t do – before, during and after that nerve-wracking job interview? Wouldn’t you like to make an outstanding first impression – every time? Well now you can! The exciting new career ebook Acing Job Interviews gives you step-by-step instructions on how to ace that job interview and get the position you want. These critical lessons aren’t taught in schools or colleges. Our authors spent months compiling data from leading career sources and packing the most important pieces into one, outstanding 57-page ebook dedicated to acing job interviews.

        Did you know that highly qualified candidates lose jobs everyday due to simple and avoidable interview mistakes? These people haven’t planned ahead, dressed inappropriately, gave a bad first impression or offended the interviewer in some way. If you’re actively looking for a new job, passively seeking a move up the career ladder or simply need a refresher course, this new ebook is perfect for you. If you’re helping your children, friends or family members step into the job market for the first or the fiftieth time, Acing Job Interviews is an excellent, practical and thoughtful gift!

        I have found a great site that sells downloadable "Motivation" audio books by some of the leading Authors in the field. I have recently discovered the benefits of listening to Audio books as I have a 2 hour drive to get to work each day!.

        You can also get a 10% discount off your first purchase by using this special code when you check out - 322944.

        Also, if you own a website you can become an affiliate and promote Audio Books that are relevant to your site and get 15% commission on every sale.

        Here is the link directly to their "Motivation" category.

        Hope you find the site as useful as I have, if so post back your comments.

        Cheers

        Joey
      • Microsoft
         
        Posts: 2 / Nickname: msintervie / Registered: October 24, 2007 5:01 PM
        Re: How to Interview a Programmer
        October 24, 2007 10:04 PM      
        http://www.emicrosoftinterview.com/default.aspx is a good interview resource for Microsoft Interview Questions
        • Microsoft
           
          Posts: 2 / Nickname: msintervie / Registered: October 24, 2007 5:01 PM
          Re: How to Interview a Programmer
          October 24, 2007 10:05 PM      
          <a href=http://www.emicrosoftinterview.com>Microsoft Interview Questions</a> gives you good idea of how to interview Programmer
    • Peter
       
      Posts: 1 / Nickname: petehoward / Registered: August 1, 2008 9:44 AM
      Re: How to Interview a Programmer
      August 1, 2008 2:51 PM      
      May I contribute my own response to the question? - based on around 20 years experience in several different companies.

      It's a standalone MS Word document - that surveys an approach and includes a checklist and screening test that my be of interest to others.

      The page at which it is hosted is: http://peterhoward42.blogspot.com/2008/03/software-management_20.html

      Or you may prefer the direct URL to the Word document:

      http://www.peterhoward42.pwp.blueyonder.co.uk/interview-swdevs.doc
    • Paul
       
      Posts: 1 / Nickname: ppmoore / Registered: October 22, 2009 7:22 PM
      Re: How to Interview a Programmer
      October 23, 2009 0:32 AM      
      Funnily enough (before finding this site), I was recently interviewed for a job here in Belgium, where I was asked the "power of 2" and "chicken class diagram" questions. The sad thing was that the interviewer was very introvert and made no effort to engage me as a person, or to ask me about my previous projects and the problems I had encountered or solved.

      Because I felt I was being judged by these two silly "puzzle" type question, I lost interest in the job, and simply replied that the solution to every question can eb found on the Internet.

      Polo
    • Bill
       
      Posts: 409 / Nickname: bv / Registered: January 17, 2002 4:28 PM
      Re: How to Interview a Programmer
      February 24, 2003 11:09 PM      
      Another weblog entry about the article:

      http://www.cardboard.nu/archives/000024.html

      I can't tell who posted this either. I wonder why these webloggers don't make their name more obvious. Here's an excerpt:

      My favourite set of questions for interviewees starts by asking them to describe a large system that they've worked on before - I pick an appropriate one off their resume - and getting them to draw the system on a white board.
      • Charles
         
        Posts: 1 / Nickname: carlfish / Registered: February 25, 2003 7:09 AM
        Re: How to Interview a Programmer
        February 25, 2003 0:38 PM      
        > I can't tell who posted this either. I wonder why these
        > webloggers don't make their name more obvious.

        Well, I wrote the first one. The trick on weblogs is usually to look for a copyright notice at the bottom of the page, or check the front page of the site for contact info.
        • Bill
           
          Posts: 409 / Nickname: bv / Registered: January 17, 2002 4:28 PM
          Re: How to Interview a Programmer
          February 25, 2003 4:45 PM      
          > > I can't tell who posted this either. I wonder why these
          > > webloggers don't make their name more obvious.
          >
          > Well, I wrote the first one. The trick on weblogs is
          > usually to look for a copyright notice at the bottom of
          > the page, or check the front page of the site for contact
          > info.

          Now I see it. I did look up and down that page for an author, but didn't notice the small print. I did click on the Main link and went to the home page too, but I didn't notice your name there on the right, also in kind of small print. Now I see your name on the home page, and that you have an about page with lots of info.

          One thing I've learned about web pages is people really don't see things even if they are right in front of their eyes. People are in a hurry and focused on the one thing they are trying to do, and they don't notice things outside their focus. Most everyone who comes to this site are "casual users," as Ken Arnold once put it. They aren't experts in how to use Artima.com and all its features, so if I want to get something across I have to make it big and obvious.

          Anyway, I did like the little "tail -f /dev/mind > blog" script in the title of your weblog, and I wanted to know who did that. But then I couldn't find your name.
        • Tman
           
          Posts: 1 / Nickname: tmastermin / Registered: November 30, 2009 8:00 PM
          Re: How to Interview a Programmer
          December 1, 2009 2:08 AM      
          You got a good point. Also, what I did for hiring them is their work attitude, experience as well as communication skills so that I will not have to worry on supervising them at most hours at all times. For an internet marketer like me, finding time training and supervising can be a lot time consuming so it really pays to hire those who can be deserving of the business. Although in the process, there will always be new learnings even though this person has had even more trainings than the others. I still consider those who are willing to learn and stressing with passion, that's the best ingredient for a person to gain his expertise.


          _________________________________
          MassOutsource (dot) Com/Report
    • Orlin
       
      Posts: 1 / Nickname: orlink / Registered: January 25, 2010 1:50 PM
      Re: How to Interview a Programmer
      January 25, 2010 8:28 PM      
      Amazingly, no one seems to have a sure method for evaluating software developers.
      I also struggled with that for a couple of years before I struck on a solution.

      A good software developer has a combination of strong multi-dimensional imagination, good mathematical thinking, good logical thinking, empathy and initiative.

      It is relatively easy to test for logical thinking - most programming interview questions out there are geared towards that. It is also easy to evaluate whether the candidate has empathy.

      It is trickier to to test for imagination and even trickier to do it efficiently and with few false positives and negatives. You need to do it efficiently because that is the rarest skill of all five and should be tested for first. I currently use a combination of a quick non-programming imagination pre-screening and an expanded programming test which contains imagination requiring algorithmic questions.
      When in doubt, I would also advise to test also for recursive programming - perhaps the most fundamental programming skill.
      I also like the suggestion of a previous poster to ask the candidate to refactor some code. A good developer writes small and streamlined code.
    • Bret
       
      Posts: 1 / Nickname: bretwt91 / Registered: June 23, 2011 7:02 PM
      Re: How to Interview a Programmer
      July 12, 2011 10:50 PM      
      I had assumed for a long time that everyone billing themselves as a “programmer” had a certain baseline level of knowledge. I discovered that this was not the case at all! While not every developer has a degree in computer science, it should be expected that every developer understands certain fundamental ideas. While the ideas may not always come up in day-to-day programming, they are important for developers to understand. Some of these questions I like to ask are:

      * Explain the difference between “equality” and “equivalence” (credits to TechRepublic member Tony Patton for this question).
      * What is the difference between “pass by value” and “pass by reference”? How are these ideas different in object-oriented systems and procedural systems?
      * Describe “polymorphism.”
      * Compare and contrast “pessimistic locking” and “optimistic locking.”

      Any candidate who cannot successfully answer the first two is “entry level” at best. The second two should be answerable for any “intermediate” developer.
      • Adam
         
        Posts: 1 / Nickname: pzelnip / Registered: October 13, 2011 4:44 AM
        Re: How to Interview a Programmer
        October 13, 2011 9:47 AM      
        >> What is the difference between “pass by value” and “pass by reference”?
        >> Any candidate who cannot successfully answer the first two is “entry level” at best.

        So what if you're working in a language that only has pass by value or only has pass by reference?

        Sweeping generalizations like "if they know XXX then they should be able to answer YYY" tend to be highly language or technology specific.