Friday, May 21, 2010

The perfect interview: Make your own assumptions

I am making a lot of interviews these days. So I wonder if there is a way to make the "perfect" interview. I say, probably no. How can I understand how good is a candidate in just one hour? Certain people are good in communication, other people are shy. Certain people are good team workers, other people are good as individual contributors. Certain people are good with numbers and symbolic computations, other people are good in describing methodologies. Certain people can have a bad day, other people prefer to leave for other places. And so on... So you want me to understand all these factors in just one hour? I say: No ways. Give me a couple of weeks to start with.

Anyway, interviews are important and you need to find a solution. So I follow three golden rules:

1) Many judgments are better than one. The candidate should be evaluated by many independent interviewers in a loop. It would be better if the interviewers express no judgment until the loop is closed to avoid influencing each others;

2) I always ask to myself: "Can I work with this candidate? Would (s)he help me in solving the problems we face day by day?"

My interviews are around some problem solving (you read my blog so you know this), a lot of algorithmic questions ;-), a lot of C++ coding and design patterns. In addition, machine learning, retrieval, and data mining are my areas of expertise so do expect to get some questions here. I am not very much impressed if you know all the recent academic papers or the books. I am very much interested about your intuitions. In fact, my third question is the most important one:

3) "How much creative is this candidate? How much can we learn from him in the future?"

The most interesting part of the interview is when we can discuss about hard problems
applied to real life and on very large dataset (up to petabytes of data). I describe the problem with one or two sentences and then tell to the candidate

Make your own assumptions


  1. I've done hundreds, perhaps even thousands, of interviews myself over the years. I think we are looking for similar things, but the style of interviewing I settled on sounds a bit different, so let me chime in here in case it is useful to you.

    I usually am looking for enthusiasm for a problem, depth of knowledge on that problem, and a willingness to admit the limits of their knowledge.

    My usual strategy is to keep asking probing questions about an area of their previous work, going deeper and deeper, asking them to express why it is important, what they tried, and what they could also have tried.

    It doesn't particularly matter if I have any deep knowledge of the area we are discussing. I just keep asking questions, probing deeper and deeper.

    Ideally, not only do they show considerable depth of knowledge about their past work, not only does the candidate infect you with their enthusiasm for the problem, but also they teach you something.

    At least in face-paced technology companies, I think enthusiasm, ability to develop deep knowledge on a problem, and willingness both to learn from and teach peers selects for people who are most likely to be successful, those people who are most likely to get things done quickly working with a team.

  2. Perfect !!

    I had a Google interview recently and 5 out of the 9 questions asked to me by 4 interviewers (back to back) were open problems. I had so much fun discussing different approaches with them. I was surprised when my first interviewer's second question came out like this .... " Let's now discuss some open problems" ...

  3. Well compare it with Microsoft enviroment ;-)