Using the Right Coding Interview to Hire Engineers

Software engineers, data engineers, data scientists, and DevOps engineers are expensive and a pain to hire. Companies use technical challenges to assess a candidate’s coding capabilities. However, it’s tough to get it perfect since there is only so much an interview that can capture about an engineer’s technical potential. Many companies do not put structure around their hiring process and assume as long as any technical interview takes place, the candidate is qualified. Unfortunately, hiring the wrong candidate can be detrimental to both the capabilities of the team as well as the company’s progress in building new features.

During these interviews, there is a trade-off between assessing an engineer’s working style, thought patterns/problem-solving skills, coding abilities, and communication skills. There are many types of coding interviews- White Boarding, Coding Challenges, etc.. and each assess different skillsets in varying degrees. Let’s discuss the trade-off between using these different technical interview techniques, what they accomplish, and how to best deploy them.

We Will Cover

  1. Take-Home Assignment
  2. Take-Home Timed Coding Challenge
  3. In-Person Whiteboarding Interview
  4. In-Person Pair Coding

In the end, I will provide our recommendation for how to interview engineers more efficiently.

Take-Home Assignment

Photo by Ekaterina Bolovtsova from Pexels

The take-home assignment is a series of tasks provided to developers to complete at home. Coding assignments are typically used as a screener before later stages to ensure that candidates can code before spending engineering time interviewing the candidate. They are useful for evaluating more experienced developers.

There is a more substantial investment of time upfront to create the take-home assignment with a slightly lower investment to review the work. Typically it will take between 2–4 hours to write the prompt and create the test dataset/environment. Also, expect to commit a half-hour after the candidate completes the assignment to review it for correctness and quality. Often, companies will reuse an existing problem they’ve already solved with de-identified data.

A take-home assignment is an excellent tool for assessing coding skill quality. The assignments are usually in-depth, taking 4–12 hours, and thus ask of the coder to build a fully functional but minimal product. Take-home assignments allow the candidate to show more of their abilities. They can demonstrate their general coding styles/best practices, understanding of edge cases and testing capabilities, and show their ability to build working products in a reasonable timeframe.

The biggest downfall with this technique is that developers can cheat. They can have their buddy do the assignment or review their work, or they could hire a contractor on Fiverr or Upworks. One way to mitigate this risk is to ask to follow up questions during the in-person process to confirm they personally did the work.

The second biggest downfall is that you will lose candidates. People are busy and have a full schedule of work. Asking them to do assignments on their downtime, especially if they have a family or other dependents, is a lot. It’s also perceived as rude since it constitutes free work and can negatively impact your reputation with the candidate if they move forward and receive an offer.

This technique works best if your company has a compelling brand people want to work for. If the risk of losing potential candidates is low, for instance, and if there are many candidates in the pipeline, then this may also be the right technique to use. Also, this is great for specific roles where the needs for assessing the candidate’s coding style and niche technical capabilities are critical.

At Home Coding Test

Photo by Vlada Karpovich from Pexels

The at-home coding assignment is a short (1–2 hour) coding challenge that the candidate completes on their own time. It is typically used as a screening interview to weed out candidates who are not “technical” enough. It’s a great low commitment way to quickly screen candidates.

The advantage of the assessment technique is that it requires the lowest time commitment. Unless the company is manually proctoring these test, platforms such as Hacker Rank and Codility offers many pre-created coding tasks to assess candidates automatically.

These assignments assess a candidate’s core coding skills, such as understanding core data structures and algorithms. It’s essentially a more advanced Fizz-Buzz test.

These assignments typically do not assess a candidate’s overall knowledge. They also do not evaluate for more experienced coding abilities such as system architecting, making trade-offs, or building maintainable systems.

Another major challenge with this interview technique is that it’s too easy for candidates to cheat. Also, unlike a take-home assignment, it’s usually impossible to ask follow-ups since there are a large number of different problems being asked.

Companies are hiring for a more generic role and are screening a very high volume of candidates. Also, a well-established brand that has a large number of candidates in its pipeline. If you also have a problem with many candidates applying who do not have basic coding skills, this type of interview is very useful.

Photo by luis gomes from Pexels

Technical Interview- White Board

The famed whiteboard interview! In this interview, a candidate is asked to write code on a whiteboard while an interviewer prompts questions and follow-ups. The interview can either take place virtually using CoderPad/ScreenShare or In-person.

The time commitment here is an hour of an engineer’s time multiplied by the number of interviews for the candidate. Also, time taken to create the problems to be asked.

The whiteboard interview typically assesses a candidate’s core programming skills. Since the assignments are short, a core programming skillset, such as data structure and algorithms, are often evaluated. Sometimes, harder problems are given to see if an engineer is able to persevere when stuck and how they can use their problem-solving skills to map out a solution.

Alternatively, companies use this time to evaluate a candidate at a higher level. Candidates are prompted to draw an overall architecture or design. This technique can assess both candidates’ coding capabilities as well as their overall knowledge of building working systems and gaps in their understanding.

Real software development is a relatively solitary task. Unfortunately, not all candidates will perform well under an in-person timed pressure environment.

For candidates that spend time preparing mainly for technical whiteboarding sessions, there is also a risk they are unable to write functional code that is high quality. It’s important to acknowledge the fundamental difference between solving computer science problems (algorithms) and building enterprise-grade software systems. Hiring a highly intelligent yet unproductive engineer onto a development team is a costly and time-consuming mistake.

The technical whiteboarding session is a great way to understand candidates thought process. It allows the interviewer to understand how they work through problems and their overall knowledge of a topic, such as Amazon Web Services or the React/Redux framework.

Technical Interview- Pair Coding

In this type of interview, a candidate will code live on a laptop with an interviewer. The interview can be done in person or remotely. It is used as both a screening interview technique as well as for later stages. Typically the code is expected to compile and run. Otherwise, it would be the same as a whiteboarding session but on a computer.

Same as whiteboarding interviewing, typically 1–3 per candidate plus initial time to create the problem set.

This type of assessment is similar to a whiteboarding interview, as it is used to assess an engineer’s thought process and coding capabilities. However, there is an added advantage in ensuring the code runs. Also, compared to a take-home, there is a low risk the candidate is cheating.

Unlike a whiteboarding session, more time is spent on syntax and ensuring the code runs. Thus, it is not as useful in understanding the candidate’s problem-solving process compare to the whiteboarding session. Also, since the tasks typically fall within an hour, the type of problem asked only assess core programming skills (such as algorithms or SQL challenges) and not their overall software knowledge.

This technique is excellent for understanding how an engineer works together on a team. Also, it ensures that the engineer can write working code. Many times, the candidate can even use the internet to look up syntax. Thus this is the closest simulation to live workplace coding.

This interview is best for ensuring the candidate can write functional code. It is also great for understanding team fit, communication skills, and working style.

Comparison Matrix

My Recommendation-

Ultimately the goal for most companies interviewing an engineer is to filter out only the best candidate, so engineering time isn’t wasted on interviewing an unqualified candidate. However, interviewing is a two-way street, and ensuring that qualified candidates take the offer is equally important.

The ideal candidate for any company is one who can write functional code, deliver the code in a proper time frame, can work in a team without conflict, and have a high-level understanding of their domain and the software development lifecycle. Thus, it is essential to design an interview that assesses each of these concepts individually.

Assignments are a great way to get an understanding of an engineer’s overall skillset. However, keep the assignment/prompt shorter to ensure engineers can complete the task at home while being considerate of their time.

Make sure to also ask high-level architecture/system understanding questions during a whiteboarding session. These sessions are great for getting an overall sense of the engineer’s technical knowledge!

In my opinion, code pairing is an excellent technique for assessing both working style and coding abilities. It demonstrates how an engineer works together in a team, their ability to take feedback, and their ability to communicate their ideas clearly.

Training your interviewers to interview candidates properly is a significant differentiator between hiring successful and unsuccessful candidates in the longterm. Also, it ensures that qualified candidates are more likely to take the job, thus the interview time is not wasted. Interviewers need to have a clear game plan of what they are asking, why there are aksing those questions, and what they are trying to gauge. Preparation for interviewers is worth the dividend in hiring the right candidate. Make sure to select the right interviewers, specifically people who are personable and can leave a good impression. The candidate wants to walk away feeling like your company is the kind of company they would love to work for!

Big Data focused architect & strategist, Life Sciences, and Genomics nerd. linkedin.com/in/garych

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store