In the Spring of 2022, an anonymous Google employee published a blind article attacking some of Google’s technical interview processes.
More specifically, it attacks the ‘know it all’ attitude of interviewers, who often lack practical experience, and the complexity of questions that can sometimes take Google’s own employees weeks to solve.
The post started a lively discussion among developers, who started sharing their bad interview experiences.
While Google’s hiring process has attracted much attention over the years, this problem affects many companies that struggle to provide an interview process that is both effective and straightforward.
This article will detail some of the best practices in the tech industry to help you improve your hiring process.
The interview process starts long before the first CV lands in your inbox, and it includes an essential part of the process — defining the role and its requirements.
A well-defined role with relevant requirements will encourage suitable candidates to apply while dissuading candidates without the necessary experience from sending their CVs.
Sebastian Ramirez is the creator of FastSPI – a modern, fast (high-performance) web framework for building APIs with Python.
A few years ago, he shared the following tweet:
Ramirez’s tweet points to two common problems with technical job requirements:
- Companies tend to mix between essential and nonessential requirements for the role.
- Some common qualifications are poor indicators of the candidate’s success in his role.
The role should distinguish between essential and nonessential requirements.
To determine which requirements are essential, ask yourself two questions:
- Can a candidate pass the interview without possessing the required qualification? i.e., if the technical test is written in Python, candidates must have prior Python experience to pass.
- Would you accept a candidate that passed the interview process but does not have that qualification?
If the answer to both of these questions is yes, this is a nonessential requirement.
Prior education, years of experience in a given programming language, and even GPA scores are easily accessible and are often used to screen candidates.
Yet, many large tech companies and government organizations such as NASA are moving away from degree-based hiring and toward competency-based talent assessments.
This trend follows research by Google, which found that GPA scores are generally poor indicators for candidate performance.
An online application form that includes some basic technical questions can help assess the competency level of candidates much more accurately, with little to no overhead.
3. A structured technical interview
To ensure that each candidate receives an equal opportunity during the interview process, and to eliminate hidden or implicit biases, we must standardize as much of the process as possible.
A structured interview process generally consists of 3 parts:
- All interviews include the same set of questions.
- The questions are asked in the same order.
- The interviewers agree on the range of acceptable answers beforehand.
This method enables companies to run multiple interviews concurrently, using multiple interviewers, that deliver comparable results that can be measured.
It also ensures that candidates undergo a similar interview process regardless of the interviewer.
It’s important to note that agreeing on which answers are correct/incorrect does not suggest that candidates who fail to provide a correct answer fail the interview – it simply ensures that there’s a common understanding of the level of answer they provided.
Starting to follow a structured interview process can be a jarring experience that requires significant upfront investment and may encounter some resistance from interviewers who enjoyed relative freedom in their interview process.
Implicit biases are broad sets of assumptions we make about individuals or groups, which are hard to eliminate.
They are especially harmful during job interviews, where an interviewer can unintentionally give unfair advantages or disadvantages to candidates.
Two practical ways to reduce their effect on the interview process are:
- Interviewing in pairs is a great way to improve the interview process, as it enables the interviewers to help, provide feedback, and reduce the chance that an implicit bias on the part of one of the interviews affects the outcome of the process.
- Ensure that the interview process involves at least two separate teams and hold the feedback until the end. This way, we avoid contaminating the second interview and enable a productive discussion between both teams.
These suggestions are part of Microsoft’s Alternative interview framework that has shown great results.
You can find additional material on implicit biases at the National Institute of Health.
4. Technical questions
Solving algorithm puzzles on a whiteboard or through Leetcode and similar sites provides little insight into candidates’ ability to perform their roles.
In 2015, Max Howell, the developer of Homebrew, popular package manager for macOS, failed a job interview at Google.
After which, he published the following tweet:
It’s unlikely that Howell’s ability to invert a binary tree reflects on how well he can architect a package management tool, especially with his track record.
Instead, we can devise a technical test focusing on specific skills within the roles domain that allow the candidate to demonstrate how well they can perform in relevant tasks.
Two examples I’ve encountered in the past that provided consistently good results are:
- Extract a small part of your code base (a small microservice or a set of U.I. components). Ensure that it has good unit test coverage before removing some functionality and breaking the tests. The candidate is asked to fix the code so that it passes all the unit tests successfully. Once the candidate finishes the task, go over their solution with them and discuss how they chose to tackle the problem, which areas were harder for them, and how they would have improved the code base if they had had more time.
- Alternatively, you can provide the candidate with a home assignment with a reasonable time-boxed problem that enables the candidate to avoid much of the stress involved in live coding. Once the task is complete, invite the candidate to an interview where you go over the solution with them. Try to focus more on the hows and whys than on which parts they finished correctly. The goal is to understand the candidate’s thinking process and how they approach relevant problems.
While there’s no magic formula for the ‘perfect interview,’ having a clear role definition, focusing on the correct qualifications, following a structured interview process, and matching your technical questions to the role will provide the optimal setting for success.
Did the advice in the post help with your interview process? Do you have other suggestions to share with our readers? Let us know, and we will incorporate the best ones in future follow-ups to this article.