What is pair programming? Reduce the time needed for new developers to join an exist project

Technical debt: knowledge necessary for a new developer to be able to work on an existing project

Technical debt is the drama that every developer has to face every time he has to work on an existing project.

When a bug it’s discovered, it is often easier to fix it with a workaround instead of spending weeks refactoring the code, but this inevitably creates technical debt.

There are undoubtedly best practices to keep technical debt to a minimum, but what to do if we have this problem? Do we stop a senior developer for a month to have him write documentation?
A quick and easy solution can come from pair programming.

What is pair programming:

Pair programming is an agile development technique that involves having a couple of developers working together:

  • The driver: who writes the code
  • The navigator: who supervises the development

It is a technique widely used by programmers, especially when one of the two is in a rabbit hole.

Our case study:

In addition to solving problems, pair programming is excellent for exchanging knowledge.

We recommend taking advantage of this technique to bring new developers up to speed on existing projects .

Initially, the new developer (the driver) is assigned a task and is joined by a developer with deep knowledge of the project (the navigator).

Any doubts that may arise will be directly clarified by the navigator who will ensure that the task is successfully completed, giving as much information as possible to the driver in the process.

Remote working:

You shouldn’t be afraid to try pair programming even when working remotely.

There are many free tools that allow screen sharing like Google Meet, Discord, Skype or Teams.

For the most demanding there is also a free extension for Visual Studio Code called Live Share or paid tools such as Floobits that allow real time collaboration on the code.

Conclusion:

With this article we do not want to suggest you leave out good consolidated development practices such as writing legible code or making documentation, they remain essential for any long-lived project.

I forgot to mention that this article was also written jointly by a newly hired programmer (Danilo) and a domain expert developer (Enrico), who have experienced this problem and solution first hand. Despite some initial difficulties, this technique allowed us to make the new hire productive and independent in just one week.