Improving your pair programming sessions while working remotely
I’ve used pair programming to improve and share my software craftsmanship skills for a long time. Now that most of us are working remotely, are you still pairing?
Pair programming is a great way to keep connected with your fellow developers. Even remote pairing can be a great experience after you consider the limitations of remote communication and become comfortable with some new tooling. But first, let’s take a moment to examine the value of pair programming.
The value of pair programming
Besides being a great way to keep connected and increase your skills, pair programming also leads to increased software quality. A study about the collaborative software process found that developers working in pairs had 15% lower defect rates. Finding defects early in the software development life cycle leads to huge time savings down the line.
Another study making the case for collaborative programming showed that pairs not only outperformed individual programmers but also enjoyed the problem-solving process more and had greater confidence in their solutions.
Note that pairing works best for writing production code that should be maintained. It works less well when dealing with development chores like fixing a typo. I recommend discussing with your team which tasks are best suited to pair on.
A remote pair programming session usually starts with a video conference. Putting some light on your face, aligning your webcam, and connecting over a stable internet connection goes a long way in reducing the strain of both remote calls and remote pairing.
I bought a professional headset last year and received positive feedback on more than one occasion. Did you know that people tend to listen better to you when your voice is heard more clearly?
Even after applying all these tips, we should still consider the limitations of virtual communication. Our brain simply has to work harder to process non-verbal cues like facial expressions, the tone and pitch of the voice, and body language when we are not sitting in the same room.
Sharing your desktop
Most video conferencing tools allow you to share your screen but for pair programming, I would recommend using more specialized software. Tools like Tuple and Screen.so give you a second mouse cursor and allow you to type together in the same window.
Ideally, you would share your main screen while keeping the video of your partner and any personal windows (slack, email) on the second screen. When sharing a screen, consider the screen resolution of your partner, they might not have such a large screen or be comfortable with your tiny font.
Sharing your IDE
Besides sharing your desktop both Visual Studio Code and IntelliJ have free plugins available to share your IDE instead of your whole desktop. These plugins allow more independent access to project files and require significantly fewer system resources.
There is also git.live, which might be less useful for longer pairing sessions but definitely helps you and your team stay connected within the codebase.
There are many great tools available to help you improve your remote pair programming sessions. Pick the one that helps you and your team enjoy building great software.
Huge shout out to Mona Ciotta for providing feedback while I was writing this article. If you like to find out more about medudoc’s approach to remote working, I recommend reading the article about improving communication within your team by Anna-Maria Zell.
The collaborative software process(sm) | Guide books
Anecdotal and qualitative evidence from industry indicates that two programmers working side by side at one computer…
(PDF) The Case for Collaborative Programming
This article presents a technical opinion in the case of collaborative programming for a large, complex system, in…
The reason Zoom calls drain your energy
Your screen freezes. There's a weird echo. A dozen heads stare at you. There are the work huddles, the one-on-one…
About the author
Wouter Westenbrink works as a freelance software engineer, solution architect, consultant, and developer coach. He has been passionate about crafting great software ever since writing his first code at the age of 12. Before finishing his studies, he was already consulting a wide range of clients to take a more holistic approach to building sustainable solutions with the help of technology. These days he enjoys supporting high performing multidisciplinary teams while sharing his knowledge and experience to help others grow. You can contact him via email (firstname.lastname@example.org) and Linkedin.