The recruitment process and coding interviews have generated quite a buzz online in the last few years. The interview process plays a significant role in hiring programmers. It’s time recruiters take a holistic approach to the programmer hiring process. A great interview process makes developers look forward to working with you. Programming interviews are a reflection of your brand, and a software engineer creates an opinion of your company from the interview stage.
Recruiters should embrace diversity, and not only in terms of race or gender but also age, social class, technical backgrounds, work experience, etc. Try as much as possible not to have any preconceived notions on a particular candidate as you will be biased. The goal of a programming job interviews should be to hire a candidate that is smart and gets things done. Having an open mind is the key to a strong software team.
Programming interviews: principle to practice
Interviews are not interrogations
If you have ever been to a rapid-fire question interview, you can relate. Interviewers work with a set list of questions, expect short answers, and keep the interviewee on edge. It is always good to put the candidate at ease. Let them briefly talk about themselves. Ask follow-up questions instead of turning the interview into a Q&A.
However, this doesn’t mean that you, as the interviewer, don’t prepare a list of questions. Programming interview questions ensure that all interviewers evaluate all candidates equally. The trick is knowing how to use the questions as conversation starters.
“Look for passion. Smart people are passionate about the projects they work on. They get very excited about the subject. They talk quickly and get animated. Being passionately negative can be just as good a sign.” – Joel Spolsky, Board Chairman for Stack Overflow, Glitch, and HASH
Be open-minded and listen to opinions
We are human, so it’s not the strangest thing when we stick to what we prefer. We have different views on potential solutions to the coding questions we’re presented with. As a recruiter, you can easily bias the answers given by candidates, so you must keep your opinions neutral.
Besides, there are so many viable solutions to a cracking coding interview or algorithms data structure questions – it’s not a precise science. Yes, expect them to write programs but not using the exact code or specific language syntax that you would have used.
According to Gayle Laakmann McDowell, when interviewing, check for passion and learning, no matter what. It shows if the software engineer cares enough about his or her career to practice and keep learning about it.
An interview differs from an examination
Treating an interview like an exam creates room for candidates to ‘cram’ for the job interview. An interview should be more interactive and cover a broader scope than exams. The main goal of an interview is to assess if the software engineer has the required skills for the job, be it in Java, Python or Data Science. If they only crammed the answers, then you will be paying for that mistake soon.
See the code
The job description of a software engineer revolves around coding. You need to see the candidate’s code to understand their coding practices, reflexes and thought process. An excellent programmer should not only write code but also put into consideration time space complexities to pick the best structure algorithms.
Note the questions not to ask
Keep off lifestyle and other illegal questions. Race, religion, gender, or sexual orientation of the candidate aren’t a reflection of their knowledge and skills. Also, brain teasers and quiz show questions are highly discouraged.
Structure for coding Interviews
The interview structure differs in various organizations. The interview experience can be categorized into three parts.
Honesty is the best policy.
At this stage, tech talents are to be informed of the programming job details, including timelines, who will be meeting them, expected salary, and the like. 35% of programmers prefer to receive information about the programming interview before the interview, so as to be better prepared. 20% of programmers say that they consider flexibility in scheduling an interview as an important factor when accepting an interview. There is no need to waste each other’s time if your expectations are different.
2. During the interview
The typical structure during a coding interview is:
- Questions based on a technical assessment and/or recent projects
- Live coding tests
- Recursion question
- Open the floor for them to ask questions
Introduction: the first impression can make or break even the best candidates. Tech interviewers should keep this in mind. Start on time! Lateness and disorganization on the interview day is a no-no.
According to a 2015 Stack Overflow survey, 47% of software developers want an introduction to the team they will be working with as they want to know the kind of people they will be working with. An office tour is also appreciated: 37% of software engineers wish to have a tour of their working space. Developers pay attention to the area, computers, comfy seats, hardware setup, and the like.
Relevant questions: the right programming interview questions focus on what the candidate gets done and decision making. You want to understand their choices, reflectiveness on mistakes, and the opportunities they are seeking. You want a feel of both their programming and soft skills. Ask about the technologies used (java, python, C++), work history, challenges faced, and the roles they have played.
If you implement technical assessment tests as part of your screening process, make sure you revise candidates’ answers and prepare relevant questions based on their work. Not only do coding tests allow you to quickly and easily shortlist the best developers, they also serve as food for conversation during an interview.
Live coding tests: Stack Overflow say 34% of programmers want to see more live coding in their interview process. Live coding questions help you evaluate the thought process of a candidate as you get to see them at work. The most relevant live coding tests are based on a candidate’s answers to an initial technical assessment (that they were able to complete at home, in their own time). For example, a binary tree solution will give you a deeper understanding into the non-linear thinking of the developer.
A remote online coding video interview may well prove the most practical set up.
Recursion question: these are conversation driving interview questions that happen as the tech candidate is solving a coding problem. You can ask why they chose their particular solution, the characteristics of their algorithms and data structures, where is the bug, etc. Note that you, the interviewer, should only ask relevant questions. For instance, for a Java developer, revolve around data structure algorithms such as singly linked lists, binary search solutions, string solutions, and array data structures.
Once you’re done with your questions, invite the candidate to ask any questions they might have themselves.
It’s vital to write your impression and views on the programming interview immediately. Outline the pros and cons of the candidate. Don’t share your opinions with other members of the interviewing team until you are all done – make sure you all make independent decisions.
Communicate your hiring decision back to the candidate as soon as possible. The reason being you don’t want them to go elsewhere if you pick them, and you ease their uncertainty if you don’t! Show empathy regardless of how bad the interview experience was and let them know you chose another software engineer.
“Many developers say one of the biggest complaints is applying and interviewing into a ‘black hole.'” – Matt Sherman, Engineering Manager at Stack Overflow
Measuring and improving your tech recruitment process
“It is tough but necessary to look at who you hire and decide whether you have a good or bad process.” – Kerri Miller, Lead Software Engineer at LivingSocial
One of the best ways to measure your code interviewing process is by looking at the candidates you didn’t hire. What were the reasons for their rejection? Were they false negatives? With social media, it’s not hard to LinkedIn or GitHub stalk the candidates you let go six months down the line. See what they are doing in their careers.
You should also look through your interview process pipeline to see the candidates that drop off along the different stages. Monitor and evaluate them and the levels at which they dropped. Re-evaluate the entire process by getting rid of unnecessary steps and re-shuffling others. Pay attention to ‘who’ you are losing. Categories in different demographics like men, women, age, etc. Seek to find why they are abandoning the process and the steps you can take to rectify the process to include everyone.
Resources for coding interviews
Choosing the best resources for your coding interview determines your interview success. As a tech recruiter, your goal is to hire the best talent as soon as possible while conducting the recruitment process at affordable costs. Software engineers are highly skilled tech savvies who will choose to accept an interview (or not) based on your recruitment process and communications. As a result, you need to have resources that make the interview process seamless for both you and the candidate.
One of the best tried and tested resources is CodinGame Assessment, a powerful software solution that helps you access and interview developers. From shortlisting to picking the final software engineer, CodinGame increases your confidence in tech recruitment.