Content:

Learn: Developer Profession
Learn More
Lead Mobile Developer at Usetech with over eight years of experience in mobile development. Specializes in creating native applications for iOS using Swift and Objective-C, as well as for Android in Kotlin and Java. Also has cross-platform development skills using Xamarin, Xamarin.Forms and Kotlin Multiplatform. As a team lead and mentor, he actively shares his knowledge and experience with colleagues. He is a Google Developer Expert for Kotlin and teaches iOS Basic and Pro courses on the Otus educational platform.
He is a contributor to Habr and Medium, specializing in SwiftUI, Kotlin Multiplatform, and iOS. He publishes articles and shares his expertise at conferences and meetups such as Mobius, Ontico, MobiFest, Android Worldwide, Swift Heroes, and Podlodka Android and iOS. He is a member of the program committees of Mobius, CodeFest, and Podlodka Android. As an ambassador for Woman Techmakers and Usetech, he actively promotes technology and diversity in IT. In his spare time, he studies foreign languages, including Chinese and German, and enjoys painting and participating in art exhibitions.
I have experience as both a candidate and an interviewer in interviews. The longest period of interviews I had was not when I was looking for my first permanent job, but several years ago, when I was changing jobs. I've been working at Usetech for three years now, although my collaboration with the team began long before that. As part of my work, I periodically conduct interviews for developers and would like to share my approach to this process.
I don't require precise wording
I oppose stress interviews and negative attitudes towards candidates. My position is simple: treat others the way you would like to be treated. An interview should not be a platform for demonstrating your knowledge or pointing out the candidate's shortcomings. The main goal of an interview is to find the right specialist for your team.
Our hiring process is structured so that HR specialists explain the project and working conditions in detail. I focus on the technical assessment of candidates and analyzing their hard skills. First, I review their resumes and formulate questions based on the qualifications listed. It's important that the questions are challenging enough to test knowledge, but not too easy. If a candidate claims to have mastered a certain technology, they should be able to explain how to apply it to solve specific problems. This allows me to assess their level of competence and their compliance with project requirements.
I don't insist on strict wording, like in textbooks. On the contrary, I often ask students to express their thoughts in their own words. Perhaps this stems from my teaching experience—I take a flexible approach to assessing students' knowledge. The same goes for interviews: to a certain extent, I view them as exams, where it's not just knowledge of the material that matters, but also the ability to convey it.
If someone claims to have done something but can't explain it even to the level of, "I found a ready-made solution online and copied it," it's perplexing. From personal experience, I can say that most developers actively use resources like Stack Overflow to find solutions. This is a normal programming practice that saves time and effort.
Even experienced seniors and leads sometimes encounter new problems, and this is natural. In such situations, we look for effective solutions and rely on examples. However, when copying and pasting, it's important to understand how the chosen solution works, what exactly we're transferring, and under what conditions it's appropriate. The candidate must be able to explain these details.
I don't conduct livecoding sessions
I'm not a fan of livecoding, as this format can create significant stress for candidates. Often, applicants simply don't have enough time to complete the assigned task during the interview. Furthermore, I can't afford to spend 3-4 hours waiting for a candidate to solve even the simplest task. If a task takes that long for an experienced specialist, then smaller tasks will be pointless.
During one of my interviews at Yandex, during a livecoding session, I encountered a situation where I forgot how to work with matrices. I was stunned and didn't know what to do, even though I regularly solved similar problems at work. Similar situations continue to arise in my practice: I remember how to complete the tasks, but due to the stress of the interview, I can't concentrate and successfully complete the task. Cases like these highlight the importance of managing stress and staying calm in challenging situations, especially when solving problems involving algorithms and data structures.
Clearly, at that moment, I realized I couldn't continue with this interview format. If I failed the first stage, there was no point in discussing further steps. I couldn't even demonstrate basic skills, which significantly reduced my chances of success.
Stress in interviews is a key element that can negatively impact results. I try to avoid it during interviews, as it can lead to valuable candidates with deep knowledge and experience in their field failing to demonstrate their true abilities. Many of them face difficulties due to psychological pressure, which does not reflect their true potential as technology experts. It is important to create a comfortable atmosphere so that candidates can demonstrate their skills and knowledge without unnecessary stress.
I review the candidate's GitHub profile and assign a test task
Before assigning a test task, I review the candidate's GitHub profile. It's common to notice that candidates' accounts are incomplete or contain only projects completed as part of their job responsibilities. This may indicate a lack of initiative or interest in developing their programming skills. An active and diverse GitHub profile, featuring personal projects, code samples, and open-source contributions, demonstrates a desire for professional growth and a willingness to take on new challenges.
My GitHub profile used to be rather modest. It contained only outdated code samples I created while self-taught Android development in 2014–2015. Such a profile clearly didn't meet the requirements for a senior position. It's important to understand that a current and high-quality GitHub repository plays a key role in a developer's career growth. Updating content, adding new projects, and demonstrating relevant skills help attract employers and demonstrate professionalism.
I asked for test assignments, and sometimes they refused, claiming they were only focused on GitHub. Nowadays, when I notice that a candidate lacks pet projects or example repositories on GitHub or Bitbucket, I still offer them a test assignment. If a candidate encounters difficulties with theory during the interview, I give them the opportunity to demonstrate their skills in practice, as such difficulties can be caused by stressful situations.
I don't understand why some candidates refuse to complete test assignments. If they don't answer questions and don't provide code examples, how can their qualifications be assessed? There are cases when candidates tell recruiters about a rejection with the following statement: "Your interviewer couldn't motivate me to complete the test assignment." This is especially surprising considering that, as a team lead, I select people for my team, and the candidate is aware of this, yet still reacts this way. An interview is not only an opportunity to test knowledge and skills but also an indicator of how adequately the candidate perceives their future work and whether they are ready to collaborate.
Even when interviewing for a senior position, with significant experience in technology, impressive pet projects, and successful commercial solutions, you will still face many routine tasks. These tasks cannot always be delegated to junior developers, even if they are capable of handling them. You will have to handle these routine tasks yourself, as you cannot expect senior tasks to arise automatically. Failure to address routine tasks will lead to burnout for both junior developers and managers. As a result, work will be delayed, customers will be dissatisfied, and managers will feel pressured by management. Therefore, it's important to find a balance between routine work and more complex tasks to maintain team productivity and customer satisfaction.
The candidate should understand that different projects may have different circumstances. Your position may be a senior or middle developer, but within a project, you may function as a team lead. At the same time, there are cases where a team lead is promoted to a lead or senior developer role because the team already has a leader. Be prepared for such changes. Seniors and team leads often avoid completing test assignments, perceiving them as a waste of time. In such cases, we recommend providing code samples to assess your skill level and experience.
Test assignments during interviews often become a source of discussion for negative experiences related to strict requirements from team leads. It is believed that some team leads use test assignments as a way to weed out truly talented candidates. In response, many highly potential professionals refuse to complete test assignments for free, insisting on payment for their work. Some candidates also require a probationary period or trial day to demonstrate their skills in practice. This reflects a general trend in the labor market, where specialists value their time and effort, expecting adequate compensation for their qualifications.
Allowing a stranger to participate in a trial day on a project is not always possible. For example, if the project is highly classified or involves elements of a trade secret, the risks must be considered. In such cases, it is important for the security service to conduct an appropriate background check on the candidate before allowing them to begin work. This will ensure the protection of confidential information and guarantee the security of the project.
A probationary period for various projects can be a costly and risky stage due to potential security threats, unjustified risks associated with poor performance, and threats to the company's reputation. The need to carefully assess the potential consequences and risks associated with the probationary period is becoming especially relevant for organizations seeking to maintain their competitiveness and image in the market.
Read also:
- How to stop being a junior and start living
- Who is a Google Developer Expert and how to become a public expert
- iOS Developer: salary, career, where to study, where to go to work
Profession Developer
A course for those who dream of working in IT, but don't know where to start or doubt themselves. We will help you choose the best of 6 professions, overcome your fears, and navigate your way to employment.
Find out more
