SEEK blog
Published in

SEEK blog

Tips for Remote Pair Programming

Pair programming is a great practice, but what happens when half your engineering team is in another country with a different time zone?

Over the years, I have found that when it comes to remote working with your team (and especially with pair programming), behavioural changes rather than technical changes are more effective in making a change to the session.

I’ve been part of a distributed team for two years where we work together with a 2–3 hour time difference and pair programming as a strong agile technique within our team. Now that many of our work processes have shifted online due to the COVID pandemic, here are some of the things I’ve found to be most important when pair programming remotely.

What is pair programming?

Photo by Christina on Unsplash

It’s a fantastic way to collaborate and it promotes teamwork and knowledge sharing within the team. Pair programming often leads to higher quality code and fewer bugs as you’ve got a navigator who’s reviewing code as you program and also someone else brainstorming implementation of code with you.

Remote pair programming is similar to pair programming, however, it is done remotely using two computers rather than one. Given the remote nature of the setup, you’re no longer physically sharing the same desk and computer. Instead, you rely on sharing tools and communication technologies to achieve what’s usually done in person.

Setting up the remote pair programming session

A good wifi connection

Code Sharing tools

Alternatively the driver of the pair can share their screen with the navigator allowing both users to see the code. Some screen sharing tools include Zoom, Team Viewer (Microsoft teams) and Google hangouts. A cool functionality that Zoom has is the ability to control a remote computer where you give control to participants.

A good communication medium

Now that we’ve got the setup to help facilitate a good pair programming session here are some things I found useful to be aware of when pair programming — they might not be as obvious when you’re doing it in person.

When is pairing most effective?

I’ve had times where I’ve spent four hours on call with another developer (an hour past my usual sign off time) with no breaks in between because we were so engrossed in what we were trying to solve. Because of this, you can often experience “screen fatigue” or just fatigue in general. That’s why it’s important to set boundaries with your pairing partner and it’s even more important when you’re working across time zones. Setting up boundaries and workflow expectations ultimately help with engagement levels while pairing, making the time you spend together as efficient as possible.

Setting boundaries and expectations

Everyone has different energy levels, interactive preferences and introversive/extroversive tendencies — this is why it’s important to incorporate breaks. It could be as little as 10 mins every hour or simply calling out whenever you need a break. Regular breaks are important as they help mitigate any feelings of fatigue that you may experience.

Communicate your preferred style of video calling. It’s okay if you prefer to have your camera off during the session, just make sure that everyone is continuously engaged in the pairing.

Not everyone has the same work schedule

Illustration by Alexa Nguyen

Respect each other’s working time. This includes understanding the different working hours due to time differences or even the different working styles of your colleagues and pairing partners.

I’ve found while working with team members from Kuala Lumpur, we tend to get quite passionate about our work and sometimes forget the time difference. For example I would message team members early in the morning, which would be a couple of hours earlier for them, or work past our allocated working hours. Optimise the time you have together, but don’t forget that you need to be respectful of everyone’s working time.

Set time aside to research alone

Illustration by Karthik Srinivas on Blush

Sometimes working individually can be just as useful as working side-by-side. I often take advantage of the two to three hours I have in the mornings, while my pairing partner is not yet online, and work by myself to do some self-study or research. You can do this even without the time difference. It’s okay to propose some time away from pairing to do some research and then come together again with what you’ve learnt. I’ve found this to be very impactful when it came time to pair as both developers brought different perspectives from their findings.

Stay focused!

Remember pair programming is only beneficial when there’s engagement!

This is why I make a conscious effort to minimise or close any distractions on the screen so that I can focus on the code that’s being shared by the driver. Enabling do not disturb or focus assist is also a great way to minimise the number of interruptions you receive.

The key is communication

I find this practice to be a really powerful way to greatly improve your development skills and I love the knowledge sharing nature of it. Even with the constraint of being in different places and time zones, I find that I’m constantly learning something new every time I pair with different engineers on my team as we push out well thought out code.