I have a student. At the beginning of his path, I helped him to comprehend our craft. Then he got into a quite big company. What they did to him...
Nothing! Literally -- nothing. And that's the point.
When my student told me about what's happening in his job, I couldn't take it anymore and decided to write this article. I hope to help at least some people with it.
Let's look at a couple of problems. Such situations happen not only in our industry. You can find them in any place where they hire interns/beginners.
Junior worked in a different industry before. It took a long time to decide on a career switch. He learned programming in his spare time. Then he put all stakes on it, quit his old job, and spent several months learning non-stop, living on saved money. Finally, he's got a new job as an intern programmer, but with a salary much less than he had before.
During the year Junior's
mentors curators changed all the time. They dumbly threw him from one to another, nobody wanted to take care of him.
They didn't give any meaningful task. Just dumped on him some weird shit, which nobody wanted to deal with.
Later even those shitty tasks came to an end. They said to him to sit and read something, learn yourself.
Then they let him work with some "specific" product. You know, this kind of corporate product which has a really tiny niche. Such experience means nothing on the job market. Nobody else had either desire or experience with it. So he couldn't even ask anybody to help out.
It was a first programmer job for him, so he couldn't evaluate whether such a situation is normal or not. Junior was afraid that if he couldn't figure out something, they would fire him. It depressed him, he had a feeling that he's wasting time, but there's nothing to do about that.
He shared it with me, and I recommended to change the job. And he did it.
Junior liked the new job. They assigned a specific mentor, which gave appropriate tasks, kept an eye on their status, taught a bit. Junior started to improve his skills.
A couple of months later, the mentor started to behave strangely. In such moments there was a feeling of some personal dislike from his side.
Just look at the dialog below:
- Junior: Mentor, in regards of the task XXX-413, you said: "Change: implement dialog presentation in class RestoreDbAction" - I didn't get it, What do you mean by "implement"? Now I just made that it calls RestoreDbAction.Confirm instead of IDialogDisplay.Show. Everything else I leave as is, am I right or I missed something?
- Mentor: It took so long for you to understand. Got it finally?
- Junior: ... so I got it right?
- Mentor: What?
- Junior: I needed to use Action.Confirm?
- Mentor: Of course
- Mentor: Why didn't you get it right away? Any questions??
- Mentor: Just as I expected, Junior, you didn't get ANYTHING again. I'm just surprised at how you're slow-witted..... (sad) I returned the task back to you
- Junior: But I asked if I got it right
- Mentor: I also asked. 3 times. And you didn't get it anyway
Let's see what's the point in growing juniors?
Junior is an investment in the future. Long-term project if you want.
The company gives knowledge and experience, and beginner specialist starts returning investments in the form of completed tasks. So it's like an effective symbiosis.
Junior is ready to write code just for fun. But if you pay money for it -- just perfect.
Faster Junior starts completing real tasks, bring value, more profitable it would be for a company.
Startups rarely hire juniors. Because they need an instant result. For a startup, speed is the most important aspect. Large companies are different. They can afford a slower pace.
There are two big points to hire juniors:
- Cheap workforce: they do not ask much. And if you trained your junior quickly, then you get a fair specialist which brings value, familiar with the company's processes, and does not cost much.
- Predictable source of advanced specialists. Hiring is always a pain. Searching for a middle developer can take quite a time and effort. Even if you managed to get one through the interview, you can't predict how he will show himself. In case of a mistake, the company suffers losses.
You can hire a bunch of juniors instead. In this case, the probability to find a good fit is much higher. Good employer spots juniors which grew enough, give them a raise and motivate for further growth.
So the company gets a new grown developer, with known performance, familiar with processes, and so on. It's a win-win situation.
If such an approach is arranged in a proper pipeline, then the company can grow safely and stably.
What can we understand from problem #1? The company hired a junior, though nobody could (or want) to teach him. He wanted to learn. Chased any opportunity to do that.
But the employer didn't care about beginner developers. Our Junior didn't bring any value to the company, didn't grow as professional, yet got his salary. It's a lose-lose situation.
Juniors need constant attention and supervision. They are like children who are learning to walk. At first, they are clumsy, can't take a step. But every time they get better in it. One day they walk on their own, confidently.
What could happen if you left them alone, while they're learning? Something bad will likely happen. They could get hurt, crawl somewhere they shouldn't, even break something. And this is exactly what we have in problem #1.
The first stage of junior's training is the toughest one. It requires a lot of time, emotional efforts, and patience. A company needs to understand, the one who mentors will work slower. But in the long term, it will pay off.
If you're not ready for such cost, you should not hire juniors. Don't waste the company's resources and people's time. Please.
That's it with problem #1, let's move on to problem #2.
In dialog from the problem #2 mentor is the one who's not right. Junior is not qualified enough to formalize a task, find out missing requirements, design a decent solution, etc.
The mentor is the only one to blame that junior didn't get the task right. But instead of fixing this situation he just passed the buck.
Mentor has to detail tasks as much as possible. Alternatively, if you want a junior to think more, you can just give a clue of the right direction. But you shouldn't make an "Intuition" show out of it.
It's not necessary to give a task solution right away, but the task description should be detailed enough, to exclude any ambiguity.
If you have any doubts, talk with Junior again and make sure, that you both are on the same page. And one more thing: you should talk, not write in the chat. It helps a lot!
Oh, my rant is going to be long for this one. Because such examples give me a butthurt.
In the dialog above mentor was really rude and unprofessional with Junior. I can guess that:
- The mentor has a personal dislike for Junior. It's hard to tell from just one dialog, but Junior said that he had exactly such a feeling. Should I say that it's absolutely unacceptable?
- The mentor doesn't want to do mentoring. It might sound silly, but not everyone wants to do that. A company should keep an eye on who's training juniors. If some person doesn't like such a job, nothing good can get out of it.
- The mentor is having a hard time doing his own tasks, not to speak of the junior. No matter how difficult it is, you should not transfer your problems, feelings to others. It's unprofessional at least, but, just humanly, it's disgusting. Management has to understand that mentoring takes a lot of time and plan accordingly, allocating a fixed buffer of time in the mentor's schedule.
- The mentor just can't teach. A good developer -- not necessarily a good teacher. Choosing the right words is worth a lot. What result did the mentor expect? That Junior will think "Oh, what a retard I am, I will work on it"? Such words may discourage, raise doubts. Then people complain about impostor syndrome. Words can kill any desire to ask questions and talk with teammates, because of fear. But the worst part is that a person who put everything on a table may turn around and lose everything. There's nothing except dumb assertion "you're stupid, I'm a star". We've all been newbies. Remember how did your colleagues treat you? Did they support you? How did you feel?
None of the options may be an excuse for such a tone of voice. It's totally unacceptable to talk that way with your subordinates, colleagues. Assert and humiliate others, taking advantage of your position. Nobody has such rights.
If the mentor would use such a tone of voice with a professional of the same level or higher, the conversation would be absolutely different. But newbie closes his eyes on it. He just keeps all the feelings inside. It won't lead to anything good.
You can't improve your skills just by doing the same tasks over and over again. Yes, it's very convenient to pass boring tasks to someone else. But you shouldn't treat newbies as your slaves. Junior has to train thinking. He needs challenges.
Try to mix in interesting tasks to routine. Remember, things which are boring to you, might be something new for junior. It's important to keep tasks diverse. Education will go faster that way.
Remember, there are two tools. Often people miss the second one: positive feedback. Though there's no universal approach for every person. But usually, everybody likes to get praise. And it can be a great stimulus.
Mentors who are just started to train people often focus attention on mistakes only. And never say or point out where newbie was good at.
Everything should be in balance. Feedback should be objective and balanced as well.
We learn because of mistakes. When Junior argues with you, you shouldn't take it personally. If you feel annoyed -- it's your ego.
You shouldn't just say "Do like this", without any explanation why -- newbie won't learning anything from that.
Shut your ego down somewhere. Let newbie check his hypothesis or idea. Then he'll have a perfect example to learn from. You can go through every mistake and objectively tell what exactly was wrong, why, and how to do it right.
Junior will compare "before" and "after", make conclusions. You'll see how faster they grow with such an approach.
Let's wrap it up.
Education -- is not an easy task. Management should take into account that it will consume a lot of your mentor's time, thus workload should be adjusted accordingly. It should be a part of a company's processes.
Not everyone can teach. Assign a mentor role only to those who want it and who's able to.
Juniors are also humans. They are so unconfident. You should not take advantage of your status and cultivate complexes in them. Remember yourself in their place and give all support their need.
The hiring of juniors is beneficial only if the education process goes fast and effective. Interaction and communication with juniors is different than with colleagues of your level. You should keep it in mind and follow the tips.
If you have a person in your company that fits the role of a mentor, give him or her an opportunity. It's definitely worth it.