Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

The internet is full of references on how to get prepared for an interview. Many websites are loaded with questions and answers. But I can't find any useful information about what exactly an interviewer should do to evaluate a candidate.

What I mean is not just collecting good questions to be asked. I am asking about strategy for evaluating a candidate and find out if he is really good or just learnt the questions and answers well. I wonder if someone can share his experience in interviewing SWES, and what do you think about the following

  • What to expect from a junior java developer? what he should know?
  • What to expect from a senior java developer? what he should know?
share|improve this question

closed as primarily opinion-based by MichaelT, GlenH7, jwenting, Bart van Ingen Schenau, gnat May 26 at 16:17

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

3  
What do YOU know? –  user1249 Aug 3 '12 at 13:14
1  
@JarrodRoberson: That's a bit harsh. So should ROO just not interview anyone if he's been charged with this task? I've had my share of interviews where I felt the interviewers were fairly clueless about how to conduct interviews (and some excellent ones where I was grilled to near exhaustion), and I learn a little more about how to do it every time I interview a candidate. It's a fair question, I'd say. –  Amos M. Carpenter Aug 5 '12 at 6:22
    
@aaamos I would say, both extremes are just as bad as the other, and neither extreme garners any respect for the company or the interviewer by the candidate. The company should provide some training on how to interview people. And the crux of this question is what should people of different skill levels should know, I stick by my assertion, if you have to ask what a "senior java developer should know" you aren't qualified to interview them! –  Jarrod Roberson Aug 5 '12 at 13:59
    
@Jarrod: I tend to give people the benefit of the doubt. Instead of assuming that the OP is asking, "I'm clueless about this, what should I do?" (in which case you'd be right, but ROO would still have to do his or her best, and there's nothing wrong with asking for help), I am assuming that the OP is asking for some specific pointers on strategies that have proven useful for others in order to improve his or her own technique. I stand by my assertion that telling someone they "shouldn't be doing interviews" is neither correct nor constructive. –  Amos M. Carpenter Aug 5 '12 at 14:17
1  
@aaamos then the question is off topic either way –  Jarrod Roberson Aug 5 '12 at 14:20
add comment

6 Answers

up vote 11 down vote accepted

Ask real-world problems

We have set of pre-compiled questions and tests asked to each candidate to see how well he meets minimum requirements for position. We expect good understanding of the required technical topics.

We start our face-to-face interview (after a pre-screening phone interview(s) of course) with a question on what are the interests of the candiate, and continue with basic fundamental questions and then adjusting the level on how deep we would like to continue with that topic.

Our guidance in technical topics is candidates resume. Thus, spending 10 minutes to read resume before interview is more than important. We try to check important stack of technologies by real-world daily routine questions, that only hands-on experienced candidate may have glue about.

I would suggest to combine some real-world problem solving questions and try to see how candidate reasoning of problem work. If candidate answers honestly, and saying he does not know topics that we ask, we really appreciate honesty and not bullsh**ing.

As an example: if some candidate claims 6+ months of work with jQuery, but can not explain what is "selector", i would just stop asking further. Because, power of jQuery is coming from good understanding of selectors.

Same thing holds true for other topics like indexes in Database. If someone memorized what is cluster and non-cluster index is, but could not give proper explanation when and where we need indexes, by claiming 2 years of experience in DB development then everything is clear.

share|improve this answer
4  
+1'd just for the title. –  SomeKittens Aug 3 '12 at 15:45
add comment

What I mean is not just collecting good questions to be asked I am asking about strategy for evaluating a candidate and find out if he really good or just just studied well questions and answers.

Well, if he studied the right questions/answers, that's already a plus for him.

Then, there's this: http://www.codinghorror.com/blog/2012/03/how-to-hire-a-programmer.html

But, you know, that might not be the right strategy for you.
What exactly are you looking for? Is it someone who has a lot of experience in a certain technology and knows its gotchas or someone who can adopt to new things quickly? Or someone who's creative and can think outside of the box?
When you realise what you need, it shouldn't be too hard to find the right questions for the candidate. If you're looking for questions on the internet, and are concerned that someone might actually learn the solution by heart (or something silly like that), you can always modify it a bit, or come up with your own questions.

Having said that, you shouldn't expect too much technical knowledge from a junior developer. Just make sure that he's bright and interested.
When it comes to senior developers, they should already have a lot of experience, so you can always ask them to talk about what they've done before.

share|improve this answer
    
+1 for the Atwood reference. –  GlenH7 Aug 3 '12 at 13:42
add comment

Consider studying Programming Interviews Exposed, 2nd Edition by Mongan, Kindler, Giguère.

Chapters 3 through 11 are strongly recommended reading for interviewers - these give an excellent reference on how to do technical questions. These chapters also make good reading for hiring managers - to get an idea of how much effort might it take to prepare a good question.

share|improve this answer
    
that's a helpful link –  Noname Aug 3 '12 at 15:53
add comment

I would avoid rote, memorization type questions. IMO, all they tell is whether or not the programmer has hit that particular situation before or if they found the "right" question to study ahead of time.

Providing technical problems to solve is a good approach - it gives you an opportunity to see how they solve new problems and what their approach will be. Pick something related to your program's domain. The difficulty or scope of the question can be scaled based upon the position you are hiring for. Junior developers should have questions that you would expect them to be able to solve. Senior developers should get the more challenging, open-ended type questions since you would expect them to lead product development.

To gauge personality, I'm a big fan of behavioral based interviewing. Instead of asking "what would you do" it's asking "what did you do?" Since it's from the past, all the candidate has to do is recount what actually happened they don't have to think through a situation and determine what is the "right" answer. It's okay for candidates to bring up bad situations they were in so long as they explain how they would do things differently the next time. BBI is a great way to figure out if the candidate is going to be a good fit for your team. It does take some practice to get used to, but it's the best technique I have found to understand the candidates personality.

share|improve this answer
add comment

Have them write code on a whiteboard or on paper for something like 1. Reverse a linklist without using built in method in the java/std/.net API 2. Design/Create a stack using a linklist. For this they will need to understand some design patterns.

share|improve this answer
add comment

The two main points to consider, in my opinion, are these:

  1. Is the candidate a good cultural fit?
  2. Can your candidate program?

Nobody wants a great programmer with an ego twice the size of your company (at least not if you're going to have a team of developers) or someone who's too shy to share ideas with others. And even the most likeable person is rather useless to you if they can't program their way out of a paper bag.

Cultural questions are ones you'll have to decide for yourself; after all, it's your culture the candidate needs to fit into.

As for programming questions, I recently had a good interview with some guys who gave me a FizzBuzz test (or maybe try some alternatives) while asking me a bunch of other questions. Sometimes it's good to see how candidates perform when you take them out of their comfort zone; this can trip up even some "senior" programmers. The last time I interviewed candidates, I put some intentionally bad code in front of them and asked them to point out how it could be improved. The point of FizzBuzz questions and code-on-paper type questions is to weed out "pretenders" who are good at theoretical programming but can't perform when they have to write or analyse actual code. It can also stump veterans who are too used to writing code exclusively with their favourite IDE and forget the pen-and-paper basics. How much you read into their performance is up to you (in my case we hired a guy who drew a complete blank when looking at the code sample, because he did really well in all other questions and we could tell from other questions that he was technically quite capable).

Whether you're interviewing for a junior or senior developer role, I would also recommend not wasting too much time going into detailed questions about specific technologies. Once you know they're technically good programmers (with good core Java skills), and have made sure they didn't just put buzzwords in their resume without really knowing anything about them, you should be confident that they can pick up skills in the relevant frameworks relatively quickly. If you can program, you should be able to program irrespective of what technology stack is used.

Last but not least, go with your gut instinct and try to see past artificial facades interviewees tend to put up.

share|improve this answer
    
I would have appreciated a comment explaining the downvote. Is this answer really "an egregiously sloppy, no-effort-expended post, or an answer that is clearly and perhaps dangerously incorrect"? –  Amos M. Carpenter Aug 6 '12 at 0:31
add comment

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