Juniors are sponges
The joys and responsibilities of mentoring in tech - lessons learned from both sides of the desk
Junior engineers are like babies. They learn super fast. Most of them are eager to start working on something real, and they will try to get all the knowledge they can from you.
A junior Software engineer is probably the best kind of apprentice. They are old enough to understand how things work, they are studying or have already studied so they know the value of reading documentation (or they should at least :) ) and most importantly, they have chosen this profession (in most cases at least). You're not trying to teach mathematics to an artistic kid or literature to a nerd. The person will be engaged.
It is important to treat juniors like colleagues.
Avoid being condescending and overexplaining. Nobody likes that. Give direction and challenge the person. When giving a task to a junior, you should remember to set the bar low enough to be reachable and high enough to be a real challenge. Encourage the junior to try to find a solution using whatever tools are at their disposal, and when they present the solution, challenge it and have them explain it. It doesn't matter if it's new to you also. What you are trying to understand is if the person is learning how to think systematically. It's not always the case, but often juniors are also young and in their first work experience. In this case, there's the possibility they've never dealt with serious deadlines and production-related work. In my experience, in these cases I observed some lack of sensitivity regarding time-critical tasks and production environment. All normal, until you are exposed to something it is difficult to understand. Guidance here is key. Remind the person of the importance of delivering on time and that there are consequences. Who took all the deadlines seriously in school? :)
Regarding production, there are two possible scenarios. The youngster takes it lightly, without realizing that damage can be made, or the opposite - the junior is paralyzed at the idea of breaking something. In both cases, closer guidance, explaining the situation, and showing them that you are there to help does the trick.
If you are appointed as official supervisor of a junior or a student, plan time to spend with the person and collect feedback. It is of paramount importance to have honest opinions from them to understand if your way of guiding is good and if the person feels they're on the right path. It is difficult to give career advice to people who don't have much experience, but some general direction reminders are normally appreciated.
Being a mentor is a big responsibility.
Juniors will get your best and worst side. I always loved working with juniors, but I need to admit I was not always good at it, at least not in every aspect.
I tend to discuss loudly and passionately about stuff, and honestly in my youth, I had a big mouth. One of the first kids I worked with really liked working with me because I was treating them like a colleague and not like a learning kid, and also because I was challenging them with interesting tasks. The problem was my relationship with my superior at the time. We were arguing a lot and having animated discussions on a weekly basis. At the time, I was having some personal issues, and I couldn't help but let them leak into my professional life. I had great relationships with all my other colleagues, but the situation with my superior frustrated me to an unhealthy level. Going back to the junior I was working with - I saw them grow and take more and more responsibility, things that I like and admire, but I also saw them giving sharp answers and being way too direct with other colleagues. I soon realized that was my fault.
I was trying to mentor them to become a good engineer and to take responsibility, but my bad behavior at the time got absorbed by them like it was the norm.
I drastically toned down my temper and got other people involved in their mentorship.
It was a lesson for me. I like to work with youngsters, but at the time I didn't realize that there is more than the technical aspects that a junior can absorb from you.
Be there.
If a junior comes to ask for your help, be there. This is valid for all colleagues when you can, but it is of utmost importance with juniors. It's easy for a novice to get demoralized when getting stuck, and having no support can only exacerbate this feeling. The question "Do you have a minute?" should in the great majority of cases be answered with a loud YES. Don't let the illusion of hyper-focus and productivity get in the middle. If you need to deal with less experienced engineers, it is your responsibility as a senior and a mentor to be available.
Being there doesn't mean pre-chewing their food. You are a senior colleague, not their mom. Give direction and suggest ideas, don't do their work - nobody will gain from that.
What you can learn.
Fresh minds are fast and snappy. A person in their first experience who feels challenged and supported can bring a breath of fresh air to a team. It is important to listen and to let them express their ideas. I am a big advocate of "pushing" people to speak up, and juniors are no exception.
All the memes about junior developers aside, often new developers are really strong technically, or at least they can use their tools really well. I learned a lot of Mac, Windows, and editor tricks from juniors. They don't have the bias of experience with new technologies and tools. This is something we old bastard seniors should try to remember, but experience inherently creates a bias.
Another amazing aspect I saw in younger juniors is courage. They are reckless at times, but in most cases, the lack of bad work experience gives them an edge - this is something else that we older folks should remember.
As I mentioned before, if you deal with a junior, you will sooner or later end up in the position of guiding them without being an expert on the topic. This can be seen as an opportunity; don't be afraid of showing your lack of knowledge, instead show the junior how you approach a problem that you cannot resolve yet. You will be forced to think out loud and to decompose the problem without skipping steps. This is known to be an exceptional learning path. Both learn something and the whole team gets better.
Mentorship is a big part of leadership for me. You cannot lead a team if you are not willing to be a mentor for the less experienced. This doesn't mean you need to always know more than anyone, but rather that you should be available.
I think that mentoring is probably the most rewarding experience I had in my career. At the moment, I'm working with a team of all experts, but I hope I can go back to mentoring soon enough. Speaking of this, I'm available on different platforms for advice and opinions if needed (links here). I'm also interested in your experience as a junior and as a mentor. If you think you can add to it, please write it in the comment section.
Great article.
A good junior engineer can also be a catalyst for a senior to learn more stuff.