
Recruitment for at Yandex is ongoing. It covers five areas: backend, ML, mobile development, frontend, and analytics. In this blog, as well as in other blogs on Habr and beyond, you can find plenty of insights about the internship process. However, much of this remains a mystery for those not working at the company. From the perspective of development leads, even more questions arise. How do you conduct an internship properly? How can you maximize the mutual benefit with the intern? How can you get to know them in three months and teach them everything they need for continued work?
We prepared this article as a group of five. Let us introduce ourselves: Ihnat Kolesnychenko from the distributed computing technologies department, Misha Levin from the machine intelligence department of the Market, Denis Malykh from the application development department, Seryozha Berezhnoy from the search interface development department, and Dima Cherkasov from the anti-fraud development group. Each of us represents a specific area of the internship. We are all leads, we need interns, and we have some experience working with them. Letâs share some of that experience.
Interview before the internship
Candidates will face several technical interviews. Success in the interview depends less on soft skills (the ability to communicate effectively) and more on hard skills (mathematics and programming skills). However, managers evaluate both.
Ihnat:
Even if a person is very capable but absolutely uncommunicativeâthey wonât be able to apply all their skills. Of course, we pay attention to this, but itâs not a reason to exclude someone from the internship. Everything can change in three months, and besides, your first impression might be incorrect. If itâs correctâthen you need to explain to the person, look for other teams for them. For interns, communication skills are definitely not the key factor. After all, professional skills are much more important.
Denis:
I like people who tell storiesâin a good way. A person who can recount how they and their team heroically dealt with some kind of failure is interesting. I start asking additional questions when a story like that comes up. But that rarely happens if you simply ask, 'Tell me something interesting about your projects.'
One candidate once said a wonderful phrase that I even noted down: 'Successfully avoided solving boring tasks.'

Since there is little time for communication, the interviewer tries to gather useful information about the candidate every minute of the meeting. It's great if the intern has thought in advance about what aspects of their experience (not listed on their resume) they can share. This should be a concise story focused on the matter.
Denis:
I pay attention if a person mentions that they have tried many languages and approaches. People with a broader perspective tend to devise more elegant solutions in a practical setting. However, this is a double-edged sword. You can skim the surface but not really learn anything seriously.
Time for the stories described by Denis usually only remains during the final interview. Until then, itâs essential to demonstrate the fundamental and practical knowledge that will lay the groundwork for future work. And of course, writing code on a board or sheet of paper will be required.
Misha:
We check the knowledge of probability theory and mathematical statistics. We look for whether the person has experience with metrics, machine learning algorithms, tuning their parameters, overfitting, etc. We expect that the person can write code sufficiently to be an analyst.
Denis:
Those who come for an interview mostly know programming languages: we have a good school for basic languages and good institutes in Yekaterinburg. But to be honest, a candidate for an internship with solid hard skills is a rare case, at least in our epsilon neighborhood. For example, Swift. It involves very complex string manipulation, and there are few people who can handle it off the top of their heads. Such candidates immediately catch the attention. I often give a task related to string processing during interviews. In all my time, there has been only one person who could write such Swift code on a piece of paper without hesitation. After that, I went around telling everyone that someone finally managed to solve this problem in Swift on a piece of paper.
Algorithm testing in interviews
This is a separate topic, as candidates still often ask why we always assess knowledge of algorithms and data structures. Even future mobile developers and front-end engineers undergo such testing.
Misha:
During the interview, we always give some algorithmic problem. The candidate needs to come up with a way to implement it in Python, preferably without errors. Itâs important to understand how to test their program and fix it independently.

Experience with algorithms will be useful for three main reasons. Firstly, it will obviously be needed in algorithmic tasks â which donât come up often, but still arise. Secondly, a developer will be able to solve algorithm-related problems more effectively, even if they donât require delving into the algorithms themselves (and there are already quite a few such tasks). Thirdly, if you weren't taught algorithms at the university but still know how to work with them, that portrays you as a curious person and will enhance your credibility in the eyes of the interviewer.
Denis:
Most mobile development is just 'translating JSON'. But there are instances every six months when algorithms are necessary. Right now, I am drawing beautiful maps for Yandex.Weather. In a week, I had to implement a smoothing algorithm, the Sutherland-Hodgman algorithm, and the Martinez algorithm. If someone didn't know what a hashmap or a priority queue is, they would struggle with this for a long time, and it's unclear if they would manage it at all without external help.
Algorithms are the foundation of development. They are what help a developer be a developer. It doesn't matter what you are working on. They are necessary even in simple projects where the main work consists of 'transferring JSON'. Even if you aren't writing the algorithms yourself, but are implicitly using some data structures, it's better to understand them. Otherwise, the applications you create may work slowly or incorrectly.
There are programmers who entered the field academically: they enrolled in university, studied for five years, and earned their degree. They know algorithms because they were taught. However, just knowing algorithms doesn't necessarily characterize a person's breadth of knowledge; this should be assessed in other ways.
Then there are self-taught individuals, to whom I include myself. Yes, formally I have an IT education, a degree in computer engineering. But self-taught programmers learned to program 'in spite of' formal education. They didn't have a university program. Typically, they are not familiar with algorithms â because they never encountered the need to study them. When such a person understands algorithms, it means they have spent time figuring them out. After finishing university, I realized that I had gaps in my understanding of fundamental algorithms â the thing is that my specialty was applied. I went and studied online courses from Princeton University, well-known by Robert Sedgewick. I figured it out and completed all the homework. And when someone in an interview shares a similar story, I immediately become interested and want to work with them or at least continue the conversation.

Ihnat:
When you interview an intern, in some sense, you expect even more than from an experienced developer. This refers to the ability to solve algorithmic problems and quickly write some correct code. An internship candidate is still in university. Just a year ago, they were taught everything about algorithms in detail. It is expected that they can reproduce this knowledge. If a person is reasonable and listened to the lectures attentively, they will simply know everything, retrieving it from memory.
What tasks does an intern solve?
The internship program can usually be scheduled and discussed during the final interviews. At the very beginning of their work, interns may receive training tasks whose results will not be utilized in production. Moreover, the likelihood of receiving such tasks is low. More often, operational projects from the backlog are assigned, meaning they are deemed worthy of attention but not a priority, and are 'separable'âso that their implementation does not depend on other components. Managers try to distribute them in a way that allows the intern to become acquainted with different parts of the service and work in the same environment as other team members.
Ihnat:
These are extremely helpful tasks. They may not increase the cluster utilization by 10% or save the company a million dollars, but they will make hundreds of people happy. For example, we currently have an intern working with our client to launch operations on our clusters. Before launching, the operation needs to load certain data onto the cluster. This usually takes 20â40 seconds, and previously it happened silently: you ran it in the console and just stared at the black screen. The intern came in and, in two weeks, created a feature: now you can see how the files are being uploaded and what is happening. The task, on one hand, is not complex in description, but on the other hand, there are aspects to explore, such as which libraries to look into. The best part is that you completed it, a week has passed, itâs on the clusters, and people are already using it. You post in the internal networkâpeople thank you.

Misha:
Interns prepare models, gather data for them, devise metrics, and conduct experiments. Gradually, we simply start giving them more freedom and responsibilityâchecking if they can handle it. If yes, they move on to the next level. We do not assume that when an intern arrives, they already possess these skills. A manager helps them figure things out, providing links to internal resources or online courses.
If an intern performs exceptionally well, they may be assigned something priority and important for the department or other services.
Dima:
Our intern is currently working on hardcore improvements to the anti-fraud system. This system fights against various abuses and fraud on Yandex services. Initially, we thought of giving him tasks that were not very complex and not critical for production. We try to plan the intern's tasks in advance, but we saw that the person was 'burning' with enthusiasm, quickly and effectively solving problems. As a result, we started assigning him the launch of anti-fraud measures for new services.
In addition, there is a slight chance of getting a task that colleagues have previously avoided due to its scale.
Dima:
There is one old system and a new, unfinished one. We need to migrate from the old to the new system. In the long run, this is an important project, albeit with high uncertainty: a lot of communication is needed and one must read confusing legacy code. We honestly told the intern during the final interview that the task is difficult. He replied that he was ready, joined our team, and succeeded. It turned out he has qualities not just of a developer but also of a manager. He was willing to go out, inquire, and ping.
Mentoring the intern
The intern needs a mentor to immerse him in the processes. This is a person who is aware not only of their tasks but also of the intern's tasks. Regular communication is established with the mentor, and the intern can always turn to them for advice. The mentor can either be the group leader (if itâs a small team) or someone from among the colleagues, a regular team member.
Ihnat:
I try to approach the intern every other day, asking how he is doing. If I see he is overwhelmed, I try to help him, ask what the problem is, and dig into it together with him. Clearly, this takes away from my energy and makes the intern's work less efficiently integrated â Iâm spending my time too. However, it allows him to get results without getting stuck. And itâs still faster than if I were doing it myself. I would need about 5 hours for the task; the intern would take 5 days. And yes, I will spend 2 hours over those 5 days talking to the intern and helping him. But at least 3 hours of my time will be saved, and the intern will appreciate getting hints and help. Overall, itâs just important to communicate closely, observe what the person is doing, and maintain contact.

Sergey:
The intern is constantly in touch with their mentor and interacts with them several times a day. The mentor reviews code, engages in pair programming with the intern, and offers assistance when challenges arise. This combination of mentor support and real-world tasks is how we train front-end developers.
Dima:
To ensure the intern doesn't feel abandoned, we discuss who will mentor them even before hiring. This is also a significant growth opportunity for the mentor themselves: preparing for a team lead role and testing their ability to manage both their own tasks and those of the intern. There are regular meetings, which I sometimes attend to stay informed. However, the mentor is the one who regularly communicates with the intern. They initially spend a lot of time, but it pays off.
However, having a mentor doesn't mean that all questions are directed through them.
Misha:
We have a culture where people facing a problem ask neighboring colleagues for advice and quickly find help. The faster a person grows, the more often they need to consult colleagues to learn something. It is even useful to learn about other people's tasks to come up with new challenges. When an intern is able to negotiate, understand whatâs important to the other side, and achieve results in a team, they grow much faster than someone who relies on a supervisor for everything.
Sergey:
There is documentation, but most of the information is absorbed informally. If you take it in at the start of your career, it gives you an additional advantage, and we can focus the person on what needs to be learned.
The ideal intern is someone who interns for several months, becomes a junior developer, then a developer, and then a team leader, and so on. This requires the archetype of a student who isnât shy about asking questions when something is unclear but is also capable of working independently. If he is told that he can read about something in a specific place, he will go there, read, and come back with new knowledge. He may make mistakes, but he should not make the same mistake more than once, at most twice. The ideal intern should develop, absorb everything like a sponge, learn, and grow. Someone who just sits and tries to figure everything out on their own, digging around without asking any questions, is unlikely to thrive.
End of Internship
Before starting work, we sign a fixed-term contract with each intern. Naturally, the internship is paid, formalized under the Labor Code of the Russian Federation, and the intern receives the same benefits as any other Yandex employee. After three months, the program concludes â many interns are then transitioned into permanent positions.

On one hand, it's important for the supervisor that the developer fulfills their internship minimum. This is the goal set for the intern from the very beginning, starting with the interview. However, this is just the beginning of the story. An intern is always a potential candidate for us. The minimum goal for the supervisor is to spot such a person early on who can be confidently recommended to other departments after three months. The maximum goal is to retain him in the same team by bringing him on board. At the same time, we take into account that a second or third-year student â even if he has become an intern â will need to continue their studies at the university when the academic year begins.
Sergey:
First and foremost, interns are a talent pool for us. We aim to develop people within Yandex so that they fit our tasks perfectly. We provide them with everything, from the culture of communication and interaction within teams to encyclopedic knowledge about all our systems.
Ihnat:
When hiring an intern, we immediately consider whether they will fit into our team. Usually, the only obstacle is the lack of an available position. We try to bring in fairly young candidates. If a person has five years of development experience, comes to Yandex, and is regarded as an intern, it unfortunately indicates that despite their capabilities, if they are applying to Yandex with five years of experience, they will not be able to grow into a senior developer. It usually comes down to pace: slow growth in the past will mean slow growth with us as well. Yes, sometimes it takes three months to realize that a person cannot meet expectations, but that's relatively rare. In more than half of the cases, we are ready to hire individuals full-time. To my knowledge, there hasn't been a situation where someone successfully completed an internship but could not pass the interview for a full-time position.
Misha:
We offer all successful interns a chance to stay with the company. Typically, after an internship, we hire more than half of them full-time. Summer internships are more challenging because we often receive students, such as those in their third year, who find it difficult to balance work with studies.
Dima:
Let's assume the intern is doing an excellent job and has great potential to grow into a good developerâeven if they currently lack sufficient experience. And let's say there is no open position for a permanent contract. Then itâs simple: I need to go to my manager and tell themâthis person is really talented, we must do everything to keep them, letâs offer them something and find a place for them.
Intern Stories
Denis:
The young woman who joined us as an intern in 2017 was originally from Perm, which is about 400 kilometers west of Yekaterinburg. Every week, she would travel to us by train for the Mobile Development School. She would arrive during the day, study in the evening, and head back late at night. Recognizing her dedication, we invited her to work, and it proved to be a good decision.
Ihnat:
Several years ago, we participated in an internship exchange program. It was interesting to work with foreign interns. However, the interns from there are not necessarily stronger than those from local universities like SHAD or FKN. One might think that EPFL is among the top 20 universities in Europe. At that time â as a somewhat inexperienced interviewer â I had this expectation: incredible, we are interviewing people from EPFL; they must be super impressive. Yet, those who received a foundational education in coding here â including from key regional universities â turn out to be quite competent.
Or another story. Currently, I have a young guy on my team, he's about 20 years old. He works in St. Petersburg and came for an internship. He's really impressive. As usual, you assign tasks to him, he resolves them, and then a month later, he comes back and says: I solved these, and it seems your architecture is poorly constructed. Let's redo it. The code will become simpler and clearer. Of course, I advised against it: the scope of work is large, and there's no profit for users, but the idea sounds absolutely reasonable. He understood a complex multithreading process and suggested improvements â perhaps they were premature, refactoring for the sake of refactoring. But as soon as we want to complicate that code, we can still make that refactor. In fact, several months later, we tackled this task. I was happy to bring him on board. None of us are geniuses. One can come, figure something out, and point out our problems. That's valued.
Misha:
We sometimes have such ideal interns. Despite their lack of experience, they see tasks not only on a technical level but also on a global scale. They propose fundamental improvements. They have an understanding of how to translate tasks from the real world into technical terms without losing meaning. They think about the ultimate goal, whether it's worth delving into the details now, or if it's better to completely change the approach to the task or even the task's formulation. This means they have the potential to operate several levels higher. To go through this path, they just need to develop some skills and internal tools. Plus, launch a few successful projects.

Source: habr.com
