One of my favorite practices in software development is pairing, more specifically, joyful pairing. This article is not about the benefits of pair programming; it is about the joyful part. More insight on the what and how of pair programming can be found in this excellent article: On Pair Programming.
When we utilize this pairing practice in our daily work, we should enjoy it! Enjoying our work has a positive impact on stress levels and our general health . The feeling of joy while pairing increases motivation and the likeliness of continued pairing in the future.
Given the benefits of pairing and enjoying work, how can we increase the chances of joyful pairing? Pairing is a social activity, and when done wrong, it can feel uncomfortable and exhausting. In the upcoming sections, I suggest a few guidelines to inspire a social contract and strengthen the likelihood of joyful pairing.
Most people will probably be familiar with the situation in which you seemingly lose all ability to type as soon as someone observes you. People new to pairing might recollect these situations and feel uncomfortable before they even start. They fear their fingers will betray them, or they suddenly forget how to program. They fear being judged.
Pairing can be a very vulnerable exercise. You show work in progress, knowledge gaps, thinking process. When I pair with someone new to pairing, I mostly make sure I am the one typing at the start. I show my partner I make a lot of mistakes, that I have to look up basics, and need multiple tries to get something right, and that I’m ok showing that.
Your social contract for joyful pairing needs to include the section: no judgment allowed. Pointing out overlooked errors, sharing an alternative view, or discussing the drawbacks of a particular solution, are all important. One of the benefits of pairing is fast feedback. This feedback, however, must be without judgment. For joyful pairing, you need to build trust and acceptance to make the vulnerability less daunting.
Even if the activity of pairing is going well, I have found that the intensity of it can be tiring. This intensity is caused by one of the benefits of pairing; focus. Filling an 8-hour workday with 8 hours of pairing has the potential to fry your brain. One way to counter this is to take regular breaks.
I have found that, when I’m working from home a lot of the time, regular breaks aren’t enough. When sitting next to someone, it is a lot easier to pick up non-verbal signals. Someone will often show they need a break before they say it, even if there is a lot of trust. The Pomodoro Technique, in which you use a timer to work in intervals separated by short breaks, helps to take regular breaks and makes them scheduled and predictable.
Additionally, not every activity lends itself to pairing, and not every person has the same affinity for pairing. When considering all the benefits of pairing, don’t forget to consider the benefits of doing work alone. So, take breaks during pairing and, for some activities, take a break from pairing. No single schedule works for everyone or every activity. Experiment! With intervals, with pairing on different activities, and see how you enjoy it most.
After pairing with someone for a long time, it sometimes happens you enter a state where you seem to read each other’s minds. However, before we enter this state, we need to assume we have to speak our thoughts before our partner knows what they are. Communicating your thoughts to each other goes both ways.
When you’re to one typing, it is easy to confuse your partner by scrolling or using shortcuts. These actions are a consequence of some thought you had. Maybe you want to quickly check something in another area of a file or search for another phrase’s occurrence. Let your partner know what you’re doing and why, so they don’t get lost.
Some developers, even when they don’t pair, talk through a problem out loud. This technique is known as “Rubber Ducking.” Talking through a problem improves the understanding of the problem. An essential benefit of pairing is the ability to work through a problem together. You don’t have to be talking all the time, just enough that it’s clear what’s happening for everyone involved.
Pairing with different people or various kinds of roles can also have distinct benefits. You can pair with someone you’ve collaborated with often and be very productive. Or you can pair with a new team member and transfer knowledge. Or you can pair with someone who has a different perspective and learn another approach.
As a team, we want to be effective. When two people are productive and pairing, but two others are not adequately onboarded and barely progressing, this is not effective. It’s vital to make conscious choices about the goals to achieve by pairing—for example, new people can pair with seniors and get a more joyful onboarding experience. However, the goal of a pairing session does not only implicate who are pairing together. It also affects the speed, the amount of discussion, and who’s in the driver’s seat. A senior in the team probably needs to slow down when pairing with a new hire.
Don’t forget to include all team members. It doesn’t seem typical for a developer to pair with someone in the role of a tester. However, it can be very beneficial. Try pairing while doing Exploratory Testing, or try pairing while doing Test Driven Development; you might just be surprised.
In the previous sections, I’ve laid out several practices I deem essential, based on my experiences pairing with people. My experience. The things that are important to you in your pairing relationships might be different. It is important to keep reflecting. Do you need to change the parameters of certain practices? Are there even other practices more suitable for your environment? Keep in mind that pairing should be a joyful activity; what can you change to make it more joyous to you, to the people you pair with?
Pairing can be very uncomfortable; when you are new to pairing, when pairing with someone new, or pairing on something in a domain unfamiliar to you. These guidelines help, but there is no instant effect. Building a joyful pairing relationship also takes time and practice. So, give it time. And at the same time, don’t try to force it.
: Faragher EB, Cass M, Cooper CL. The relationship between job satisfaction and health: a meta-analysis. Occupational and Environmental Medicine 2005;62:105-112.