How to: Remote Pair Programming

The book Facilitating Technical Events is for technical trainers, coaches, events organizers who want to have a good event flow and happy attendees.
Support independent publishing: Buy this e-book on Lulu.

Before getting into remote pair programming, let’s see what pair programming is.

Pair programming

Pair programming is when two programmers write code on the same requirements / problem. There are two roles: driver and navigator. The driver has the keyboard and writes the code. The driver focuses on short term implementation. The navigator looks at long term strategic decisions and double checks the driver’s implementation details.

In many cases pair programming is a lot more efficient, the code being clearer, nicer and with fewer defects. Nevertheless pair programming can be tiring, especially when doing it for the first time.

As a rule of thumb, you don’t need to pair the whole day, because it’s tiring, difficult and sometimes inefficient. Choose more complex, difficult or areas less known when doing pair programming.

Remote pair programming

Not everyone is at the office all the time. Sometimes we work from home, or we are in another office. So it’s a good idea to use this useful tool of pair programming also when you are not next to the other programmer. We call that remote pair programming.

Remote Pair Programming

Infrastructure

You need:

  • Good internet (fiber optics)
  • Laptop / computer with enough memory
  • Video camera
  • Headphones with microphone
  • (more) Silent room, without disturbing people around

Tools

There are many tools that you can use when doing remote pair programming, depending on the programming language and the technology stack you use.

A simple list of tools would be:

  • Video call tool (Google Hangouts, Skype, etc)
  • Screen sharing tool to have HD quality (Team viewer, Zoom, etc)
  • Source control (Git, git, git, mercurial, git, mercurial, etc)

Some technology stacks have integrated tools for remote pair programming: Vim & Tmux, Slack screen sharing, VS Code

Setup

Make sure you:

  • Agree on a date and time when you pair
  • Get ready for your remote pair programming session 5 minutes before starting
  • Test your audio, both microphone and headphones
  • Open the screen sharing tool
  • Open the video call tool
  • Setup your source control (eg get the latest version of code from git)
  • Before starting, discuss together what you want to solve in the time you have
  • Decide who will be the driver for the first part and who will navigate

Debrief

After a while, maybe 25 to 90 minutes, stop and debrief. Think about:

  • What did you do compared to what you had in mind initially
  • Your progress, the speed of the progress
  • What went well, what you could improve next. Either during the same session on during the future session

Hints on Remote Pair Programming

  • Communicate short and effectively
  • Have a notebook / paper near your keyboard and try to fix your ideas
  • Take the keyboard when you feel you can go faster than your pair
  • Close slack, facebook, hangout, other chats and email clients
  • When you feel you are tired, and you lose the focus, ask for a break
  • Configurations are different on different IDEs, so embrace the diversity
  • Almost always technical issues appear. Relax and try to fix it. If you are losing time, stop and reschedule
  • Learn how to use specific pair programming techniques like Strong Style Pairing, Farsight Navigator, Ping-pong, Yes, and…, etc

Watch my remote pair programming code cast series to learn more from our experience: https://www.youtube.com/playlist?list=PLlOmk325wSKLFF3pXOLVjzZHhQhs_2Ds8

Image by David Mark from Pixabay

Subscribe

If you want to receive an email when I write a new article, subscribe here:

Subscribe for new articles

One thought on “How to: Remote Pair Programming

  1. Thanks! I’ve been trying tools that are appearing lately (in time for work from home) and they make it simplier to do everything in one place, with multiple IDEs supported.. Tuple, Gitduck, Codewithme.

    I personally use Gitduck because it’s multiOS, multiIDE (VSC, all Jetbrains IDEs), is P2P encripted, and has audio+videoconferencing..

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Subscribe for new articles