Despite several standard techniques dominating the IT recruitment industry, Reef Technologies went against the grain and developed their own unique approach. I asked the CEO, Paweł Polewicz, to explain why he felt the need to innovate, describe the recruitment process that he adopted, and tell me about its positive impact on the company.
Agnieszka: There are quite a few common recruitment methods to choose from, and most software houses simply follow one of them when looking for new developers. What makes Reef Technologies different?
Paweł: In the past, we tried using some standard techniques, but the results were not satisfactory – mainly because our offering is highly specific. We have a narrow, exclusive focus on backend solutions written in Python, usually web apps. A cookie-cutter approach wouldn’t work here – before we hire a developer, we need to make sure that they’re not just great at programming. They need to be great at the exact type of programming that we do here.
A: Before we start listing the interview stages, I would like to ask one question: why? Why does Reef Technologies have such a strong focus on the quality of the recruitment process?
P: Our Senior Python Developer position is rather attractive – it comes with a high hourly rate, a set of benefits, and the opportunity to participate in genuinely interesting projects. On top of that, we also work 100% remotely. As you can imagine, numerous programmers find that interesting and decide to apply.
Online testing is the best method we have found that allows us to handle large groups of candidates and select the very best while also making sure that our developers don’t have to spend excessive time supporting the recruitment process.
A: Wait, let me get this straight – so when it comes to filtering candidates, face-to-face conversations, and reading through CVs are not the best practice?
P: Not at all. Those methods favor the people who perform well in stressful face-to-face conversations or the people who know a good CV designer.
A: So… does that mean that after a candidate is accepted and becomes a staff member, they won’t need to spend their time reviewing CVs?
P: The last time an engineer at Reef Technologies saw a candidate’s CV was thousands of applicants ago.
A: How about other types of involvement in the recruitment process? Do your developers have to spend a significant amount of time verifying test solutions?
P: We wouldn’t want that, which is precisely why we have automated the process so heavily. These days, bots do most of the heavy lifting. We only have to engage with a tiny fraction of the candidates at the final stage of the process. Our approach doesn’t discriminate. It just tests what truly matters: the candidate’s skills.
A: Please give us a quick overview of how the interview process for the Senior Python Developer position works right now at Reef Technologies. What are the stages, and how much time can a candidate expect to spend in the process?
P: There are three stages: (1) A basic coding test that takes between 10 and 40 minutes. (2) A difficult debugging task, I’d say it takes around 2 hours to complete, but it varies significantly between candidates. And (3) a mini-project where the variance is even larger, as there are almost no limits to how little or how much time it can take. Good candidates are generally pretty fast, though.
Unfortunately, I cannot be very specific because it would skew the results of the test. What I can say is that a senior engineer takes 40 minutes on average to verify a single solution to the final, third stage of the process. If too many candidates were to reach it, the reviewing would drag us away from our projects far too often.
A: Say a developer does well enough according to your metrics. What’s next?
P: If an engineer delivers adequate solutions at all three stages, we invite them to work with us on a fully paid trial period to see if we are a good match. Depending on the candidate, it may take between three days and three months before we decide to work together in the long term. If both parties are satisfied, we simply stop calling the relationship a trial period.
A: What made you choose those particular testing methods?
P: We continuously optimize the recruitment process for two main reasons. We want to optimize the candidate experience, but we’re also making an effort to automate it more and more so that we can focus on engineering tasks.
A: What improvements have you made to the recruitment process over the years? What made you realize that the process needed to be improved?
P: So far, we’ve had seven real iterations and five or so “virtual” iterations, where we analyzed the data and disproved a hypothesis without actually putting a hundred or so candidates through it. I’ve delivered a conference talk about this.
A: Please share some interesting data about the candidates. What were you surprised to find out about the average candidate for a senior-level Python job?
P: A significant portion of the candidates that we reject early do not have enough skill, to say, revert a string. 39% of our candidates fail that kind of task.
A: Reef Technologies provides very specific services. It means that once in a while, you may encounter a top-level programmer whose skill set is not compatible with the company. How do you handle such situations?
P: It happens all the time, every day – after all, we are looking for a needle in a haystack. Sometimes we find a golden ring, but that is not what we are looking for. For our projects, we only need the needles.
A: What advice would you give to a rejected candidate who wants to reach a skill level that would allow him to join Reef Technologies in a year?
P: Our training materials are publicly available in our “Handbook” repository on Github, where you can find very impactful articles and videos, both technical and organizational. Start with that, but then consider working with someone smarter than you. For instance, you might join a Python backend open-source project that welcomes contributions.