You are the coach for several juniors developers. What practices do you use to improve them?
The techniques that can be used could differ based on a lot of factors including the experience of the junior or how much time do they have for training, but let’s see some general tips that can be used.
Teach them how to teach themselves
For a junior developer often the biggest roadblock is not knowing where to find the required information. Developers should be already familiar with the use of Google and even know about some commonly used sites like StackOverflow. However, it might not always be obvious how to search for the required information, what keywords to use, which information sources are the best, and which should be avoided. Giving some tips on these topics, helping in some concrete cases can show them the right direction.
Point them in the right direction
In case of a question or issue, don’t always tell them the exact solution, but rather point them into the right direction. Of course, it depends on the deadlines how far you can go with this mindset.
Encourage collaboration
If there are more of them, encourage collaboration between them. Tell them to share their ideas and be ready to help each other whenever needed.
Be available
Because their lack of experience there will be roadblocks where they would be stuck for a long time without outside help. Make sure that you are available as much as possible and let them know when you are busy (e.g. in a meeting).
Be prepared to be interrupted often. Most good leaders can free up time for questions usually immediately or in a few minutes.
Delegate simple questions
Developers have different levels of skills. Each has areas where he is more knowledgeable than others, even if they are junior. If it is probable that another developer can help out in a question, delegate it to him. This way you save time and encourage collaboration as well.
Project knowledge bases
If they are already on a project, share information about project knowledge bases with them as early as possible. Call their attention to the most useful pages/articles for starting out and also mention what information should be avoided because it’s outdated (this happens in every project…).
Do code reviews regularly
Inexperienced developers can make mistakes that require a big part of the solution to be rewritten. It’s best if these turn out as soon as possible and not after 5 days of work. Do code reviews as often as it makes sense.
Involve everyone in the code reviews
In the beginning, probably you will be the one who is giving the most feedback on their code reviews but make sure that they check each other’s code as well to learn from their mistakes and incorporate new ideas to their code.
Always explain
If they did something the wrong way, always explain to them why is your proposed solution is better, what are the advantages of it. Try not to make comments on code reviews too short. You may understand each other from short sentences with someone you have been working with for a long time, but for a new developer, a more thorough explanation can prevent further questions.
You are the technical lead on a new project and got only junior co-workers. What kind of problems do you see? How do you handle them?
Basically, you can use some of the ideas above to improve their skillset, but here are some sections from the problems perspective.
Missing experience
They will have limited experience, so they will need more time to implement tasks. Make sure you take this into account when estimating the length of the tasks. If you give ample time to implement a good solution and learn in the meantime, their skills will improve rapidly.
Organize knowledge transfer meetings if possible.
Missing domain knowledge
Refer them to good documentation and make sure that they understand what they are working on.
Organize knowledge transfer meetings if possible.
Not understanding client requests
We all know that clients don’t always express themselves clearly. Call the attention of the new guys to always ask if something is not clear in the requirements because wasting time on a different implementation can be hurt the project.
Unfamiliarity with processes
At every project, there are some processes that everyone needs to follow. Like what branching strategy to use, or how to handle tickets (which state means what, etc.). Be sure to collect these processes and give the new colleagues a detailed overview of them as soon as possible. It’s best to have it in written form as well, where they can get a refresher is something is not clear.
Review their code thoroughly
You are responsible for making sure that the code committed is in a good shape. Spend extra time on the code reviews, even try out the functionalities manually if needed. Double check if tests are implemented correctly.
Hitting blockers
Make sure to check regularly how they are progressing. Tell them to ask for help if they are blocked on something.
Going on vacation
If you are going on vacation, there will be no one to provide leadership. In the beginning of the project be sure not to go on longer vacations. Shorter ones are much easier to survive without you. Determine the most fitting person to be your deputy and teach them how to lead the team when you are away.
How can you build a team from just junior developers?
If you absolutely must build a team from just juniors, then check the above problems you can face and how to solve them.
Otherwise, if possible try to do some negotiation with other projects/teams if they are able to substitute a team member with a junior guy and give you a more experienced developer. For a team that is going on for a long period of time, getting one new colleague is not that big of a deal because the existing ones can get him up to speed really fast.