The evolution of internship

Internship.

The picture illustrates the flurry of negativity in the previous article in t.me/devkg.

Former internship process

Internship in Mad Devs is a teaching of any person with any level of experience in software development for a very short period of time. Usually, it takes from 2 to 6 months. Practice showed that a person without any experience of programming can become a junior developer in 8 months. Experience gained before will speed up the internship process.

To make people develop it is necessary to challenge them by giving more tasks than they can complete on time. If there is no challenge, there will be discouragement and destruction.

Remember yourself. Routine is always boring. When you are bored, you look for a new job.

We have already been practicing internship for a long time. There were two periods: the first one was in 2015, the second period was in 2017.

Both internships taught me the following things:

  1. We have to educate people on real tasks.
  2. Ideally, if the project really works. This makes tasks more interesting and encourages people to do them.
  3. Argues and punishments greatly reduce the motivation, yet sometimes they can work in opposite way.

There are a lot of types of internships. Some companies pay with money, others — with experience. Both types are viable. We give people experience that allows them to save money on courses if you are enough motivated and self-disciplined. Herewith, if you passed an internship there is a great chance that you will become a member of our team.

The first flow of interns was in 2015. All interns had the same terms:

  1. Real tasks;
  2. Mentor assistance;
  3. Deadlines;
  4. Lunch paid by the company.
  5. Additional 1000 soms for transportation costs.

Both flows out of 30 people gave us 5 new excellent workers in the company that now work on very serious tasks. Here is pure statistics:

  1. 1st flow — 3 interns. All of them were taken into the company.
  2. 2nd flow — 27 interns. 20 of them left during the 1st week of internship, two more gave up the internship in the second week. One more intern we left during the internship since we did not offer him a job timely. Rest of the interns (5) were taken into the company, but later on, three of them were dismissed.
Image.

All these people now work as developers (Frontend, Django/Python) and I think, they are happy about the past internship.

The length of the internship was 5–8 months.

Current internship process

During the previous internships, we could allow educating people on real tasks in real projects. However, now we do not have tasks that we can delegate to interns. In addition, for the past 2 years, we have changed development processes. Now we pay more attention to the quality of our products. Therefore, we write tests, implement CI/CD. Requirements for junior developers consequently increased and we faced the following problems:

  1. We do not have cheap tasks for interns.
  2. We do not have real projects.
  3. The cost of mistakes is too high.
  4. We do not have a lot of time to work with interns.

A lot of problems can be definitely solved with the implementation of new processes. Yet it is expensive to introduce them to interns only. It also necessary to make new procedures accepted by the whole team, otherwise it will be additional efforts. Therefore, we made such plan:

  1. Write a syllabus that gives people necessary knowledge and skills.
  2. Two mentors spend 1 hour per day for each intern.
  3. All internship program should be completed independently and in any order.

After the announcement of the position, we added all those who sent us CVs to the telegram chat and explained the rules of the first stage of the internship. This stage is mainly aimed to understand the principles of remote work.

Image.

Remote work is convenient both for staff and for the company. It is beneficial for staff since they can work on Goa beach or in Thailand even if you have already been on vacation several times. It is also useful for the solution of everyday problems such as repairs or sick child. Our developers often use this opportunity. We as well have several people who worked from different countries. Some people combine work and trips. For example, I work when I go to conferences or I am simply abroad.

Remote dismissal process is a test for the ability of the person to work remotely when people are not surrounded by other working people. It is more difficult to learn new material from home or coffee house than from the office. In addition, it was obligatory to send everyday reports on work done: videos watched, articles read. If you did not send a report 3 times, then you are not an intern anymore. If you feel that the internship is quite difficult for you and do not want to continue, you feel free to give up. We need people that are dedicated to the results and want to get things done.

Now we have three internship programs: for mobile developers, Go+frontend developers, Python/Django+Frontend developers. Usually, 2–3 weeks are enough to identify people who will get to the end. They continue the internship in the office.

Internship in office

Internship in the office has several significant benefits. One of them is two mentors: morning and evening ones. The first one is strict and the second mentor one is kind. Their main goal is to help interns to develop faster. We use different approaches. I make people get results independently by asking guiding questions. Alexander tells about the possible solutions.

We do not criticize solution until a certain moment. At the stage, it is more important to show ready and working results.

The process looks the following way:

  1. Interns train to write code that nobody looks at. We pay attention only to the fact whether the code solves the problem described in tasks or not.
  2. Then we start to write test. We look at tests only, they are tied to a lot of problems and it becomes necessary to refactor the code.
  3. We write code according to the style guides (linters, pep8, jslint, and others)
  4. Learn how to send merge requests and get the code review. It is the most useful stage since a lot of problems are solved by mentors and reviewers.

The more problems you solve, the faster development. Therefore, as soon the interns are ready to their own project, they are given with their own ‘pet project’ for the team. This stage teaches people the teamwork. Approximately at the same time, we start to solve interns’ problems.

Interns’ problems

All interns usually face the same problems:

  1. They do not ask for help;
  2. They cannot formulate their thoughts;
  3. They write improper commits;
  4. They do not follow the working and procedural rules;
  5. They do not report about working progress in tickets;
  6. They do not understand basic things (How and why it is necessary to test code and how to write it);
  7. They are obsessed with the accuracy of the code;
  8. They fail to meet deadlines.

All of the points above are discipline-related. Issues with discipline can be solved by positive and negative reinforcement.

Image.

Dog or cat?

When you train a dog, you can get results from the dog in two ways: by force or by goodies. However, you will get nothing from the cat if you use force. You will be able to get more from the cat if you train it with positive emotions.

I am sure you are wondering how dogs and cats relate to interns. The answer is simple: some interns are like cats. They are not affected by abuse, punishments, and other negative factors. But praise and other goodies work very well for them. Trainers in gyms definitely know that women work better if they are praised than if they are punished. Interns-cats are interns with cat character. Positive methods work on them to a great extent.

Interns-dogs are easier to be trained since both positive and negative influence work on them. You may hear how powerlifters motivate each other by shouting. Then, when the weight is lifted, partners start to approvingly hug each other.

In the previous article about positive and negative reinforcement the keynote was the existence of two types of reinforcement. Herewith, both types work and correct behavior. The possibility that undesirable behavior will occur tends to zero.

For us, it is very important to make interns follow our rules, be responsible and disciplined. This allows avoiding a lot of further problems. For example, it may seem that a person did not work yesterday since there are no commits and work logs. In fact, a person wrote the documentation during the whole day and forgot to write about this in the task. All of the above is told during the internship.

Final stage of the internship

In the previous post, I wrote about the methods of behavior correction that are definitely not widely acceptable. But we really appreciate interns that came to our office. By this moment, we have already spent a lot of money, time and efforts on them and therefore, we cannot fire them.

I believe in the power of communications. People themselves can tell the ways, how to help them. Before the implementation of physical exercises, I asked interns about this idea and we decided together to make push-ups the negative reinforcement.

I also believe that this approach is more effective since it is less derogative than punishment or reproval. This method corrects behavior and I have proof for that. There may be a lot of other things instead of push-ups. For example, speech with the analysis of mistakes on the work undone, or additional task on the realization of a data structure. The essence is that tasks should be negative reinforcement — action or process that will end as soon as undesirable behavior ends.

Positive reinforcement increases the possibility of desirable behavior in the future. It can be any goodies: candies, apple, pen, pencil, praise. The only criteria — it has to be something nice.

Conclusion

I am against of any actions that harm the person’s identity. I am against of moral violence and any types of abuse or punishments. Moral violence has more negative consequences than a physical one.

Interns themselves choose their motivators. We do not have slavery or tyranny. We are for the mental and physical health of our interns. We are for people who are able to solve tasks independently through efforts and mistakes. We are for the development of our staff. What is more, when they are taken into the company, other methods are user — no repressions or push-ups. I will cover this topic in the next articles.

Image.

At last, the results of our internships:

2015:

  1. The first flow: 3 interns came — 3 interns were hired — 3 persons work now.
  2. The second flow: 30 people — 5 interns were hired — 2 persons work now.

2017:

  1. The first flow: 10 people — 2 interns work now — both are recruited now.
  2. The second flow: 10 people — 2 interns work now — both are recruited now.
  3. The third flow: 27 people in 3 countries — 3 interns work now — there is a great possibility that we will hire them.

In the next posts, I will tell more about positive and negative reinforcements and their differences from punishments.

Custom Software and Mobile App Development.
PM tools

Top open source project management tools

Top open source project management...

Top open source project management tools

If you ask any project manager what he is dreaming of, he will most likely answer that he would like to get some sleep and that the product...

No-Code and Low-Code Development.

No-code and low-code development

No-code and low-code development

No-code and low-code development

The no-code and low-code development market is booming. Some people, including specialists, believe that no-code and low-code are the future of the...

Transportation Industry in IT

Transportation industry opportunities in IT

Transportation industry opportunities...

Transportation industry opportunities in IT

It’s hardly possible to name an industry in which high technology has never been used so far. Transportation is no exception. Like with any business,...