Not so long ago, one firm offered me an internship because I heard good reviews about my students. Get newbies, work with them for a month, and then send them to a combat project - where they will work independently.
Of course, I was pleased, I wanted to agree. It would be a great way to test your skills in a new place, to correct the mistakes of previous courses. Then, internships are a fairly simple option to spread your vision on design, architecture, design, and generally earn extra money.
But when it came time to announce the price, I deliberately twisted it so that I was refused. I did not have a clear answer why I did this, but there was a billion doubts and oppressive thoughts. I realized that training on internships is a sure evil.
Those internships that I’m talking about are essentially courses with subsequent practice on a combat project in an active team. The course itself is transient and involves learning only a specific technology, and the subsequent practice is throwing puppies into the water, with the hope that they will learn to swim themselves.
From a student’s point of view, they went something like this:
I saw an ad in the university, on hh or I learned from a friend.
Applied. Sent a qualifying task. It is necessary to make some trifle, like a table on vanilla js. It turned out not so easy. Do not have time to finish on time. Threw off. I am waiting.
Invited to a technical interview. Stupidly. The first in life. I heard terrible things about them.
They asked some kind of garbage about prototypes, closures, classes, op. It seems they won't take me.
Called two days later. Accepted. They said where and when. Looking forward to.
Began. The first lesson was just an acquaintance.
Then there were lecture parts and dz. We broke into teams, gave an educational project in User Story format. The guys in the team, it seems, are good, we are doing a project, they say we will hold a demo at the end. And after him some kind of exam in an interview format.
So it took three weeks. Tomorrow we have a demo. I wrote quite a lot of code, I had to spend a lot of time. Now I understand js myself better. The guys also tried. I think the demo will go well, we will talk about the project in turn.
The demo was pretty good. Of course, a lot has not been completed, and other teams, it seems, have done more. But I am pleased. Soon the exam. Here, of course, I doubt it. Judging by the interview before the internship, I still do not know anything. Fortunately there are questions for self-preparation and recommended literature.
Oh, the exam was almost exactly the same as before the internship. But it was easier. I will wait for the result.
Strange, but I was invited to my first real meeting. Worried.
The interview was easier than the exam. I think I was lucky. But the feedback was not given. Worried. It seems that something was wrong and made a lot of mistakes.
Today called. All is well, gave an offer. Very glad. Now I am a developer.
If strictly, cynically and on paper, then it looked like this:
- Qualifying task
- Technical interview (which I hate)
- Waiting for results
- Training with lecture classes, teaming and joint project execution.
- Team project demo
- Exam (again technical interview)
- Waiting for results
- Interview in a real project and/or getting an offer
Not so bad if you do not think about it. But if you take a closer look, you can see that 2/3 of the conceptual plan was allotted for the knowledge test. Knowing many developers who are loyal to business ideas, I’m not sure that it’s obvious to everyone why this sucks.
Internship is a crutch.Do not teach, and vytsepit insecure beginners, drive the basics to them and sell them as full-fledged specialists or use them for routine tasks. Any sufficiently qualified developer is able to see those who are likely to pass a security team and will be able to give a result at minimum wages during the first time. And given the generally low hard skill in the industry, you can even take a random student of a 3+ course and in this almost one month period teach him to be at the level of a “typical” coder. No one will notice the substitution and everyone will be happy. Hell no.
In fact, with an internship, I condemn my students to torment. After it begins a clause that is not spoken of:
First day. Hell, I can't even set up the environment. Full of documentation, certificates, services.
I think I do not understand anything. Here is a huge project and a lot of code. Some violations are common practices.
I can not realize a small task for the second day. I have nothing to say on the stand-up.
Everything only gets worse. I already have five open tasks. I tried to switch between them, but only worse.
Probably, they will fire me, I have been doing nothing for almost a month. Ask no one. They are busy with their tasks. And the lead will think I'm stupid.
Maybe I'm not a developer at all?
They will have to figure it out on the project themselves. Nobody will help them. At best, they will occasionally kick and poke mistakes. Conscience will devour them from the inside for failures: missed deadlines, bugs. They will be shy to ask senior specialists for fear of showing their low qualifications. It would seem that? Yes, and to hell with them, they will suffer, they will fill the cones and may join the work. Morally depressed workhorses.
Low qualification - it does not matter, complete their education. Burn at work - nothing, they will cope. Business wants "here and now", highly specialized, able to pass an interview of unskilled specialists. Everything will be done, would be a good person.
After that, we get a terrible architecture, weird bad working code, poor software. This is half the trouble. We get a lot of professionals who are disappointed in the industry. Blind, losing thirst for knowledge, developers will not bring new practices, new cool tools. They will not bring new developers, they will not be able or unwilling to mentor them. This will ultimately lead to stagnation, devaluation of the notion of “developer”, and then a decrease in the overall level of sills in the industry.
And the industry is now in a very strange state: on the one hand, there is no task in the world where developers would not be useful. On the other hand, the classical education system does not keep up with the passage of time. Future specialists have been studying for five years to get drunk and hang out at the university, then quickly code on courses, internships or even at home with a book. People are trained as recruits in a world war. Tjap-lyap and in the warmup to the front, neutralize the mines on foot.
Experienced developers who are already comfortably settled in the industry do not care about all this, I know. At best, their hut is from the edge, at worst - contempt for newcomers who cannot learn anything normally, although “I could”. With the “smog” of most people I would argue.
For those who are important to teach newbies, I have a way out, but you will not like it. The best solution is not accelerated courses and one-month internships, but long-term mentoring.
The first thing to understand is work. You want to call yourself a mentor, you have to herachit, at least a year with one person. You need to clearly indicate that he owns your time and attention so that he is not afraid to go to you. It is necessary to carefully check everything that you say, because at first your words will be considered the ultimate truth. In the review code, you need to very carefully balance the quality and feelings of the person who wrote this code.
On the one hand, any cant in the code that you did not point to taught a person to do wrong. On the other - a bunch of quibbles discourage the desire to learn.
That is why signori should teach: only to scratch your impostor syndrome a thousand times, you will understand how to deal with the emerging impostor syndrome in your student.
I was engaged in training both on projects and beyond, and only here the result is excellent. They are purposeful, thoughtful developers who can distinguish between crap and honey. The only thing that does not allow learning this way is always time.
Mentoring takes tons of time, work and personal. Alone, you can’t even stretch the three joons. It is very difficult. It is necessary to think over everything for several months in advance. We must find a crowd of seniors that will agree to become mentors for projects. Learning is not profitable. Developers do not want problems and merge, although only they are able to change something. One day, a friend of mine took patronage over the juna-middle and prokakapilsya. Strongly prokakapilsya. “Jun doesn't understand anything. June is stupid and does everything wrong. June infuriates. June goes to the forest, and I will go to earn money, it is not profitable for me to spend time on it. If he himself cannot do anything, then I will not help here either. ” This is happening everywhere.
But we must not whine, that everything happened this way, not to grumble at juny-stupid, and not to write on the Internet that programs for “developing the skill of an employee” are chatter and fiction. We must go and persuade the business not to plug the holes of hundreds of interns, but to invest in the training of ten June. Then take at least one and spend, spend, spend your time on it. To suffer, to suffer and to sacrifice themselves, until the cumbersome education system returns to normal.
Is it worth it? I know one thing for sure - you do not want to give everything to the fullest, do not try to teach people. These are not your toys, you are fully responsible for them, and for all the projects they will do. Carrying in front of you.