Anton Repyev, Technical Director of the Lodoss Team , specifically for the Netology blog, shared a case study on how to organize an internship program and grow young professionals from scratch within the company.Personnel hunger is the eternal problem of IT companies. Everyone decides it in their own way: someone pumps a HR-brand and huntit candidates on LinkedIn, someone brings up their developers from scratch. We at Lodoss Team have chosen the second path. I have developed a training for beginners and supervise the training of interns in the company. What came out of it and why we need it, read this article.
Why raise june
Our goal is to grow a high-quality junior developer, such a person who, at the end of the course, could independently work on simple tasks under the supervision of a team leader or mentor. During the three months of training, he should gain extensive experience and understanding of the technologies we work with, understand the processes within the company.
')
There are few good specialists in development, and often those who come from other companies do not match our portrait of an ideal programmer — we have to retrain.
IT is often easier to train employees from scratch than to retrain a person with experience.
People who come from other companies have become accustomed to a certain type of project management, code style and teamwork. It is more difficult for them to accept new corporate values, they constantly compare approaches to work in the previous company and in the current one. It is usually more difficult for such employees to develop and grow further. This greatly hinders the speed of human adaptation in the team.
If from the very beginning a specialist grows within the company, then he develops with us, perceives our corporate values more easily and becomes loyal to the company. Plus, he will be familiar with the stack of technologies with which we work.
When we finally decided that we need to organize training for interns on an ongoing basis, I faced two main questions:
- How and where to attract interns?
- How to make a training plan and organize courses?
Training organization
For a long time I could not choose a training format, but in the end I decided that it should be full-fledged training courses with theory and practical tasks.
The first problem was solved by the fact that we have the Technological Institute of SFU. Its graduates and senior students are our potential audience, many plan to develop and work in IT, and our company can provide this opportunity.
I spent two weeks on developing a training plan. During this time, I thought through what and how we will study, created the rules of the process. Next, we made a
landing with a detailed description of the courses and their advantages.
Landing also prescribed qualities that are required for applicants for internshipsThen they
told about internship in social networks:

The effect was not long in coming - the very next day more than ten people signed up for an interview.
At the entrance, we had a rather strict restriction - we did not take undergraduate students or people far from programming. I made the threshold of entry into training quite serious. I have a large workload of current work projects and I physically could not devote a lot of time to teach the basics of programming. Therefore, our target audience were guys who are already well versed in the development.
Our idea was for the graduate to continue working with us after a successful graduation. In addition, we have a filter for the minimum skills that trainees should have. This is necessary so that they can master a complex and fairly voluminous program. Therefore, of the 20 people who came to us in the first thread, we took only two. Then we repeated the recruitment and selected three more candidates. Four of them are currently undergoing training, and we have already dismissed one intern - they did not cope with the high rate of study.
Conducting courses was a test for me too. I realized how many interns I can manage at the same time with my load. Now I objectively understand that five is already a lot. If at the start, I normally coped, then it became hard. This is logical: the further we move according to plan, the more difficult the topics become and the more time requires control.
What to teach
I specifically designed the course so as not to conduct training in groups. Anyone can connect to the training at any time. It is convenient, it is not necessary to control all at once. We had experience when we went according to the scheme of academic studies: we gathered a group, prepared a room for classes and set aside several hours a week for training. They analyzed the theory and carried out practical tasks. Unfortunately, this approach did not justify itself - out of ten people trained, we only had one to work. So-so conversion.
Drawing up a lesson plan, I proceeded from the knowledge and competencies that are necessary for a specialist in our company. I am a developer myself and I have an understanding of what level a programmer should be, what tasks he should be able to solve.
Themes were selected in such a way that each subsequent one was based on the material of the previous one, and the trainee could use the knowledge gained in one lesson in the next. At first, I simply collected important questions for us in one pile: Git, JavaScript, CSS and HTML, modern frameworks and work with asynchrony. Then I built a logical sequence from simple to complex: from working with the console and git to frameworks.
Here I took into account the picture that I saw at almost every interview. Applicants, understanding that specialists with knowledge of frameworks are required, try to quickly study the documentation and make a couple of tutorials. After that, they consider themselves experts, although they do not have real experience, namely, they need much more knowledge of the syntax and functions of the frameworks.
The requirements for the interns, the thematic plan, the scheme and the rules of education, I wrote in a special
regulation .
Requirements for interns from our regulationsThen he began to think about how to monitor the course of training. In the second session, interns are in charge of project management. After studying this topic, they independently enter their educational projects in Trello, maintain a Gantt chart:

It remains for me to carry out only the tracking of the progress of the students, to see what has been done at the moment and what is not. This saves me a lot of time. Pupils learn to evaluate projects and manage the learning process. This is very important, because any programmer must be able to correctly evaluate their work.
I developed test questions for each thematic block. Here is the
curriculum with the themes and tasks:

Blocks can be studied at any convenient time, but necessarily consistently and all sections of the guys give me verbally.
Trainees do not just have to reproduce information, but to protect topics, to show that they own the material. Protection is as follows: first of all, I check the obligatory practical part and problem solving. I ask questions about the code and give my recommendations for improving it. After that, we proceed to the theory, and here it is important for me to have a common understanding of the topic by the intern. Everyone gets a portion of tricky questions when you need to think and give a non-obvious at first glance, but the correct answer.
By the way, if the intern has a debt of more than three topics, then he is expelled. This is an additional motivation for learning.
How to teach
I am not a certified teacher, it is difficult for me to describe which teaching approaches and methodologies work best with trainee programmers.
But one thing I can say for sure - you need to be able to share your experience and be responsive to them. You need to show your expertise and earn respect. Never lie when you try to hide something - it is perfectly visible to students.
It is impossible to know everything, the main thing is not to be afraid of frankly admitting this. When I am asked a question on a topic in which I am not very well oriented, I honestly say that I do not know the answer or that I need to consult with a specialist colleague.
Thinking through the training scheme, I wanted to create a mini-community of interns and decided to do this with the help of Slack. Indeed, in addition to obtaining professional knowledge, interns should be trained to work in a team, be able to find answers to questions and help their colleagues. All these skills are necessary in the daily work of the programmer.
Very often, developers are typical introverts: communication with colleagues is very hard for them. In real projects there are problems due to poor communication in the team, so we decided to pump these skills during the training session.
I created two channels in Slack: News and Help. The first translates news related to training. I planned the second for informal communication. In this channel, interns can discuss business issues and ask for help from their comrades. I observe how the guys interact with each other and assess their communication skills, openness and willingness to help colleagues. We can say that here we are pumping soft skills of interns.
The training ends with the final task. The trainee receives a small project close to this - for about two weeks of development. It's all grown-up: you need to make decisions on your own, think through the implementation strategy in order to finally achieve the goals of the project.
The level of graduation projects is assessed comprehensively. I take into account such moments as time spent on evaluation and implementation, and decisions that were used to achieve the goals. The senior programmer looks at the quality of the code, as far as it conforms to internal standards and rules. After that we set the overall assessment.
If the intern successfully completed the training and went to work for us, we will not abandon him. For each new person we assign a mentor - an employee to whom you can officially turn for help. The mentor will check the trainee code as much as possible. This is despite the fact that we are still working according to the cross-review scheme, that is, everyone in the team checks everyone. Even interns evaluate the code of their senior colleagues.
First, most likely, newcomers will work as assistants on projects. They are added to the team, and the team leader or project manager sets specific tasks and follows the process. A couple of times a month, the IT director may wonder how the newcomer is adapting, may conduct additional testing of a new employee, if there are any reasons for this. After that, a decision is made whether the graduate will continue to work in our company.
What we get from the corporate training program
- Search and hire high-quality new staff.
- No need to conduct a detailed technical interview and find out the level of the candidate. Everything becomes clear in the learning process.
- The time for adaptation of the employee in the company is reduced as much as possible
- After employment, you do not need to carefully control the novice.
- An understanding is formed of which projects in scale and complexity can be given to a former trainee.
- The graduate is familiar with the stack of all the technologies with which they work in the company. He does not need to relearn.
- We get a steady stream of new people, an average of 1−2 people per month
In general, the resources spent on training pays off. If we talk about my time as a manager, then while I do not spend much on it. When we put the system on stream and understand what we have, we will introduce a separate corporate training specialist.
From the Editor
Courses "Netology" on the topic: