For a few years, Agile models have been the most popular choice for collaborative project development. In reality, it isn’t the first method for developers to work together. Known as pair programming, this technique started in 1992. Larry Constantine conveyed the term “Dynamic Duo,” when he saw two programmers working on the same terminal at Whitesmiths Inc. He was so thrilled that he had to invent an expression for it.
The pair programming method kept growing through the years until James Coplien published Two Heads are Better Than One in 2015. Tracing the origins of this method, the author illustrates why it’s one of the best solutions for development projects.
Like any method, it works better with some projects than others. Here is an overview of why you should consider it for your business and how to make it work!
What Is Pair Programming And Who Is It For?
By definition, pair programming is a common development technique where two programmers work on the same task on a single screen. Usually, developers take turns writing code and reviewing the lines of the partner.
The most traditional approach to pair programming isolates two (interchangeable) roles:
- The Driver is the one using the keyboard and guiding the other partner communicating each action. This role aims to complete tasks at hand without focussing on more significant issues.
- The Navigator observes what the driver is writing. The aim is to review the code on the run while brainstorming on possible solutions. In addition, a navigator monitors more significant issues and bugs to plan the next step.
The point of making two programmers work on the same task is to combine two different perspectives: critical (navigator) and practical thinking (driver). Generally speaking, pair programming suits best software development, test-driving projects, and pedagogical projects to train junior programmers.
Why Is Programming In Pair Better?
The Institute of Computer Science of the Free University of Berlin released a recent study on pair programming in February 2021. Researchers Franz Zieris and Lutz Prechelt analyzed pair programming sessions of 13 different companies.
Based on their research, they isolated two elements of effective pair programming sessions:
- Togetherness: It happens when the pair manage to establish a shared mental model while working.
- Expediency: It happens when the pair balance out immediate issues and the longer-term goals of the pair programming sessions.
At first glance, many employers fail to see the benefits of pair programming, believing they are paying two programmers to do the job of one. In spite of that, studies show that the overhead of pair programming is not 100% but, in fact, around 15%, and the benefits, in the long run, more than make up for this.
For companies who largely rely on remote workers, however, pair programming presents unique challenges. Is it still a viable option for programmers who may not be in the same state or country, let alone sitting at the same desk? Are there ways for companies with remote employees to still benefit from pair programming?
Can You Do Pair Programming Remotely?
Remote pair programming has exactly the same benefits as physical pair programming. With the right tools and approaches, you can have knowledge sharing, better code, and instant code review. Even in distributed teams, pair programming helps discover and fix the problems improving your customers’ experience.
Different Approaches To Remote Pair Programming
Alongside the drive-navigator model, there are different approaches to pair programming to improve the workflow:
1. Ping Pong
This technique best suits Test-Driven Development projects. It works better when you have separated and defined tasks. With this method, the two programmers can write in turns, trying and failing without slowing down the process.
2. Strong-Style Pairing
Strong-style pairing is most effective when you need to transfer knowledge and skills. With this methodology, you must ensure complete trust between the navigator and the driver. Rather than micro-managing, this approach requires a ‘learning by doing’ system to allow the two programmers to switch positions.
3. Time management
Among general approaches to pair programming, there are tools and techniques for managing working time. For example, the Pomodoro technique is a time management method that helps to break tasks into chunks of time (usually 25 minutes). Breaking tasks helps the two programmers keep the focus on each step and easily switch roles.
4. Pair Rotations
Pair rotations happen when one of the programmers leaves the couple. Who stays becomes the Anchor and takes care of the onboarding process. However, pair rotation can occur when one of the developers gets sick or goes on a long holiday. In addition, training a new member helps to bring new ideas and speed up the development process.
Tools For Remote Pair Programming
Terminal sharing is the most traditional tool for remote programming. Using tools like tmux or wemux, the pair share the same terminal session working on the same task. The multiplayer terminal allows working from the same server via the secure SSH protocol and splitting the terminal screen to work simultaneously.
Screen sharing is always an effective strategy to collaborate remotely. Using Zoom or video-call software, the driver can write the code while the navigator reviews line by line. Some screen-sharing tools like Microsoft Visual Studio Live Share or Motepair also allow multiple mouse cursors to edit the same file simultaneously.
Collaborative Code Editing
In collaborative code editing, the pair doesn’t share the entire screen. Instead, the programmers show their project environment. You can use programs like Remote Collab for SublimeText, Codeanywhere, or CodeTogether. These types of tools perform with a cloud IDE or a live share code editor plugin. In any case, both programmers can see each other’s cursor and edit the same files.
Advantages of Pair Programming
The greatest benefit of pair programming is having two different perspectives on the same project. Especially if the two programmers excel in different skills, they can compensate for their weaknesses by finding unique solutions to your problem.
Efficiency and Monitoring Coding Mistakes
As we mentioned initially, pair programming has a slower process. However, it gives you better results. That’s why the review process happens on the run rather than at the end. So, taking more time with two programmers saves you re-working on the same projects endless time after the delivery. In addition, when the programmers can focus on half of the tasks, they have more time to self-edit and produce quality work.
When two people work closely together, they learn much faster than with training or a tutorial. Knowledge sharing is a great strategy to improve and professionalize your developers’ skills in a remote or physical arrangement. Finally, it helps with junior mentoring and speeds up the onboarding process.
Remote Socialization And Engagement
Working in distributed teams can be lonely. Pair programming helps to engage with your developer and promote team socialization. In addition, when working together, people tend to avoid procrastination and communicate more with their steps to not interfere.
Disadvantages of Pair Programming
Pair programming is an excellent approach to software development, but it comes with its pitfalls. Like in any other virtual team, sometimes communication gets lost. The risk is to overcomplicate tasks or overdo the same job. You can easily cross over this obstacle. As a team leader, you can monitor the communication process and guide them on tasks until they find the right rhythm.
As we just said, sharing knowledge is one of the strengths of this method. However, it depends on the knowledge gap between the two programmers. Let’s take as an example a pair with a senior developer and a junior programmer. The first has been working for years with you, and the latter has no experience but great expertise in the latest programming languages. Their roles will focus on different goals in your project. Indeed, they can work as a team. But exchanging tasks will be hard to adjust and will take a long time.
As much as reviewing code on the run improves the outcome, it can be stressful. Writing code while someone else is looking can overwhelm the pair and lead to burnout. For this reason, make sure to leave some tasks for individual work when you think your developers will perform better separately.
Last but not least, the human element. Working together can be efficient, but you need to understand each other. And speaking the same language isn’t enough in some cases. When hiring remotely, you put together teams with various nationalities. Rather than a pitfall, it’s something you need to consider. If you pair two developers to exchange tasks, you want to put together people who communicate and understand each other. Otherwise, you will lose all the benefits of this approach in endless discussions and misunderstandings.
How To Start Remote Pair Programming?
If you are planning to explore this solution for your business, remember the last disadvantage we mentioned. To make pair programming work, you must hire two personalities that can work together. So, the first thing to do is to identify candidates that can collaborate and communicate, giving the best performance.
When it comes to remote pairing, here are some practical tips to start once you have the best candidates for your team:
The Remote Setup
You must provide screen-sharing solutions and collaborative tools for remote pairing to enable them to edit on the spot and switch the keyboard. In addition to the tools we listed above, you can try open-source tools for video calls with remote control, like jitsi. or the Live Share extension for Visual Studio Code. Finally, provide collaborative online visualization tools to plan and design and video-audio equipment.
More Than One Screen
Software development requires long working hours, especially before important deadlines. Sometimes, tech is not invincible, and computers slow their performance. Make sure to provide two screens to your developers, so that they can easily switch devices without interrupting the work.
Remote Pair Programming Done Right
To recap, pair programming is an effective solution to improve software and test-driving development projects. With the right tools and approaches, your developers can give you quality results and original solutions to various issues. But remember, it will work if you hire the right people.
Going through the hiring process is tedious when you need one candidate. With two, the job gets more complicated. That’s why we are here to help. We can guide you through the process of selecting candidates that can collaborate even before the interviews. Or we can find a perfect match for your developer – our team is fully remote, and we know what it means to work with someone that can understand you. For any questions, just contact us!