Interview process is a tough topic. Not only for the potential recruit but also for the recruiter. As most people are usually looking at the process from the interviewee perspective, the recruiter is seen as a privileged position, able to decide between life and death (or at least about someone’s future job). However, what most of people are not aware of is the pressure, responsibility and trust put into the interviewer. In the result of a positive decision, it is very often the case that he will need to cooperate and work quite often with the hired person. And even if not, the performance of the new hire will define the performance of the professional recruiter. So how do you deal with recruitment to find a good IT professional? What questions are worth asking?
The first thing usually taken into consideration and verification is experience in specific technologies set. While topic is quite important, it shall be tackled carefully. Quite often very good developers will not be able to answer very specific questions. Watch out with questions like: “What is a difference between interfaces in Java 1.7 and 1.8?”. Someone might not be up to date (which is of course some sort of sign) while still being a brilliant employee. It is more important to check two things: general understanding of technology and basics. Example questions might be: “When will you use an interface and when will you use an abstract class?” or “Please describe try-catch-finally block. What is it used for?”. Ask also for them to write a piece of code (for example using generics). The knowledge of basics will prove that the candidate knows the language. General understanding will show that the recruit was already using it and solving real problems with it.
The second trait worth checking is logical reasoning. It can be done quite easily by providing a candidate with a set of logical riddles. As a source of them you can use questions from logic contests (secondary school level is surely enough). Ones from such origin are very suitable as they are verifying actual logical thinking and are not depending on finding some hidden twist. Another nice place to search for is the Are You Smart Enough to Work at Google? book. It is advised to start with some simple ones and then progress to advanced ones. How might the riddles look? Here is a simple one:
You have bathtub with two taps: one fills the bathtub in 10 minutes, second fills the bathtub in 15 minutes. If we will open both taps in the same time, what time will it take to fill the bathtub?
And is a more advanced riddle (it is possible to solve it in two attempts):
There are 8 visually identical balls. 7 balls have the same weight, one ball is lighter. You have been provided with a classical weighing scale (with two pans). How many attempts will it take to discover the lighter ball?
If the recruitment process is stricter about developer positions, it is worth asking about algorithms. It is hardly imaginable that a good developer will not be aware of a few sorting algorithms, how to traverse a tree or graph, or how to find the shortest way between two nodes. It only takes moment to check if candidates know the difference between hash maps and tree maps. It is also worth asking them to solve simple problems requiring algorithms knowledge. For example:
You are given two sorted lists of integers, each size of n. How in linear time and without linear additional memory do merge them into one list?
A good developer knows their environment and tools very well. Verify it! Ask about:
- IDE, why do they prefer one over another, if they know the most common shortcuts (and I am not talking here about copy paste!),
- debugger, how to use a local and remote one,
- familiarity with SCM systems, do they know GIT, Mercurial, what exactly pull is doing,
- do they know build systems, which one,
- and, the king of questions, do they know Jenkins (or any other CI server), have they played around with it a little it at any time?
The above set of questions quite clearly define horizons of a recruit. They enable you to distinguish between a workman and a master artisan.
Hard skills and logical thinking is not all that counts. Soft skills should also be considered a crucial trait. To check persistence and character you can ask one of (considered as a strange) these questions about estimation:
- How many gas stations are located within a city?
- How many ping pong balls can be placed within this room?
- How long are all roads located within a city?
Observe how the candidate will react and respond. Will they enthusiastically start to think about how to approach the problem, or will they state that such questions are not relevant or even stupid. Try to convince them to tackle the problem in the best possible way. It is exactly in this moment that you can check their approach and perseverance. If you aren’t able to prompt a candidate to take this question seriously, you will also have the same problem in the future with normal tasks. However, if the recruit does try to answer the question you will have valuable information about their estimation skills.
Another two skills that can be verified with one question are communication and problem solving. To check them, provide a real world issue with some missing information. An example question might be:
Your boss is asking you to provide information on how many testers we should hire to test our web application (choose any stack with which the recruit is familiar). We have eleven Linux servers assigned for this purpose, one with Oracle instance installed.
A person with well developed interpersonal skills will start to tackle the problem by pointing out several understatements here. Do we know:
- how many testers might be assigned to one application instance,
- how many application instances might be handled by one server and provided Oracle instance,
- how strongly can we modify provided servers,
People who are lacking clear communication skills and have undeveloped problem solving skill will start to wander around the topic and will not provide a meaningful way on how they would handle it. If the candidate tries to clarify the question and points out what is missing, it possible to stretch it even more by simply saying: “The boss left you in charge and has left the office. What are you doing?” And again, a candidate with well developed interpersonal skills will have quite a lot of ideas how to tackle the problem within a company (ask people, check out some things himself, etc).
While it is very important to objectively evaluate how the candidate performed in all checked categories, you cannot forget about the overall feeling:
- Was the communication ongoing?
- Was the person open for challenges?
- How did they perform in troublesome moments?
- Was it a nice talk or did it feel nervous and unpleasant?
- Was the person motivated and open minded, with a positive approach all through the interview?
All of this can be wrapped up in one (quite famous) question which recruiters ask themselves after an interview:
Would I like to be stuck with this person in an airport for 5 hours while waiting for a plane?
I do not need to explain to you what the answer will mean.