Introducing a new developer to an existing project might be a long and unproductive process. Because of that, it is wise to approach this challenge with some kind of plan. In this article, I will focus on the four key ingredients of adding a new team member:
- the new developer
- the team
- the client
- the project
Please note that I am writing this article from the perspective of a team leader that works in a software development house. The dynamics of my position brings a lot of opportunities to be introduced to a new project created by external companies and to introduce new developers to the already maintainable applications.
Depending from the experience of the new team member, starting to work on a new project might be both stressful and challenging.
To release tension you can simply** ensure that everything will be alright.** It might sound silly but a few words of encouragement cannot hurt anyone and shows that you actually care.
You should spend some time and explain in detail the role a new team member is going to fulfill in your team. It is crucial to make sure that you are on the same page when it comes to your expectations.
If a person is not experienced and the project is gigantic you can be honest and say straight away that you don’t expect much at the beginning. You can agree on some ‘special treatment’ period when the noobie can learn the platform without resolving any problematic features.
When it comes to creating your application more approachable you can guide through how the application works and show the most interesting parts of the codebase. But please make sure that new developer understands business goals and contexts behind the application as well as how it works. And whenever possible, do a pair programming. In my opinion, pair programming is a marvelous way of helping others find themselves in a new application.
You can also focus on the tasks you assign to the new developer. A small task can be a great way to start, but as soon as possible, you can give him something bigger and more complex. Finishing a hard task on a new system brings a lot of confidence and builds the feeling of ownership.
Not only the new developer needs attention, your team also demands it. Bringing someone new to the team might raise a lot of questions. Why do we need him/her? Is something wrong? Is client not happy with our performance? Is a substitution planned? Because of that, it is good to have a team meeting before we actually add someone new. During that meeting, you can explain the reasoning and answer all the burning questions that your team may have.
Remember that you can always ask your team members for help in introducing the noobie to the project. I highly encourage to schedule a pair programming session with each team member. It is a fantastic way to build connections and share the knowledge about the practices you follow on this particular project.
There is a great chance that the client (owner of the application) might have an impression that more people equals more tasks done. While it is true after some time, at the beginning the productivity of your team will not change. In some cases, it might actually drop a little because of the overhead a new person adds to the project. Someone has to invest time in that person and because of that, the overall productivity might be lower. Make sure that the client knows and understands that.
I have seen a lot of projects throughout the 11 years of my career. Not all of them were easy to install and setup. To make sure that it is not the case on your project be sure that your documentation is up to date (and easy to follow). You should also invest some time and prepare seeds that actually work (writing specs for seeds is really helpful to make that happen).
The most essential thing that helps to introduce a new developer to the project is a fast and reliable test suite. Both unit and integration test should ideally cover each feature in your application. Thanks to that, you have a friendly environment to add/modify functionalities that will prevent your new developer from breaking something on production because of the lack of familiarity with the application.
The other things that are worth mentioning are code reviews by a more experienced developer and QA that a feature does what it was supposed to do.
There is a lot of things that can be done to speed up adding a new member to the existing project. Some of them are trivial and some of them require a lot of goodwill and some sacrifice. From my perspective, it is worth to invest this effort because it builds foundations to create a happy and cooperative team.