Showing posts with label interviewing. Show all posts
Showing posts with label interviewing. Show all posts

Wednesday, 28 January 2009

Great interview question

This article suggests that you should always ask
"What do you do in your spare time?"
since it tells you a lot about what the candidate is passionate about.

Now, I have been asking this sort of question in social settings because I am not a great smalltalker -- although I'd like to learn one day ;-) -- and usually asking that question (or what's your passion or hobby) get's people engaged and open up. Unfortunately some people are very obsessional and will launch into long monologues at the sniff of such an invitation, in which case it's time for me to interrupt, excuse myself and go and get another drink (especially in this heat).

Anyway, while I think it's an interesting question, I am not sure that it is that easy to interpret the answers. I would suggest supplementing it with a follow-up when there is no obvious connection:
"What have you learned from full contact macrame [or whatever] that relates to your day-job?"
Let the interviewee do the hard work!

Monday, 14 April 2008

Interview Questions for Candidate Software Developers

Basically I am looking for evidence of the following
  1. Smart
  2. Gets things done
  3. Communicates effectively
  4. Passionate about software development
  5. Has a solid technical foundation
  6. Quick learner
  7. Cultural fit (sense of humor, down to earth, enjoys working with others)
In the past I have written down my questions for candidate software developers 0n scraps of paper, which get lost. Here are some somewhat open questions:

Work history
  1. Why are you interested in this job / company?
  2. Why now?
  3. Tell me about a tough lesson from your last job.
  4. What are the key things that you have learned about maintaining and enhancing a pre-existing software system?

Object-Orientation
  1. What is the difference between a class and an object?
  2. What is an interface? Why are interfaces useful?
  3. What is inheritance? Compare and contrast single and multiple inheritance.

Programming Language Theory

  1. What is recursion?
  2. What is an advantage of iteration over recursion?
  3. What is an advantage of recursion over iteration?
  4. *What is a closure?
  5. *What is a continuation?

Agile (assumes some [claimed] knowledge)
  1. Have you worked in an "agile team" before?
  2. Have you read up about Agile / XP / Scrum?
  3. Explain difference between waterfall and iterative development
  4. Explain some of the XP practices (e.g. pair-programming, test-driven development, continuous integration, re-factoring)
  5. What's Scrum about? How does it work?

Testing
  1. Difference between manual and automated testing?
  2. Which kinds of automated testing have you used?
  3. In which areas is it trickier to test automatically
  4. Test first or code first? Why?
  5. *What is Design By Contract?

Motivation

  1. Favorite things about working in IT / software development?
  2. Worst things?
  3. What do you want to learn more about?
  4. Let me solve it and report back, or let's figure this out together?
  5. What are the key elements that make for a good team?
  6. Tell me about a cool tool, language, or technique that you have learned and applied recently.
  7. Favorite and least favorite programming languages that you have used professionally?
  8. Why?
  9. What's wrong with [favorite]?
  10. What's good about [least favorite]?

Of course, a lot of the interview is about gauging the tone (affect) of the response and following up on interesting responses.

Additionally, I usually do a pair-programming exercise / challenge with technical candidates, usually with a little design phase and some test-driven development. This tells me a lot, but it is time-consuming and can be quite draining (especially if it doesn't go well!).