While conducting an interview the final goal is really important, what do you want to find out about the applicant. Some of the common goals are:
- Will the candidate be able to write the code in a production environment?
- Can the candidate easily discuss problems and code with other people and are they are to read other peoples code easily and understand it?
- Does the candidate have a knowledge of algorithms and can solve programming problems given arbitrary constraints?
Apart from strategic goals like programming languages and knowledge of specific frameworks there are some tactical goals as well that you might want to achieve:
When you have given a specific coding problem or task for the candidate to solve, the process by which he/she solves it is more important than the result itself. Here are some pointers to help you along the way.
- As such everyone makes mistakes but what kind of mistakes were made. Were they mistakes due to a lack of knowledge about a subject or were they mistake due to unfamiliarity with the problem or were these mistakes due to sloppy work performed by the candidate. How fast were they able to recognize and recover from the mistake
- When the candidate solves the problem was it because of skill or were they just plain lucky? Did they have a good logic for solving the problem the way they did?
- Can they candidate discuss and explain to you how they solved the problem and what was the logic behind how they did it? Were you able to understand what they said?
- Does the candidate have a good grasp of their own code? Can they easily make changes in the code in a short period of time? Or are they taking a long time to understand their own code?
- On the Job performance
- Setting them up for Success
Minimizedistractions while they are working
On the Job performance:
We want to see how the candidate performs on the job he/she will be tasked to do. So, create an environment as similar as possible to the one they will be working in.
The problems given to solve as well the work environment should be the one they will be facing on the job in their day to day activities.
Things like refactoring the code on a whiteboard or remembering the Api documentation are quite challenging but is not of much significance in the real world.
Refactoring the code they have already written to work in a new direction. Debugging the code that is not showing any problems in the console is a core skill any programmer would need but many coding tests fail to test for.
Not everything challenging is very useful in day to day life of programmers and use should make a conscious effort to focus on stuff that they might require in the job.
Setting them Up for Success:
You want the programming task to be a challenge but everything else should be such that it helps the candidate to succeed.
You should have a mind set that you want the candidate to succeed.
The instructions should be clear:
There should not be unclear instructions and expectations of outcome, the candidate should not be in a guessing environment of ” what the interviewer really wants to see in the test”. The candidate should not have to deal with
You want the candidate to succeed and give their 100%. If you decide not to hire someone it should be because despite their best efforts they were not able to perform on the test. Not because they couldn’t perform because the testing place was dimly lit, or instructions on the task were unclear. Good programmers are difficult to find and if you miss out on them because of silly stuff, its really your loss.
Minimising distraction while they are working
Because coding is both an art and a science you want to minimise distractions as much as possible. More time you can observe them doing work, debugging and have a discussion over their approch to solution the better you will be a judge of their capability and skills.
Make sure they understand the problem and correct them if they veer off the solution. But
Contraints and limiting factors of conducting coding interviews
Let us assume, a candidate is given a programming question to solve, and they finish it easily and correctly. How they got the solution could be in one of these ways:
- Candidate is highly knowledgeable and a skilled performer, and using their skills and knowdge they have solved the problem
- Candidate has seen this problem or this type of problem before and just went to the solution they already knew.
- Candidate has no knowledge of the problem at all and went with any of the possible ways to try to solve it and just picked the correct one arbitarily.
Ways to circumvent this bais:
Rather than going over the problem objectively get the subjective view of the candidate and try to get the logic and resoning behind the approch.