On July 21, a stream took place on our social networks with Andrey Evsyukov, Deputy CTO at Delivery Club. Andrey told how the DC hiring framework works and shared a few secrets on how to optimize it so that it works like clockwork. We share with you the transcript and recording of the broadcast.
It would be interesting to hear your recommendations on starting your own IT business, in terms of hiring employees and organizing production.
What should be the minimum team to work on an interesting project; I mean not the quantity, but the required items. Perhaps this is not your profile a little, but I would like to hear your thoughts.
Indeed, my profile is not mine, I am not an entrepreneur, but rather an engineer. If we talk about the minimum composition of positions, then, as it seems to me, there should be a sorter / searcher who searches for CVs and candidates by keywords, there should be a recruiter for the initial selection, there should be someone who checks the hardskills of people and their compliance with the stated position and someone who makes the final decisions. It is important to note here that my profile is based on the companies I have worked for, and there is always an evolving tech brand that strongly influences the way we search for candidates. It seems to me that this is radically different from, for example, a recruiting agency, if we are talking about a business that does not have its own technical brand or product for which it is looking for employees.
โ , , , ?
, , , 2 dry/solid-, 15 ?
There are different types of teams. That is, a feature factory, a product team, an empowered product team, and so on. It all depends on which zones the developer should influence. If he receives a task, gives the code for review, and at this point the company considers his task to be solved - this is one story. Another - if the developer is also responsible for the deployment of the feature, the third - if he is responsible for clarifying product requirements - from the business, from stakeholders, from the product manager. Or such a story, when the developers are involved in what initiatives are generated in the changes for the product, knows how it looks in production and how it affects the user; when they look at product metrics, they know business analytics - conversion, retention, and so on; when they know how the application behaves in production, they know the technical metrics,know how to work with Grafana and other tools.
In the first case, a person receives a clearly described task, and there is a separate technical analyst and a project / product manager who have already completed several stages of work on the task and requirements. When he prepares the code and sends it further, not caring much about what happens to the task after it, then technical hardskills are really more important to him.
If the story is closer to the Delivery Club, then the developers participate in clarifying the requirements, understand the product and business metrics, understand how to influence the end user, participate in deployment, understand how the application behaves in production - then softskills come to the first plan, and related knowledge is important. In this case, a person may not know all the sorting methods, but at the same time he understands how the application works, understands a little more about the architecture, about monitoring the application in production, about the company's business and how this translates into product metrics - and what it is the metrics that are important to the product, or to the part of the product it deals with. Then the assessment shifts to other things.
Often in a vacancy for a conditional PHP developer, you can see the required knowledge of Docker, Kubernetes, Ansible, Prometheus, Grafana, CICD, GoLang - and you can also Python, Rust, Scala. Is it really necessary, or is it better not to apply for such vacancies at all?
It depends on how the development process is structured. And, probably, on what stage the company is at. If it is at the growth stage, when there is uncertainty, there is a culture of experimentation and hypothesis, then it will have a different profile of recruited employees. That is, people will be required who understand how their work affects the end user and the product - and here you cannot do without knowledge of Docker / Kubernetes.
Does it make sense to give home test problems for 1-2 hours, if they can be solved for a candidate, and this cannot be checked?
Many programmers and freelancers may not want to do a free test - is it customary to pay for it?
I will answer based on personal experience and opinion. Firstly, the Russian IT hiring market is a highly competitive market. We made an emphasis on reducing the number of points of communication with potential candidates in order to achieve the result that is stated in the topic of the stream. We do not give test tasks - in our opinion, this weakly tests skills. It is important for us to determine how a person thinks in the course of the dynamics "here and now", and for this we need to be present and look at how he works with objections, with changes in conditions - this tells us about softskills. More often than not, candidates fall off at the stage when they are asked to do a test task, so we do not practice this.
, ? Rider App โ ?
We develop the Rider App ourselves. If we talk about testing, at the moment Delivery Club employs 180 IT specialists, which is about 30 teams. We have cross-national product teams, composed in such a way that each team has a QA engineer - that is, there are also about 30 of them. We also have QA lead roles who are responsible for the direction and technology strategy.
The testing process itself is more or less industry standard. There is JiraFlow and GitFlow, a stage in which developers write unit tests, functional tests are written by QA engineers, they also create test cases that they follow. Then there is integration testing, and after deployment, final testing.
50 positions in 43 days sounds unrealistic. The onboarding process is interesting.
The introduction of a person into the process should take some time - we usually have 3-4 weeks, and we need an enhanced code review. How to deal with the flow of newbies?
Our onboarding process is formalized and established over the past 1.5 years. It takes from a month to 3 months - it can take the entire trial period. It is broken down into 3 large stages. The first is the study of processes, culture, technology stack. At the second stage (the second-fourth week) - โsemi-combatโ tasks, tasks from technical debt, non-priority ones, in which it is easier to learn and immerse yourself in the context. A person receives a real project in the 3rd month or in the middle of the probationary period, and we plan to use 100% of his useful time - then the person shows what he studied in the previous two stages.
The process is formalized, we have a knowledge base in Confluence with documents for each direction of development - onboarding adaptation slightly differs in them. There is always a direct manager, who is also the team leader of the team. In addition, we are now practicing the โbuddyโ culture (a person in a team who helps the person adapt and tells where to look for information and who to contact). In addition, the line manager acts as a mentor and helps the team lead in formatting goals for the employee. In addition, there is a team and other teams that you can also refer to. We have a lot of horizontal communications between and within teams, you can always address any person - including those higher vertically; this is welcome.
Now onboarding is proceeding normally, there are no problems yet.
senior- ?
It seems to me that you can either offer a salary higher than the market, or recruit just about anyone and declare that they are senior. In the first case, it would be on everyone's lips (and this fact would be part of the strategy).
Delivery Club salary is average in the market. As for skills, I will say that we have qualified specialists. There are several techniques that can speed up hiring; If you use all the available techniques, then you can really speed up the hiring process and at the same time improve its quality. Now we will talk about this in more detail.
So, before talking about speeding up hiring, I'll tell you about how our hiring cycle works and what stages it consists of - so that later you can refer to each of them and describe how you can improve the quality and speed at each of them. hiring.
First of all, it should be mentioned that Delivery Club is part of Mail.Ru Group. We use several functions of Mail.Ru - for example, operation and recruitment. That is, we have HRs from Mail. In total, 7 recruiters and about 40 hiring managers participated in the hiring, which is our topic and which took place in the second quarter of 2020.
The process starts with writing a job description. We describe the requirements, describe the project, necessarily - employee values โโ(that is, what an employee should work for). This text is also used for the first contact. The search conducted by recruiters is a cold search, through the resources that everyone has heard. Having compiled a description of the requirements and employee values, we proceed to the sourcing stage - this is the search for contacts and the first contact. We do not call candidates, we contact through instant messengers. The person is given all the information that is in the job description. After that, a short meeting is scheduled - screening, which lasts 15-30 minutes. This is the next step. It is run entirely by a team of recruiters. At this stage, we want to determine if we want to call the candidate for the next - technical interview.At the screening stage, questions are asked about teamwork - this is one of the most important skills for working in Delivery Club, as well as employee expectations - what position he is applying for, what material and non-material motivation he has. After we made a decision on further communication with the candidate, there are communications via Telegram chat with recruiters and highing managers. There are people who conduct technical interviews, business leaders who participate in the finals, I and the entire recruiting team are also present. As soon as a candidate appears, they drop us a link to Huntflow (where we maintain a database of candidates), say that there is a candidate, such and such a skill, for such and such a position, and agree on the time - then they already determine convenient slots. Highing managers write to the candidate about when they themselves can,and schedule a technical interview.
A technical interview is a case interview. We give cases for architecture design; this block also has a small block on hardskills programming - only 15-30 minutes. Most of the interview is just a case-based design interview; it lasts 2-2.5 hours, sometimes 3 hours, although we try not to delay them: during this time the candidate gets tired and the interview becomes ineffective. After a technical interview, highing managers write feedback in Huntflow, enter the results of interviews, checks on hardskills and softskills there. This is also written to the chat, and a decision is made about whether to call the candidate for the final.
The final lasts 30-60 minutes, it is attended by the head of the direction to which the position belongs, as well as myself or the technical director. At the final, we finally find out the expectations of the candidate, talk about the project that we want to offer him, and make the final decision - to make an offer to the candidate or write why we are not ready to make him a job offer.
Now let's determine what can be accelerated and improved here, and which stages should be paid attention to at what point.
First, as I mentioned, the Russian IT specialist market is highly competitive. The number of employers exceeds the number of candidates, and when a person declares a desire to look for a job, he receives responses from many companies. In the Western market, the situation is the opposite: if a company posts a vacancy, then a line of applicants forms.
This tells us not to procrastinate with feedback. It is important to quickly complete all the stages, to communicate to the candidate what stages will be, how long they will take, and when he will receive feedback. The study showed that, on average, an IT specialist in Russia can find a job in 3 days - a downtime even in 1 day can result in the loss of a candidate. Our experience confirms this - we have had cases when a candidate received an offer from another company while we were late with the feedback on a technical interview.
First, it is important to understand how we will interest the candidate - that is, what employee values โโwe offer, how we differ from other companies on the market. We have this in job descriptions and at all points of communication: decision-making autonomy, a well-coordinated development process, a clear career path, work with modern technologies, and finally - work in the fastest growing and fastest growing e-commerce industry, including in the company , which is the leader of this market.
After we contact the candidate, we need to quickly find the slots for the interview. To do this, we communicate on Telegram. We have a regulation - that is, when we are preparing for an interview with the highing managers, we respond within 3 hours after the recruiter says that there is a candidate and we need to find time for an interview. In addition, we write interview feedback no later than 1 day - ideally, the same day, maximum - the next morning. Delay may result in the loss of the candidate.
So we have a technical interview stage that developers and team leads can go to, and we have increased the number of recruiters who are searching and increased the flow of incoming candidates. After that, it was important for us to make sure that we primarily track softskills. For us, it is not so much hardskills that are important as the coincidence in the cultural characteristics that we have in the company, how adaptable and educated a person is, how well he works in a team. There was a case when a person came and applied for the position of a GoLang-developer despite the fact that he had not written in Go before (he had experience in Java), and at the same time he passed a technical interview (I will tell you about the case interview later), very cool did the design of the service, quickly answered, got oriented, accepted new inputs and did not get lost. In the end we hired him,he quickly mastered Go, now he is doing cool tasks.
It is important that the case interview stage is scalable so that more people can be connected there, and that what we identify at this stage is clearly focused. At this stage, we do not fully identify motivation: we must identify adaptability, the ability to work with objections, determine how a person argues, gives feedback, accepts criticism, and is oriented.
When you have 40 high-level managers and you need to conduct 150 technical interviews, you won't be able to go to the person every time and ask how the interview went, whether the person liked it or not. You must standardize enough feedback - the format of the report that is recorded after the technical interview. Our highing managers and I did a lot of training - I talked about which softskills are important for us, why and how they are formed (looking ahead - they are formed from the characteristics of the business area in which we work). We talked about building a case interview, about what moves are, how to follow it correctly, how to build its context so that you can check a person's adaptability and how he orients himself with new introductions. And, of course, abouthow to reflect all this in the interview report, so that later, if a person makes it to the finals, you could see how he passed the technical interview. Before that, a screening report is also attached, which the recruiter fills in. As a result, as a person who conducts the finals, I have the whole picture. It says why a person changes jobs, what is his motivation to change, what is important for him in a new place of work. Further - reports on how he works in a team, whether he knows how to measure his effectiveness, how adaptable he is, how good he is in architecture, what knowledge he has on databases, Go, PHP or related languages.as the person who conducts the finals has the whole picture. It says why a person changes jobs, what is his motivation to change, what is important for him in a new place of work. Further - reports on how he works in a team, whether he knows how to measure his effectiveness, how adaptive he is, how good he is in architecture, what knowledge he has in databases, Go, PHP or related languages.as the person who conducts the finals has the whole picture. It says why a person changes jobs, what is his motivation to change, what is important for him in a new place of work. Further - reports on how he works in a team, whether he knows how to measure his effectiveness, how adaptive he is, how good he is in architecture, what knowledge he has in databases, Go, PHP or related languages.
In the final, we do final checks on the relevance of our culture, finally find out the requirements, be sure to talk about what open vacancies we have, what projects are to be done, how onboarding will be going on. At this stage, it is important to work with expectations - to make it clear what the work will look like, to give a choice of positions from the available ones. Including, we talk about what benefits and non-material motivations we have in the company: voluntary medical insurance, gym, conferences, training, employee development; how the performance review is built; how you can apply for promotion and what career path awaits a person. All this influences the final decision making by the candidate.
In general: recruiters are engaged in screenings, there is a team of highing managers who are engaged in case interviews, there is a staff of direction managers (together with me) who conduct the finals. It turns out a "funnel". It is important that at each of the stages specific things are checked, and in the final everything comes together and a decision is made about whether you are ready to take a candidate or not. This helps to speed up the process and handle a lot of traffic if you want to hire a lot of people in a short time.
There was a question about how realistic it is to hire so many people in such a short time. It should be noted that this is not the first wave of hiring to happen at Delivery Club. The first one was back in the 1st quarter of 2019, and the subsequent ones were in the 3rd quarter and in the 1st quarter of 2020.
There are a few more things that can speed up the hiring. First, when you understand that a candidate is not right for you, you need to understand how to give him this feedback. You need to tell him what strengths you saw during the interview. You must clearly understand why you made the decision in favor of another candidate, but at the same time give this candidate some growth areas, saying: we can continue the dialogue if you tighten this and that. We have many examples of people coming back. First of all, when they received feedback, they said: thank you, you have highlighted areas for me that I had not thought about before. In this case, they do not get upset because they were not taken. And then they are ready to work to come back, pulling up certain skills, and reapply.Such an "investment" can give you an increase in six months to nine months, for example.
Secondly, since we work in a product company, and we started working on a technical brand, it quite strongly affects the loyalty of people who come to apply for work. We have such a thing: when a person comes to Mail, he can apply for a vacancy in any business unit; and after we started to download the technical brand, we are faced with the fact that people come just for us - โwe want to go to the Delivery Club, we saw how Denis Gorev talks about the appointment of couriers, we realized that you have a lot of things, many systems, complex cases - we would like to try. " That is, pumping a technical brand with stories about how the system works is also important in order to tune the incoming stream of candidates.
Finally, we were also allowed to accelerate by the fact that during the period of self-isolation we switched to remote work, since March. We are still working remotely and we started looking at the remote employee markets. Before that, we only talked about the office in Moscow, but now we decided to expand the geography of our candidates and employees. During this period, we realized that working remotely is possible; our processes have adapted quite flexibly, and this has opened up a new horizon and new opportunities.
In total, in the second quarter, we made about 500 contacts with potential candidates with the help of recruiters, conducted about 250 screenshots, 150 technical interviews, 70 finals, and made about 58 offers. At each stage, there is a funnel of 50%, approximately; we can say that in order to hire about 50 employees, it is necessary to conduct about 500 contacts with potential candidates - a contact is understood as an attempt to communicate with a person found on the resource. About 350 of those 500 responded in any way, and with 250 of them we did initial screenings, which were transposed into 150 technical interviews. The funnel at the stage of finals and offers is much smaller. At this stage, it seems to me that the work that I talked about plays a role - that is, how you work with expectations. Do you remember with what motivation the candidate comes:maybe it is important for him to develop, or study technology, or study microservices, or to have a well-coordinated team and mentor. You record these things in your candidate base and respond to these expectations - especially in the final and when you make an offer.
Can you share a case study from a case interview? Is it the same for everyone, or do you have a set of cases?
Let's dive deeper into case interviews. What it is? First of all, there are several answer options for cases, they cannot be learned in advance. If candidates ask what they should prepare for, there is no answer. The inability to prepare is precisely the beauty of a case interview.
We have several case interviews, we use them depending on which department we are potentially looking at the candidate in. Sometimes there is a clear differentiation by skills: for example, at one time we were looking for candidates who knew Python for RnD - we used one case for them; when we were looking for PHP-schnicks for the platform, the case was different, when Go-schnicks for the consumer-direction, there was a third case.
In a case, first of all, conditions, context, task are important. Case interviews are also good because they are close to reality. Once again, we return to the fact that the market is highly competitive today: it is very important for us to interest a potential employee. When a person comes for an interview, and they begin to question him, he feels like he is on an exam, or as if he was in for interrogation - candidates do not like such interviews, and this is exactly the kind of feedback we received after interviews. But if a person is given an interesting task, close to reality and designed to tell exactly how he works, how his communication is built, how he discusses architecture, how everything looks from the inside - he becomes involved in it all, he is interested, he is more willing to answer on this. That is, there is nothing worse thanwhen a person is given a purely synthetic problem, and he first of all asks the question: maybe it is possible not to do this? Why use this algorithm that you give me? Why make an entire application if you can do routing in inject? The most interesting thing is that in food companies, as engineers, we are always asked to think this way - in addition to interviews, they usually have to completely change the way of thinking. We tried to take this into account.
When a candidate comes, we greet him, tell him how all the stages will look like, tell who is currently present at the interview. The candidate talks a little about himself - it is important to relax him a little so that he can use his full potential, does not get nervous, does not worry. And then we play a big game with him.
โImagine that you got a job at Delivery Club. And you work in a team working on a mobile application where people order food. And you need to make a courier tracking screen after ordering food. If you have used it before, there is such a map where you can see how he walks along the map. So imagine yourself as a backend developer who needs to design something like that. "
Next we tell the context. The context means a certain environment. We say: โThere is an API-gateway that accepts requests from a mobile application, it authorizes them, routes them further. There is a service with orders - there is such a database, such fields, such a little hand that gives such and such data. Further, there is a logistics service, to which coordinates are sent from the application, which is in the hands of the courier. " That is, in essence, we create the maximum approximation to reality, we say that it is possible to change, what cannot. Let's say that one of the services is written in an exotic language that the candidate does not yet know - that is, it cannot be changed. Or another service is too complex, it is also not ready to make changes to it. Then the candidate is limited: he cannot make changes to these two services,but can build any other number of services to solve the problem of transferring the coordinates of the courier.
The person turns out to be tuned in not to the fact that he is at the interview, but to how to build such a system. Intuitive solutions are found that you can try to apply. A sequence diagram is drawn. It turns out that the solution doesn't work because the conditions are not met. The person thinks further. After he came up with something, we sometimes use a small branch with a "false path" - so we check the very adaptability that I talked about a lot.
In general, adaptability can be described as the speed of passage through the stages of adoption. I like this metaphor: imagine that you are asked to build a hut. You build a hut with sticks. And now you need to make sure that it is protected from the rain - then you cover it with a tarp. And now it is necessary that it does not collapse from the earthquake - then it is clear that it is necessary to remove everything, make the foundation and build not a hut, but a building. That is, if the solution is simple, it is easy and quick to abandon it. Now imagine that you have already built a large building, and then you are given a condition under which you understand that you have built everything wrong. And it's already quite difficult to refuse such a thing.
We check to what extent the person is ready to roll back, make an overview of everything he has done, and understand whether it is worth developing this solution further - or all the same, it is necessary to remove everything and do everything differently. When a person comes to this, we say: yes, let's redo everything, we have such an opportunity, we have not even started writing code yet. And then, when we came back, they rebuilt everything, and this is the right decision, we say that a person has a fairly high adaptability.
Do you have testing at the entrance for some standard forms? If so, how do you rate its effectiveness? If not, why not?
If the question is about candidates, then we have no tests. What looks like questionnaires and exams scares people away and doesn't give good hiring results, so the focus is on case interviews. We do not perform psychological tests, we have no competencies in this matter.
What happened before
- Ilona Papava, Senior Software Engineer at Facebook - how to get an internship, get an offer and everything about working in a company
- Boris Yangel, Yandex ML-engineer - how not to join the ranks of dumb specialists if you are a Data Scientist
- Alexander Kaloshin, EO LastBackend - how to launch a startup, enter the Chinese market and get 15 million investments.
- Natalia Teplukhina, Vue.js core team member, GoogleDevExpret - how to pass an interview in GitLab, get into the Vue development team and become a Staff-engineer.
- , DeviceLock โ .
- , RUVDS โ . 1. 2.
- , - . โ .
- , Senior Digital Analyst McKinsey Digital Labs โ Google, .
- ยซยป , Duke Nukem 3D, SiN, Blood โ , .
- , - 12- โ ,
- , GameAcademy โ .
- , PHP- Badoo โ Highload PHP Badoo.