Why Talented Juniors are so important for your software team
Another excerpt from my up and coming book of Building Software Teams.
Talented Juniors (TJs) are one of the best long-term investment your company can make. Without them, your organisation will grow stale and be continually expending great cost on higher priced programmers. People often don't realise that Juniors can keep up to pace with seniors devs if you train them in specific tasks. TJs can even be more productive than seniors due to their energy, vigour, freshness and desire to impress.
The return on investment (ROI) almost comes back immediately to the company as more highly paid developers can leverage TJs to do the easier tasks while they focus on the tasks only they can do.
Mentoring Principles
Let's move on to principles that can help you mentor Talented Juniors. I hope this will help ease your frustration if you've tried to mentor people and not got them to your required standards in the time you thought was sufficient.
Avoiding institutional blindness
My definition of institutional blindness applied to learning is when your knowledge of the subject is so vast and native, that you cannot perceive how someone else can't immediately grasp it. Its when you falsely assume that since the topic is so clear to you, then it must also be apparent to the person you are teaching. The danger is that you will move ahead with advanced concepts when your student can't appreciate them due to not understanding the previous and necessary parts. In this situation, you are wasting much of your own time and making your student feel like they are not progressing fast enough.
Regular questioning and early practicals
In the learning process, it's essential to have a feedback loop with your student, especially when its a new student; you are still learning how they learn. I often ask them questions about the subject as I teach and wait for them to show understanding before processing further. Often I will augment this questioning by asking them to demonstrate their knowledge and skills with a practical task. I usually let the student go as far as they can, even if I know they won't manage the task. They will get stuck at a point and not know what to do, so I show them the steps again, and then their memory clicks into gear. Once you repeat this a few times, you can be confident that they have learned the principles. However, that is just the first stage; you have to tell them to repeat the tasks on their own. Otherwise, they just won't remember how to accomplish the tasks. Once they are confident with their new skills, you can let them loose on the companies codebase to add further value. This combined with a rigorous peer review process and continuous integration, there is very little that can go wrong.
A practical example
After giving the student a demonstration about how to use Git, I ask them about what is the reason we use Git in the first place. If I get a sensible answer, I will then ask them to make changes to a file and push them to GitHub. They will usually require me to go over the steps to commit to GitHub covered in the teaching session until they can complex the exercise unsupervised so that the skills are committed to memory long term.
When teaching how to use npm I often have to repeatedly explain how NodeJS works. They often forget to run things like npm install
and fail to realise that npm start
is the same thing as npm run start
. When combing with more advanced concepts like running a testing framework like Nightwatch or a tool like Ember-CLI, repetition is the key to learning.
Here are a few of examples from my own experience:
I was working on an Ember application for a large UK company that was using the CSS framework called Bootstrap. I had the opportunity to mentor a junior (a new graduate) that came to work for the company and to get involved with the project with me. She had some basic HTML and CSS experience, and I spent a few minutes explaining the concepts of responsive web design with Bootstrap. I then went on to show how Handlebars templates worked, and how to run an Ember application. The next day my student was able to start updating the Handlebars templates and updating tickets by checking in code to git. Over the next two days, I introduced her to Ember controllers and validations. That, combined with her basic knowledge of JavaScript meant that she could start tackling simple problems and features in the codebase and free me up with the more challenging aspects. So in this situation, I was saving the company money as I was a senior developer that had duplicated some of my knowledge so that the junior was able to tackle a significant proportion of my work.
In another client, I was asked by the team to mentor a junior and teach him how to use JavaScript to improve their usage of an analytics platform. I wasn't given any extra time to tutor him from my existing team, but because I learned to be efficient at teaching I voluntary took the task. Mentoring is such fun that I'm willing to put in that extra effort to help the client with the ROI. Within about a week he had learnt about 60% of what I had to teach him over the four months he was in the same office for me. He picked up the advice I give him so quickly that he was saving the company thousands of pounds by not having to involve my team with the expensive seniors to write custom code
One of my developers I have been mentoring has already done work for my UK clients. He even has talents I don't have so I can leverage those to increase my client offerings. I can steer his learning and offer technical input and direction when needed. The investment I put into his life is not only satisfying personally but contributes to my business profitability. Its a win-win relationship for both parties.
In summary
If you have the patience and fortitude to realise the potential of investing in TJs, you will be greatly rewarded. You can see how quickly time spent mentoring can immediately bring ROI for yourself and for companies that encourage it.
Thank you for your post. :) I have voted for you: 🎁! To call me just write @contentvoter in a comment.
Great read. It's always good to expose juniors to the basics and then gradually move them up to the real work. As you mentioned about using Git , there is a one good project that i found recently in github called First Contributions where newbies can get a exposure of how Git and Github works.They can practice there and once they confident enough then moving them in to the real working branch. Same way there should be a practice project (Playgrounds ) :-) which have some resemblance of the actual project where newcomers can get some hands on practice.
many thx as always for your valuable contributions, respect and peace!
I am from Indonesia follow me @yasir123
no