In the previous article, we established the foundations of pair programming. Let’s now focus on the “leaf and fruit” of pair programming.
4. The leaf of pair programming
What’s the most visually striking part of a tree? Its leaves. Perception is also a core aspect of pair programming, where the leaves represent respect, listening and focus.
Pair programming is a social way of continuous communication and exchange, so respect is the cornerstone of smooth work and good work relationships. Being mindful of each other’s self esteem is critical, as damaged self-esteem can take years to recover from and can encompass other people. Helping people build up their self-esteem can be a very useful skill. Here are some tips. With a distributed team like ours where everyone is pairing remotely, it’s best to inform your pair when you need to take a bathroom break. When he/she comes back, you can synchronize his completed tasks and the status quo for himself. After choosing which problems to solve in pairs, everyone needs to divide and complete the task together, rather than let their partners go at it alone.
Being good at listening and expressing yourself is a key aspect of communication. It’s the only way to know someone else’s intentions. Their feedback can also help you get a sense of whether your current implementation is correct, so you can think of appropriate ways to deal with pair programming problems. Additionally, listening carefully to what others show your respect for them, and earns you their respect. Everyone can maintain a humble, open and studious mindset, accept each other's different habits and methods, helping team collaboration and growth.
During pair programming, it's best to focus on just one task instead of frequently switching. This ensures that you can always focus on a single task and avoid the wear and tear of switching. We found that using Jira’s task checklist increases morale and everyone's sense of accomplishment.
Even if we follow the principles of respect, listen and focus, problems can still arise.
If your friends are not engaged enough, you need to communicate in a timely manner. The navigator should put forward his views and opinions in real time, and point out possible problems.
If the pair’s ideas aren’t unified and the pair reaches a stalemate, just stop pairing. Everyone can consider separating for a while, calm down, and use runnable codes and solutions to prove the feasibility of their ideas. Here you can consider using only rough code.
When pairing is too long and everyone gets tired, just stop pairing. Human concentration is limited, and pairing is tiring, especially when there’s a large gap in ability. At this time, we can try each pairing for a period of time, take a break, and let each other relax.
Please stop pairing when your partner has other affairs to deal with. If you need to answer the phone or watch other web pages that aren’t related to pairing, please obtain the consent of the other party, otherwise, stop pairing and resume once you’re done.
When members of the team are on multiple tasks or projects, please stop pairing. When you frequently have to deal with things unrelated to pairing, it could make your coworkers feel bad, and you’ll need to frequently pull yourself back in the right mindset. If you really want to pair, make sure that the multitasking colleague can guarantee a longer time commitment, preferably until the completion of this user story card.
5. The fruit of pair programming
In the end, what is the fruit of pair programming?
After joining Thoughtworks my understanding of business and systems improved, and I quickly grasped new contexts through pair programming. Improving myself improved the team’s ability as well. At the same time, I learned that a Thoughtworker's way of doing things includes perfecting shortcut keys, the ultimate pursuit of code, design, and problem-solving ideas. This kind of master-apprentice-style learning is the fastest way to learn new skills.
Pairing is a gradual process of mutual learning. It promotes team collaboration while making it possible to collectively own the code. It also reduces the project team's dependence on certain members. Pairing and pair rotation promotes understanding of team collaboration and strengthens team cohesion and therefore the overall effectiveness of the team.
Disclaimer: The statements and opinions expressed in this article are those of the author(s) and do not necessarily reflect the positions of Thoughtworks.