Most companies struggle to find senior developers because there is a lack of training and mentorship for junior developers.
Another problem is that companies do not know the best way to develop their team.
This article will be a practical guide on how to train your developers to reach a senior level.
Onboarding is a crucial part of integrating a new developer into a team.
Even if the developer is a senior, it needs proper onboarding and proper training.
At Entria we have a docusaurus documentation that helps developers set up their environment to get up and running in 1/2 days.
We also make the new developer have a call with other developers on the team to know each other and help them navigate our codebase.
You need to show and provide a safe environment, where developers can ask any questions (there are no dumb questions), and feel safe to make mistakes.
Asking as many questions as needed and making mistakes is the fastest and best way to learn something new.
Before throwing issues to new developers in your team, you should provide enough context and explain its importance for the company/product.
Motivation contributes to meaningful work, enabling the developer to see how something fits in the whole picture and the long-run directions of the product.
In the beginning, developers won't know that they are/will be blocked soon, so your task as a manager is to check if anybody is blocked and help them.
You should check if issues are well written and if the developer understands them well.
Also check if something is missing like API, design, or business logic decision.
Ask the developer to explain what he/she understands about the issue and how he/she would tackle it.
Break complex issues into more manageable such as checklists and smaller issues.
Start giving easy tasks for new developers to get used to the codebase and business logic.
You should help them a lot, in the beginning, even a bit of micromanagement. They will struggle to do the task but they won't tell you.
As the developer progress, increase the difficulty of the task, providing less detail and context, let him/her fill it.
Show the problem and let the developer provide the solution to it.
The task should not be so easy, not so hard. An easy task will demotivate spending time with that. And a hard task will demotivate of how even to start it
You should review all the work created by the developers.
Reviewing each pull request will provide the necessary feedback to the developer to improve their code. It will also ensure the consistency of the codebase. It can catch bugs early on. It can teach the best way to solve a problem. It also helps you to understand what everyone is working on.
Everybody on the team should review every pull request. This helps spread knowledge.
Developer experience is essential to make sure all developers have high productivity.
Invest in good computers (mac M1 is the best out there) for your developers so they don't lose time waiting for the computer to unfreeze.
Discuss and improve the use of the terminal, IDE, and daily workflows with your team. Tweak IDE to provide fast feedback loop of lint and types errors.
Make build and rebuild faster to provide a fast feedback loop while developing. React Fast Refresh is killer for this.
Automate as much as possible. CI/CD to run lint, prettier, tests, type checking, and deploy to staging on every commit.
Make things easy. Adding a new test or i18n should be as easy and fast as doing new code.
One on ones are meetings held with the developer and his/her manager to talk about:
what's been going well
what's not going well
to ask for opportunities
to talk about career
to ask and give feedback
You need to teach developers about ownership.
They should own the issues, bugs, and features they are working on.
They need to be responsible for them.
Let them make mistakes and deal with the good and bad consequences of their decisions.
Make them feel Skin in the Game.
It is easy to start a task, but it is really hard to finish one.
The last 10% of a task will take more 90% of work to finish.
It is all about tiny details that matter.
Help new devs finish their tasks.
A task is only finished when the task is in production, tested, without bugs, and with a happy customer.
Training is hard and it should be a continuous process. This article is just a starting point. I recommend you implement and think about the discussed topics. It will help you to raise a better work environment.
Comment which practices you are adopting in your company to improve the development of people.