Remote Pair Programming

In the world of Software Development, Pair Programming has been credited as a practice that contributes to the success of projects. With the spread of COVID-19, most software development teams and students have transitioned to working from their home environments. Reflecting on my experiences in 2021, I’m going to break down why I believe pair programming is beneficial for remote collaboration, and share some tips to get started.

According to Wikipedia, “Pair programming is an agile software development technique in which two programmers work together at one workstation.”[1] Working together at one station is no longer a prerequisite for pair programming. However, the techniques for pair programming are similar even in a remote environment.

When pairing up, one technique developers can apply is the Driver and Navigator method. The Driver is the person who takes the lead on the keyboard. They are responsible for talking through what they are doing and working on completing small goals such as converting ideas into the language syntax. Meanwhile, the Navigator acts as the eyes and is responsible for reviewing the code as the driver is typing. Navigators find bugs, share thoughts and give directions while working collaboratively with the Driver. These two roles are meant to be swapped every 15–30 minutes, providing the opportunity for both members to communicate and collaborate.

The Driver and Navigator technique has been credited for producing fewer bugs. According to Larry Constantine, one of the pioneers of modern computing, he points out that companies that use PP produce “nearly 100% bug-free code, which was also better, tighter and more effective” [2].

In a study produced by Jari Vanhanen and Casper Lassenius on the Perceived Effects of Pair Programming in an Industrial Context [3], they list 4 Pair Programming Areas of Benefit and the effects they have on employees and the workplace.

1. Learning — increased learning of work-related topics.

2 Quality — smaller number of defects and better solutions to problems

3. Effort and schedule — an increased total effort for a task, more accurate effort estimates, finishing tasks faster and better schedule adherence

4.Human factors — higher satisfaction and confidence in work, higher exhaustiveness of work, improved trust and teamwork, more courage to attack difficult things, such as refactoring

Drawing from my experiences as a new developer, these are my top 2 benefits and challenges I’ve experienced with Pair Programming in a remote setting.

Benefits

Knowledge Sharing

When two people work on a piece of code, the opportunity for sharing different perspectives and skills allows for a valuable experience. In my experience, I enjoy the moments when I can learn something as small as a new keyboard shortcut or understanding the logic one takes in breaking down a problem. At the same time, it’s rewarding when I can share something new with a fellow developer to make their coding experience more productive.

Real-Time Coding Review

When you have two people looking at the same code, there are more eyes to catch bugs. The real benefit comes from having someone there to help you name a variable or function because that’s always a challenge. The more I look at someone else’s code, the sharper my eyes get in focusing and finding bugs and suggesting solutions to tackle problems.

Challenges

Different Skill Levels

In my first ever PP session, I found it intimidating to be paired with someone with such a higher skill level. The imposter syndrome crept in and had me questioning if I had the tools to contribute. However, after more experience, it became evident that where one person lacks skills the other person is there to provide that knowledge sharing.

Lack of Face to Face Connection

The downside to Pair Programming remotely in my experience boils down to the limitation of human connection. As an individual who reads information and picks up social cues from body language and facial expressions, I sometimes found it difficult to connect with my peers. In moments of silence when a partner may have paused just to think, I found it hard to interpret what they were doing, leading to the oh-so-familiar “can you hear me” across the internet.

Tips for Remote Remote Pairing

Pair Programming in person and remotely may have many of the same benefits, but there are some key things to be cognizant of when starting.

  1. Have a proper Internet setup and use a good tool for screen sharing. I recommend Zoom, Google Hangouts, and Visual Studio Code Live Share
  2. Listen to your partner but also speak up and use your voice constructively
  3. Align on roles (I.e Who is Driver and who is Navigator) and decide when you are going to switch.

To conclude, pair programming is an effective and widely used technique both by Industry professionals and students. The current Global Pandemic has led to a shift in remote PP. My introduction to Web Development began when everyone was working from home, and without the tools to Pair Program remotely, I would not have had the same opportunities to collaborate and grow.

Sources

[1] Pair Programming, 2020, December, 18 https://en.wikipedia.org/wiki/Pair_programming,

[2] L. Constantine, Constantine on Peopleware, New Jersey: Prentice-Hall P T R, 1995.

[3] Jari Vanhanen and Casper Lassenius. 2007. Perceived effects of pair programming in an industrial context.