
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 studying 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 the point of view of the student, they went something like this:
, hh .
. . - , js. . . . .
. . . .
- , , , . .
. . . .
. — .
. , User Story. , , , , . - .
. . , . js. . , , .
. , , . . . , , . , . .
, . . .
, . .
, . , . . . , - .
. , . . .
If strictly, cynically and on paper, it looked like this:
- Qualifying task
- Technical interview (which I hate)
- Waiting for the result
- Training with lectures, division into teams and joint implementation of the project.
- Team demo project
- Exam (technical interview again)
- Waiting for the result
- 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 am not sure that it is 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 the point about which they do not say:
. , . , , .
, . . .
. .
. . , .
, , . . . , .
?
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 suppressed 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 applied, would be a good man.
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, the devaluation of the notion of “developer”, and then a decrease in the overall level of skills 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”. I would argue with the “smog” of most people.
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 cavils will 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 comes back 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.