Making interviews great again
Published: 2023-03-24 09:47:04

{% embed https://twitter.com/bobvulfov/status/590900403157479425 %}

So, you need to hire some more developers? Moreover, you want to make it quick, productive and fun? Don’t worry, it’s easy, and I’ll show you the right way.

During my professional career, I attended more than 100 interviews, interviewed hundreds of iOS & Android developers and hired about 50 of them. In this article, I’ll tell you how we changed our hiring process to make it comfortable and productive for both sides. I’m going to describe how I interviewed mobile developers but the same ideas could and should be applied to different roles.

## CV screening

Screening is the very first step in the hiring process usually done by HR or recruitment specialist. The main tricky thing for HR is to find the right skills and measure the candidate’s level based on CV. So, we [the developers] made a small checklist of what we’re looking for:

- Years of work experience
- Number of apps released
- Technology Stack

As we’re not hiring junior developers, we expect the candidate to have at least 1–2 years of experience in mobile development. The only exception of this rule would be a guy switching from other technologies, in this case, we would expect at least 1 year of experience. For the number of apps, it could be either working on one big popular app or a few smaller apps. We also supplied our HRs with our technology stack, for example, we’re looking Android developers with Java or Kotlin knowledge, not Xamarin or ReactNative. Being familiar with RxJava or tests would add you some points. The idea of this activity is to help our HRs to filter hundreds of CVs they’re reading.

If HR finds CV to be fitting our position, he/she sends it to appropriate Telegram channel waiting for our developers to approve the CV. We don’t do polls or votes. Somebody sends “+” to the chat, and that’s enough. Trust me, sometimes we’re having hot discussions. Timing is the most important thing here. We’re trying to make a decision as fast as possible and either schedule a technical interview or say no.

## Phone interview
We actually do not make any kind of interview over the phone. The main goal of the call is to make the candidate interested in attending the real interview and, of course, arrange a meeting. We’re working very closely with our HRs providing them with a lot of information about our technology stack and current projects. It happened to me many times over the first contact with a new company when I asked HR about team size, future plans, upcoming projects or the number of opened developers’ positions and they were unable to answer me sending me to interview with their colleagues. That’s not what I expect as a candidate. Let me know your company better, help me with initial research. I had an amazing experience talking to London-based recruiter earlier this month: he had so deep understanding of company’s current situation, products, issues and roadmap. And he was not even in-house recruiter, he’d worked for outsource agency. He also provided me with a lot of useful information about the areas I should focus on the interview. And that was really helpful. We want our HRs to do so, that’s why they:

- aware of our technology stack and have some high-level insights from the technical roadmap, for example, Java to Kotlin transition
- briefly describe future plans for our project to the candidate
- kindly ask the candidate to attend a technical interview
- describe our interview process to candidate

The last thing is crucial because we want the candidate to feel comfortable during the interview, so, he or she should have some expectations before the meeting.

## Technical interview
The primary purpose of this stage is to measure the candidate’s level. There are so many different ways to do so: some companies send homework to check the code, some ask you about almost every algorithm from university class during 5 hours long session, some attack you with hundreds of low-level technical questions, while others try to set up a series of endless meetings with different developers they have. In my opinion, this is an unnecessary waste of time. You can’t be sure that candidate is making homework him- or herself without any help from the side. Usually, developers don’t use all these sorting algorithms in real life. Nobody can keep in their head all the functions from iOS SDK. What is truly important for me is that candidate is smart and gets things done. I found this great idea in [Joel Spolsky’s book](https://www.amazon.com/Smart-Gets-Things-Done-Technical/dp/1590598385). How to find out that candidate is smart and would help you bringing your project to launch? First is education, of course. It just has to be. More important is to discuss a candidate’s career and achievements. What he or she did, maybe he/she found an easy way to solve a complex issue in a short amount of time or proposed an entirely new approach to improve product quality. That’s how we’re finding out that candidate is more focused on getting results instead of just writing great code.

It’s great when the candidate drives the interview, when he/she has a prepared route through his/her career pointing most exciting moments. Sure, sometimes interviewers need to turn the discussion a little bit into a right direction by asking suggestive questions. That’s why we usually send one experienced guy with strong soft-skills and one junior or middle guy who’s still learning that.

We usually start the interview with a friendly conversation about the candidate’s previous experience. Sometimes it may take up to an hour. Instead of asking prepared questions we discuss large topics like technology stack, why do they choose the specific library, what architecture they used and why, what are the pros and cons of some framework. Finding out how the candidate is thinking is another primary goal of this meeting. Usually, we’re fortunate enough to turn our conversation into talking about data structures, maybe some performance optimizations made in candidate’s past projects. In this topic, we usually ask about array/hashmap insertion/searching complexity, hash functions and collisions in hashmaps. Very few guys were familiar with cycle buffer, the way to maintain constant insertion time into the first or last indexes of the array.

From such talks, we not only understand the candidate’s level but also his/her ability making the right decisions which is much more important than specific SDK knowledge. You could quickly learn how to use new technology but learning to learn or to make technical decisions definitely would take much time. Giving a chance to a smart guy with a proven track record but the slightly different technical stack would benefit your product much more in long-term than hiring the senior developer who is just writing good code. Leaving candidate’s CV behind the meeting is essential for a great conversation: we’re reading it before and not during the interview. You have a live person in front of you able to tell much more than some papers.

During the interview, we also discuss the technologies we use, the solutions we made, our development process. All that very important to let candidate feel the spirit of our team. Eventually, our goal is not only to measure candidate’s level but also “sell” him/her our company. So, we’re doing our best to create a comfortable feeling. You know, competition is extremely hard for good guys. We usually send 2 our developers to technical interview session to reduce subjective judgments. At the end of the meeting, they should fill the “knowledge map”. That’s our another invention. There are 2 parts in this table: technical and soft (or personal) skills. I’ll give you a sneak peek for that table for Android interview. Also, we have almost the same one for iOS just with different tech skills.

**Technical skills**

- Java
- Kotlin
- Android SDK, popular frameworks
- Architecture, patterns
- CI/CD, tests
- Task or algorithms

**Soft skills**

- Communication
- Leadership
- Problem-solving
- Learning
- Fitting our team

Of course, we have a grading scale for these skills:

**Technical skills**
0 - doesn't have experience
1 - fragmented
2 - strong base, enough to work on our project
3 - above average
4 - senior
5 - above interviewer

**Soft skills**
1 - weak
2 - medium
3 - strong

At the end of the meeting, interviewers are filling up this table independently and getting average for each skill. While they’re doing this, we have our HR ready to take the candidate to small office tour and give him/her a souvenir with company’s brand. Even if we wouldn’t hire this guy right now, we want to leave a positive image of our company. However, if he/she is meeting out requirements, after the tour I’m coming for the final part. We’re doing this to reduce the number of meetings and cut waiting time. Making decision faster really helps us to compete with other companies.

## Personal interview
The primary goal of this part is to get to know each other better, find out what kind of person the candidate is and understand what his/her motivation is. Last is extremely important for us. I’m looking for guys who would like to build a great product improving people’s lives, who enjoys experimenting with new technologies and who has a passion for problem-solving. Will this person be a great addition to our team, our culture or this is another toxic guy interested only in salary increase trying to sneak into our company. I usually start introducing my self, briefly describing my achievements and then expect the candidate to do the same. I don’t need to ask any deep technical questions. My colleagues already did that. So, we’re having a nice friendly conversation about our lives. There are many areas to discuss, but I usually have a few general topics:

- How will you choose your next place to work? What is important for you?
- How will you spend your typical day?
- What are you going to do this evening/weekend?
- What are your favorite hobbies?
- Do you have any vacation plans?
- [And sometimes even] what’s your favorite drink?

From all these answers I’m able to compose an image of this guy. I’m not looking for specific answers. Here diversity is the key to success. Everyone in my team has different experience, character, and hobby but together we’re making a solid high-performance team capable of solving any task or issue. So, I’m mostly looking for a great addition to our team than a specific combination of different qualities.

Another useful thing is how we’re telling our decision. In other companies, candidate leaves office, interviewers are taking a break for a few days to make their decision and after a week or so would send an email with either job offer or standard polite NO. However, we thought, is it so necessary to take a break? We can and, for sure, would lose a great guy due to high competition with other employers. That’s why I always have pre-printed job offer ready for the final stage. And if things are going the right way, I only need to fill in an appropriate salary and sign it. I already know the candidate’s level, I just had a nice talk to this guy, why should I wait? That’s what bribes the candidate. Being honest and transparent, like they expect you to do in the everyday working process.

## Saying NO the right way
If the things aren’t going the right direction, either candidate is too junior or his/her soft skills is not enough to join our team, providing feedback is very important. This guy could not be a good fit for this position now, but later he/she would improve the level, would learn to use new technologies and may just become a better person. That’s why we’re trying to be honest and transparent maintaining positive employer image. If I know the exact reasons why we can’t hire right now, I’ll highlight them right after the interview, I’ll try to give useful recommendations on how to improve some things, to show areas of possible improvement and good candidate would come back later and tell his/her friends a lot of good things about our company. The market is too small these days. Sometimes I can’t say anything and need to discuss this case with my colleagues. In this situation, it’s important to mark the date when you’re going to provide feedback in written form. Again, we’re not using standard replies. We’re providing the exact reasons with recommendations on how to improve it and even some useful links to books or articles.

## Why doing all this?
We’d made a dramatic improvement to our interview process, and we’d got great results. We were able to hire the best guys from the open market and even some guys on recommendations. Maintaining a positive employer image would increase incoming candidates flow a lot. People would know that you have a friendly and helpful culture in your company. Moreover, they would value it, for sure.