Pair programming in a remote world

Diana
4 min readMar 8, 2023

--

The software industry has always been open to flexible remote working with distributed, diverse teams. With the recent pandemic this way of working has been enforced suddenly on each person that can do their job in front of a screen. This has opened up a whole new world of opportunity for companies to bring new talent in, irrespective of location. It allows individuals to spend less time travelling to the office and working from anywhere with an internet connection. I love the freedom and flexibility it can offer but I do wonder about the downsides ..

If we look closer, it has also created a rift in the much-needed ability to teamwork while creating and maintaining quality code and improving processes and communication between peers. And if we add to the mix the fact that most developers sometimes prefer to put their headphones in and solve a coding problem and forget about the world, we are faced with a situation in which the distance can create disconnection which can create miscommunication and a lack of trust and safety. These things are easily overlooked in the short term; in time they can really impact productivity and quality of work.

One of the ways to build connection in a team is Pair programming and I have written quite a bit about how and its benefits here.

Let’s have a look at how we can adopt the pair programming practices into the remote way of working.

How?

Video conferences and online technology that brings people together has improved so much during the years. There is a multitude of tools that can be used to collaborate with your colleagues no matter of their location.

Even using a simple video conference technology like Zoom can be useful when switching from pairing physically in front of the same monitor and keyboard to pairing digitally. The main idea is that the driver will have to share their screen and use their keyboard to type what the navigator communicates; switching the roles regularly. Another good free tool is VSCode Live share.

Because most of the interactions are now through a computer screen here are a couple of tips that can improve the practice:

  • Set your video and mic on: seeing each-other can improve communication. Studies say that over 70% of communication is non verbal and there is a substantial difference between text or voice chat and video chat in building human connection.
  • Two monitors: when your home setup uses two monitors is much easier to set one screen for sharing and coding and one for the video feature of whichever tool you chose to connect with.
  • Take regular breaks: pair programming can sometimes be intense, make sure you get up and stretch your legs, make some tea, do some jumping jacks .. Intertwine set times of focus with breaks from the video chat and stick to them it will free your mind and help with creative problem solving and attention.
  • Check-in with each-other: be flexible with the pairing schedule, sometimes working from home can bring other distractions in the mix(cats mewing, neighbours cutting the lawn, plumber visits) so if the time decided isn’t working find out how you can split the work in some smaller tasks and reconvene at a later time. Share what is uncomfortable and what doesn’t work to fully get the benefits of pair programming.

Why?

The benefits of this way of working have been difficult to disregard during my software career but also difficult to prove to people that haven’t done it consistently. You can read more about it on my first article on pairing.

The social aspect of an office job is missing, there’s no more chats in the kitchen while you’re grabbing coffee or lunch, there’s no more jokes and banter and smiles over the computer screen. Onboarding becomes a row of emails and texts of information and links in Slack, creating an environment where it feels like you are on your own.

Discipline and focus — creates a sense of accountability, allows for better organisation and productivity and keeps the people from getting distracted by various external factors that can more easily come up when not in an office environment.

Communication and teamwork — collective code ownership, shared knowledge, creative brainstorming and problem solving.

When it comes to building software, teamwork is one of the primary skills necessary. To produce good quality, maintainable, easy to change and send to production software depends on collaborating with people of different skills and roles. We need to keep communicating, adhering to best practices and reacting positively to feedback so that work is efficient, fun, and fulfilling for al involved. I believe that pair programming can help with keeping a culture of knowledge sharing and common goals, empowering individuals to speak up and be seen.

Now, in a remote working world I find that it’s even more important to build bridges between colleagues and form relationships of trust and understanding that will allow work to be done at a higher standard and teams to evolve into tribes that don’t only care about delivering but also about why and how they are doing it.

--

--

Diana

Driven by cooperation and motivated by empowering teams