How we interview software developers

This article provides a view of our approach to interviewing software developers. We've designed our process around the idea that developer interviews shouldn't be a mere technical evaluation but should allow us to grasp the candidates' problem-solving and collaboration capabilities, adaptability, and creativity.

Along with that, we consider these interactions as a way for the candidates to learn about us too. We've designed the process in a way that reveals as much as possible so that candidates can later make an educated choice on joining our team.

Our process consists of two steps:

1. Intro meeting

We invite the shortlisted candidates to a 30-45 minute introductory meeting. This meeting can happen in our office or virtually as our team is spread across different cities and we favor remote. We use the intro meeting as a way to get a feel of the candidate, about how they communicate, and we would address any immediate questions we or they might have.

2. A day-in-the-life session

Following the intro meeting, we invite the relevant candidates to a day-in-the-life pair programming session. The pair session is essentially one work day at our company. The goal of the session is for both us and the candidate to get a real feel of what working together would be like. In contrast to doing technical challenges, we believe the pairing session provides a far deeper understanding of compatibility.

The session consists of the candidate working with an experienced member of our engineering team. The candidate and our team members would collaborate together on a shared monitor OR virtually on a single screen for the duration of the session. They would pick an existing 100% real task from our backlogs to tackle.

We believe the transparency of working on real tasks with the candidates has a massive benefit for both sides. The candidates get to know our process and programming culture as the pair member will walk them through all operational steps for tackling a task, while we get to see their approach and ability to quickly jump into a project.

The pair works on the task from start to finish and goes through all steps of the lifecycle - from documenting an implementation plan, through writing code and tests, to finalizing a PR. Our team member would always be the driver of the interaction and yet allow the candidate to express their views, make decisions, and own the solution.

Doing pair sessions like this we notice over and over again that something magical happens - no matter how stressed a candidate can be, once they dive and focus on the task, their anxiety vanishes completely and they can reveal their true self. We also consider a massive benefit that candidates get to spend time with the existing team and they get to know the type of people they'd be working it.

In contrast to what a lot of tech teams do, create a flashy illusion of what working at their company would be in order to attract more talent, we believe our transparent process works better as it gives both sides a very clear picture of what working together would be like.

Struggle with Elixir?

Get help from our Elixir engineering team