
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.

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

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..