How we hire a Rockstar developer — Part 1

Oleksandr Shchetynin
CML Team
Published in
5 min readJun 14, 2019

When we’ve started a CML Team Ltd, we didn’t have an established hiring process. We had a little experience interviewing people from the past jobs we were working at, but unfortunately this experience was quite fragmented.

In order to succeed we need to come up with a holistic approach that allows us to find the best software engineers out there who share our values.

In order to understand how to find the right people, we have to understand how those people look like, think, and what skills they should possess.

As a seasoned hackathoners we were looking for people who share this passion.

Not every developer is eager to cross the comfort zone and become a white hacker. Not every developer is open minded enough to continuously learn new technologies that sometimes do not nicely feet into their existing background. There is nothing bad with those kind of developers in particular. This is just a matter of tactical and strategic choices everyone makes. We seek people with a broader view on different technologies and ecosystems.

We appreciate much more not a specific technology knowledge and years of experience in it. We appreciate the ability to effectively use this experience and learn fast and adapt to the new dynamic realities that continuously change.

We are looking for people who are eager to change and is capable to do it fast!

This person not just should have a great math and computer science background, but this background should be in her mindset, way of thinking and DNA. Given that, the lack of some technical skill at the moment won’t be an issue, since she will be capable of mastering it in a short amount of time.

Our Rockstar developer is a white hacker willing and capable of using full stack expertise in his pocket!

Those thoughts lead us to understand that our first round of interview will consist of logical, math and simple algorithmic problems. During that round the candidate will have an opportunity to show us if she is passionate about math, computer science and solving problems.

Let me provide a few examples of tasks we were asking at that round of interview that we’ve called “initial interview”.

Brick weight = 1 kilo + half of the brick. What is the weight of a brick?

This task is quite easy to solve, in fact I believe that pupils of primary school are capable of solving those kinds of problems. Surprisingly to us on our initial interview a lot of people failed to solve this problem, even when we are giving tips and advice on how to make a simple equation. And all of those people are not random people from the street, they do have a nice CV, years of experience in well known companies and different Spring Boot, React mumbo jumbo buzzwords in it.

Can you believe that 22% of developers we interview cannot solve this task?

-1 if the candidate has led by interviewer to the equation and still can’t solve it

In fact, the percentage is even higher, and we decided to move this task from our “initial interview” to a phone screening in order to not waste neither candidate nor our time on interview process. Since after failing this task there’s not much we can discuss.

Another task we were asking and where a lot of people failed is about basic knowledge of sorting algorithms.

What sorting algorithms do you know

a) What is the complexity of Bubble Sorting?

b) What is the complexity of Quick Sort?

c) What is the worst complexity of Quick Sort and for what input it happens?

Even though most of the people were able to name some of the sorting algorithms, most of them failed on understanding of basics, like algorithmic complexity and principle. And please note we don’t even ask people to pseudo-code those algorithms, we just want to hear a basic understanding at that moment.

-1 if candidate says some obvious bs, example: log(n) > n, etc; 1 if he thinks some time, or need advice

28% of the candidates saying some absurd things on the question about bubble sort algorithmic complexity. Like that complexity is exponential function, or that it’s log(n), and on the next question what function grows faster log(n) or n, they told us without any doubts that log(n) grows faster.

This is another task we moved from “initial interview” at some point to phone screening.

Below I will mention a few more tasks we were given to the candidates.

Solve an equation: x² + x + 1 = 0

-1 if the candidate provides wrong answer without trying them out against the equation; 1 if the candidate found at least one solution; 2 found both solutions but with mistakes or advice; 3 found everything correctly

FizzBuzz problem

-1 if the candidate doesn’t understand the task or how to solve it; 2 solves with a lot of mistakes and advice; 3 solves with minor mistake or small advice; 4 solves w/o mistakes and advice

If the candidate successfully passes those “childish” tasks at the interview, we’ll give him an opportunity to try himself against the tasks like following:

Prove that n² — 1 divides by * for any prime number n > 3

a) * is 12

b) * is 24

We have a number of similar easy and complex tasks we choose from and shuffle during the “initial interview”.

Usually “initial interview” helps the candidates that are passionate about math and computer science to show this passion and stand out of the crowd. It helps us to narrow down the candidates to the ones that share our values. In fact, a small percentage pass this interview.

But those who do, not only have more chances to join our team, but they are also very excited to do so.

Most of them really enjoy the interview process. They are asked not just about “chrestomathic knowledge” of simple Java questions that any person can learn without really understanding what they’ve learnt. On the contrary they are given an opportunity to stand out from the grey developers crowd and to show what is their way of thinking and what is their passion, and they see that we appreciate this much more than mythical years of experience and standard Java “nerdy” questionnaire anyone can memorise.

In the next article I will cover how we allow successful candidates from first stage to share their passion about Java, and why do we ask for Java knowledge in full stack position.

Stay tuned …

--

--