I’ve been in many developer interviews and I’ve frequently been asked puzzle questions. You know what I’m talking about- the kind that has one cool, non-obvious optimal answer that the interviewer knows and that you don’t, and that you have to come up with in the next 10 minutes or you’ve screwed up your chances of getting that job.
Here are some quick thoughts on the questions and a proposal for something different:
People in interviews are nervous: A nervous person has high adrenaline, which pulls blood from the brain into the extremities, lowering their higher-order abilities of reason and judgment. A lot of reasonable, highly intelligent people become babbling morons in a high-stakes situation. (Reminds me of my first date!) Puzzle questions exacerbate the problem because there is an edge of hostility in them. More to the point- Interviewees who know anything about us study puzzle questions books ahead of time knowing that they might get asked. They guy who did well on the puzzle question – was it because he knew the answer ahead of time, was it because he just doesn’t get nervous, or was he just brilliant? It’s very hard to tell. I suspect Alan Turing, who is described as shy and nervous, would do poorly answering puzzle questions in an interview.
It’s a double standard: Consider this- I ask puzzle questions of my colleagues quite often. I’ve never seen a question solved on the spot, or quickly. People usually walk off to be by themselves and come back a day or two later with the answer. Interviewers usually give just a few high-pressure minutes for solving their questions. Does asking questions in this manner do an effective job of predicting how a person will behave in a work environment? I don’t think so.
There is an alternative: The goal is to lower adrenaline and still ask questions that exercise reasoning ability/creativity. One way to achieve that is to ask questions that are based on personal experience, and have no “right” answer, and are naturally difficult. Asking questions like this lowers your status as an interviewer and balances the conversation. This conversation will be of the type we have every day at work and will give the interviewer much more useful information. Here are some examples of questions off the top of my head:
- How would you calculate how much salt a person eats in a year? (A variant of the famous “gas-station” problem. My observation is that I am solving gas-station problems at least once a week at work.)
- How would you organize one billion photos?
- How would you approach writing a program to compute the number of lines of code in a large code base?
- Imagine everyone in the world had a Bluetooth medical monitor that uploaded information to a giant database. What challenges does this create?
I think these questions are low-pressure alternatives to puzzle questions that allow a person to share their reasoning abilities in a conversational way.