The technical interview: more than just assessing a candidate

Omer Baki
Melio’s R&D blog
Published in
5 min readMay 29, 2021

Written by Omer Baki

Before joining Melio as Payment-Platform Group Lead, I worked as director of engineering for a device protection software company. As part of my job, I interviewed hundreds of candidates over a time span of 10 years. I found a direct correlation between the quality of the interview process on my end, and our ability to find and hire the best talent. And so, I set a goal to constantly improve the interview process.

When I set out to find my next challenge, and started interviewing with various companies, I had the opportunity to be reminded how it feels like to be on the other end of the interviewing table. I found it quite interesting to see the different interviewing processes: what kind of questions I was asked, the number of stages in the process, how the interviewers pitched the product and the company, and more..

I felt some were really missing the point of this process.

The interview is the candidate’s first encounter with the company’s culture, technology and product — it’s the most important opportunity to showcase your company, not only through the pitch itself, but through the technical questions you ask the candidates.

When I finally decided to join Melio as their Payment-Platform Group Lead, I took part in shaping the recruiting process for backend engineers.

This article is intended mainly for interviewers hiring mid-level or senior developers, for backend or fullstack positions, to help them re-evaluate their current process by sharing how we do it in Melio. But I hope it will also provide food for thought for candidates.

Let your technical question do the work

Developers who conduct interviews, often don’t stop to ask themselves: what is the purpose of the interview? They jump right in with a general technical question, like string manipulation or “cracking the coding interview,” one that has been asked so many times before. It’s as though they think they need to outsmart the candidate.

But If you’re looking for strong candidates, your state of mind should be that you’re being interviewed as well.

What does it say about your company when you ask a general technical question?

Engineers are so creative when it comes to designing solutions, they can think of an original question that can showcase interesting parts of the system they work on and see if they get the candidate excited about it as well.

You have a golden opportunity here to let the candidate enter the realm of your product and catch a glimpse of how it feels to work in your team. You can show the challenges and their complexity and see how the candidate approaches them.

You can get an answer to the 2 most important questions:

  • Does this candidate have the qualifications to solve real problems that they’ll encounter if they join the team?
  • Are they excited about working on these types of challenges?

That is why you should start by presenting them with a specific challenge, rather than waste their time and patience on a general question.

How to ask the perfect technical question

In order to understand if the candidate has the right qualifications, I found that we need to test the 2 elements that form our working methodology.

  • Coding and code review
  • Tech Design and design review

Coding Question

The purpose of this question is to assess the candidate’s coding capabilities, and to see how they communicate their solution during the code review.

We find an interesting section of our system that can inspire a great technical interview question, and keep it simple enough so a candidate can complete the task in about 1–1.5 hours.

Melio is a B2B payments platform, and we process and deliver payments using varying methods, integrated with different banks. The assignment we constructed requires the candidate to create a simple payment process ETL that considers different requirements: filtering, validations, bank file formats, etc.

When assessing the candidate’s solution, it’s important to take into account their focus on:

  • Separation — have a clear separation between layers, data and logic.
  • Extensibility — the coding exercise is limited to an MVP. The solution should support the extensibility of future capabilities.
  • Product Language — It’s important to use explicit, meaningful names for the different classes/modules.

The assignment implies the need for a design pattern, in order to reach an elegant solution. Usually it will be basic patterns like factory pattern, command pattern, etc.

Design Question

The idea behind the design question is to simulate a feature development process. The candidate will read a short feature spec, that we actually implemented, and start with a naive solution.

Like with the previous assignment, think of an interesting section in your system that can inspire a design interview question. This can be a more high level feature and preferably should involve a few services/components.

Then the interviewer should raise real issues encountered while developing the feature:

  • Performance issues
  • 3rd party API requirements and limitations
  • Business logic loopholes
  • Security vulnerabilities

Like in real life, there is more than one solution and each decision has its advantages and disadvantages. The candidate’s thought process is equally, if not more important, than the solution itself.

This simulation provides you with an opportunity to get a sense of the candidate’s intuition. It’s a great tool to measure the professional maturity of the candidate, as experienced developers should have encountered similar issues in features they developed. They should also be able to anticipate some of the future requirements in advance.

It’s also important to note the flow of the dialog between you and the interviewee, as to how constructive and collaborative it is.

How do we know if the candidate is right for us?

It’s an easy task to pass an awesome candidate who easily completed the assignments and seems like a great fit. It’s also easy to reject someone who did poorly.

The hard part is with those who are “almost there”.

So, when my team deliberates whether the candidate should pass, I usually offer to follow one simple question: are you excited about the possibility that tomorrow this person is going to take the next task on our board, and do you trust them to do a great job?

If the answer is not a definite yes, then they shouldn’t pass.

Final Note

Interview questions should be updated over time, as they may become obsolete, just like parts of the system we develop.

Updating the questions can also be a team effort, which will help keep the entire team engaged and actively participate in the interviewing process.

You should also test the viability of the question: try to solve it yourself and see how long it takes you, and solve it in more than one programming language.

I hope that sharing my own experience will help you improve the interview process and find great new members for your team.

Thanks for reading!

--

--