As engineering hiring managers, you know the importance of finding the right candidate. You're probably familiar with the "LeetCode" style of interviewing, a popular method adopted by tech companies like Google and Amazon. The appeal of this approach lies in its simplicity and scalability. It's straightforward to design LeetCode style questions, evaluate responses, and train interviewers to use this method.
Although it's the most widespread way of conducting technical interviews for software engineers, it is worth considering its effectiveness. In this article, we will present the best LeetCode alternatives and also discuss how you can implement those assessments at your company.
What is a “LeetCode interview”?
LeetCode is a website that provides a collection of coding challenges to help individuals prepare for technical interviews. There are many other comparable sites with similar coding challenges such as Codewars, Exercism, Project Euler, and GeeksforGeeks. However, the term "LeetCode" has almost become synonymous with these types of challenges, due to LeetCode's popularity.
In a LeetCode interview, applicants are given 30 to 90 minutes to solve one of these question types. The interview can be done asynchronously (via an online tool such as HackerRank, CodeSignal, CoderByte, CodinGame, or others) or on a live call with an engineer.
Below are a few common elements to these types of questions.
Data Structure & Algorithms
To solve a LeetCode question, you often need to use a data structure or algorithm to solve the problem. The subject matter is usually very theoretical - you'd learn these methods in school, but rarely use them on the job. Many engineers actually believe that junior engineers are better at answering these questions than senior ones. This is because senior engineers might have forgotten many of the methods and data structures often used in interviews.
These questions usually have a time limit, and how quickly you answer them matters. Usually, there's more than one question in the interview. The more questions you answer, the better you're doing in the interview.
Problem Solving and Communication
These questions are a way to test how good you are at solving problems. Interviewers pay attention to how you talk about the problem, how you think, and how many clues you need to find the answer.
What is the problem with LeetCode interviews?
The Impractical nature of LeetCode interviews
These interviews mainly focus on technical ideas that you often don't use at work. This leads to some problems:
- As mentioned earlier, junior engineers are more comfortable with LeetCode questions than senior engineers.
- Candidates don't like these interviews because they have to spend a lot of time getting ready for them. This isn't fair to people who can't spend a lot of time practicing because these methods aren't often used at work.
Overlooking other important skills
LeetCode questions often fail to consider other important abilities in software engineering. Here are some skills that LeetCode overlooks:
- Solving real-world problems: Engineers usually aren't just coding in a vacuum like with a LeetCode question. They often need to research, use different tools and products together, choose between various solutions, and explain their choices. This skillset is very different from just solving a LeetCode problem, even if LeetCode helps with problem-solving.
- Working on existing code: Many times, engineers aren't coding alone. They're working on code that's already there, which can be challenging. They need to figure out how to fix problems in a bigger system, understand and give feedback on the code, and write code that fits into a bigger system.
- Code quality and code organization: as a side effect of LeetCode questions being so focused on speed, there is less focus on writing good quality code. Arguable, given the direction software is going, writing good quality code that other developers can understand is more important than solving a technical problem and writing efficient code in a short amount of time.
Unnecessarily stressful interview environment
Finally, LeetCode questions put a lot of emphasis on solving impractical problems quickly, which can make tech interviews very stressful. This stress can lead to nervousness and can make the person being interviewed not do as well. As Sockpuppet puts it, “Engineering teams are not infantry squads. They aren’t selected for their ability to perform under unnatural stress. But that’s what most interview processes demand.”
Alternatives to LeetCode Interviews
Fortunately, there are alternatives to LeetCode Interviews that provide a more comprehensive assessment of a developer's skillset and potential. Below are some of the best alternatives to a LeetCode Interview.
Take-home Practical Assessments
Take-home assessments allow developers to demonstrate their skills in a more realistic and low-stress environment. Unlike in a LeetCode interview, a software engineer at work usually doesn't have to rush or code while being watched. Take-home tasks can also test a wider range of skills. By giving a task, you can see how well the applicant can solve problems and code. You can check their skills with the technology, how they design code, and how they organize it. The tasks can be more like the ones they'd get at work, and you can even give them existing code to work on. To find a suitable task, think about what your team has done recently. Then, turn that into a smaller task that takes about 1-2 hours, and send it to the applicant to do when they can.
As compared with LeetCode questions, scaling a take-home assessment can be challenging for a few reasons. Here are a few ways to address those challenges:
- Creating an assessment that all engineering levels want to do can be challenging. However, there are best practices that can be used to create a process that works for many engineering levels and some take-home assessment designs that work well for even the most senior engineers. A few tips involve: keeping the assessment short, following up with a live discussion and allowing candidates to communicate with you as they are working on the project.
- Marking a take-home assessment can be challenging and more time-consuming than a LeetCode problem as you want to look at more diverse skills like code quality and code organization. However, there are tools that can help you (like Hatchways) in both creating take-home interview questions as well as scaling the marking of these assessments.
Discuss a past project
Discussing a past project is another excellent way to gauge a developer's abilities. In this type of interview, you can learn more about the developer's past experiences and skills. You'll also understand how they solve problems, structure code, and use specific technologies.
This process can be slightly challenging to scale as not all candidates have existing projects that they can demo. As such, we often see companies give candidates options in the interview process (i.e. complete this take-home or we can do a code review on an existing relevant project to the take-home that you have done in the past). Overall, giving candidates options has been a great way to create a good candidate experience and also a good way to scale.
Pair Programming Interviews
Pair programming live interviews are a great way to check a developer's technical skills and ability to work in a team. In these interviews, two developers work together on a project. This lets you see the developer's coding style, how well they communicate, and their ability to work with others.
If done right, this interview can give you lots of useful information and be enjoyable for the candidate. But it does take a lot of time to administer, usually more than 90 minutes. So, it's often done near the end of the interview process and is usually combined with other steps, like a take-home task or discussing a project (for example, ask candidates to complete a take-home task and then add more features to it in a live pair programming interview as the next step).
Overall, LeetCode-style interviews are not the only way to assess a developer’s skillset. In fact, Webflow's technical recruiter mentions how LeetCode-style interviews are terrible if your focus is on diversity and inclusion. Take-home practical assessments, pair programming live interviews, and talking through an existing project are all great alternatives that allow you to get a better understanding of a developer’s abilities and potential. Adding one of these interviews to your hiring process will help you create a more comprehensive evaluation system, giving you an insightful, more holistic view of a developer's capabilities.