Software projects are way more volatile than they used to be. Requirements are continuously changing, technology is always evolving, and team turnover is getting higher.
It’s not uncommon to see people come and go from a project. There are certainly lots of reasons why this happens. Some are avoidable, sure. But some aren’t.
Regardless of why people come and go and why teams change so much during the lifetime of a project, it’s important to have some strategies in place to make sure that changes have minimal impact on the project’s success.
In this particular subject, as in many others, companies and their software development teams have a lot to learn from the open-source community.
One of the key challenges open-source projects face is having a lower barrier to entry for new maintainers. People should be able to, with minimal effort, understand the project, its “ways” and how to contribute to it, making themselves useful as quickly and easily as possible. With that challenge in mind, there are some common practices among successful open-source projects that you should keep in mind during the onboarding process.
The roadmap is an important part of the project repository. Along with the project description, this roadmap will help new team members quickly gain an idea of the project objectives.
In this document, we can add a list of features that we “Will,” ”Won’t,” or ”Might Do,” and the reasons behind each decision. That way we won’t have to go through the same discussions each time the team welcomes a new member.
If you are starting your project from scratch, you can find a roadmap template here that may be useful.
Setting up a complex development environment can be expensive. All the time spent on it is time the developer is not using to add value to the project itself. This cost is even higher when another team member needs to step in and help the new developer with the task.
The setup of the development environment should not take days or weeks, it should take just a few hours—if not minutes.
The process should be as scripted and automated as possible. New team members should be able to set up their dev environments with nothing but the documentation. If they need some assistance because that same documentation is outdated or is not clear enough… Well, the new team member just got the opportunity to make their first contribution to the project and update the documentation and the setup scripts, if needed.
Good code should be predictable and easy to read. Conventions are extremely important. The team should agree on the code conventions to use and make sure they are enforced in some automated way. If the formatting and naming conventions are consistent, the codebase will be a lot easier to read and understand and therefore new contributions will be easier to make and to review. Linters (some examples on GitHub) and Static Code Analysis tools (find G2’s top 10 here) are crucial to help the project stay on track in terms of programming conventions and best practices.
Testing should be automated and integrated into the CI/CD process. It should be relatively easy to write a new test.
Tests play a very important role in helping new team members. Not only do they provide a sense of safety while changing existing code or adding new features but they can also be key to understanding the codebase structure.
Meaningful and easy-to-write tests will be good for all team members trying to add value to the project, but they can be even more relevant in the guidance of a new team member while developing a new feature or fixing several issues.
The way issues are written and managed plays a very important role in lowering the barriers to entry for new team members. The issues should be as clear as possible and have all the necessary information in them. Templates are helpful since everyone will know what info needs to be provided and where to find the relevant information to solve the issue or to add functionality to the system.
Useful information to include in the issues would be things like a description of the expected and the actual behavior along with the steps taken to reproduce that behavior.
Issue discussions should be available for all team members and their history should be kept. This will help everyone stay on the same page and provide valuable context for a new team member trying to solve a bug or trying to understand the reasons behind a design or implementation decisions.
Issue and task tracking systems can help a lot here since they normally allow team members to add comments and extra information, helping build a timeline and relevant documentation for each issue.
Wherever possible, having issues that are very simple to solve and marking them with a “good-first-issue” label (or some kind of variation) can be extremely valuable for onboarding new members. These issues will help a new team member get acquainted with the project while simultaneously adding value to it.
If you put these 7 best practices in place, you will be able to accelerate your onboarding process.
At Growin, we’ve experienced incredible improvements and achieved significant boosts in our efficiency. The onboarding of new team members tends to be smoother in projects where these ideas are taken into consideration and guide the decision-making process. New developers start to add value to the project faster with bigger impacts—not only on the team’s efficiency but also on the motivation of everyone involved, since they minimize the amount of time spent on tasks perceived as less relevant towards the end goal.
By lowering the barriers to entry and keeping things simple, predictable, and well-defined, new team members are able to forget about the process and focus on doing what they truly love: crafting great software!
Have you experienced some trouble with onboarding your newcomers? Tell us more so that we can connect with you and share some tips.