Try solving the puzzle below. The answer and an explanation of how to solve the generic version of the problem can be found in this article by Jack Wert.
You have 9 coins, one of which is heavier than the rest. You are provided a weighing scale. What is the least number of weighings required to discover the heavier coin?
You may have already known the answer. Or you may not, but after deriving the answer or looking it up, you will feel confident to answer any similar question in future. Someone asking you this puzzle again cannot say whether you knew the answer or found it yourself, unless you tell them.
This is my primary objection against those people and companies who try to filter potential employees by asking them to solve puzzles and problems during interviews. It is impossible to understand if someone is intelligent through such methods, because these puzzles can be learnt.
Once you understand the basic technique for solving the problem, you can handle many similar problems too. And I am not just talking about above-average people. Most people can understand techniques and remember things, especially if doing that would lead to benefits like a job.
Another interviewing error is to convert the interview session into some sort of quiz contest. The interviewer asks obscure details about a particular technology, perhaps under the misguided notion that everyone in the world works in the exact same environment as he does. Many of these questions can be easily looked up through the API documentation, a Google search, or some book.
Such interviews are a waste of time even if you have a lot of time. The reason is that they measure the wrong things:
- What you can discover is more important than what you can remember. There are more things that you can discover than you can remember. And there are only so many things you can remember because you are a human being and do NOT have a RAID array.
- Your ability to learn is more important than your current knowledge. Today’s innovation continues to make a mockery of what you have learnt yesterday. Especially in the software industry. If you were an expert 3 years ago and you learnt nothing new since, you are a dodo today.
- The big picture is more important than the small details. The latter is not a percentage game. Out of the thousands of technical idiosyncrasies and code snippets that you have accumulated, you may use only a handful ever again. Worse, you may not even remember that you had saved the information and now have to look it up. Focus on the big picture. Get help when you need to know more detail. That is what the Internet is for.
- The team is more important than the individual: The individual’s ability to contribute to the team and work in a particular role is more vital to its success than the individual’s capability. Effective communication, mutual respect, and common goals drive success, not a bunch of talented individuals thrown together in a room.
When you interview, try to understand the “fit” of the individual with your team. Is he a person who can change and grow? Is he interested in learning and self-improvement? Is he interested in the same technical things you are? Does he have the same values as you do? Is he motivated by the same things that you are?
Don’t be in too much of a hurry to hire someone who has only passed your technical qualifications. If they don’t blend in your environment, all they provide you is temporary relief for a vacant position. In the long run, their inability to grow and adjust will come to haunt you.
P.S. This article is meant for interviewers. If you are an interviewee, don’t try to beat the system. Pick up a few puzzle books and learn the answers. Read the commonly asked questions in your industry and be prepared before going for the interview. I don’t know why more people don’t do this.