Before joining Tandem, I had never paired before. When working by myself, I just open up the program and start looking at the code. However, pairing involves working closely with someone else, so it’s important to also consider their thoughts, feelings, and perspectives. Since joining the team, I’ve learned a lot about what it takes to create a successful pairing session — here are some tips that I’ve gathered along the way:
1. Check in with each other
Before diving into the code, I’ve found that it’s helpful to have a little moment beforehand to say hi, ask how the other person is doing, and agree on the higher-level goals of the pairing session. Building time into your pairing session for a check-in is a great way to jointly prepare and set expectations. Plus, bringing that human aspect to pairing makes it more successful because you’re establishing that you’re in it together.
Some questions you can ask at the start of the session are:
- How are you feeling today?
- Do we expect any distractions?
- When would you like to take a break?
It’s also important to timebox a check-in at the end of the pairing session to talk about how things went.
You can close out with questions like:
- What are some things we did well?
- What was the best part of our pairing session today?
- What would make our next pairing session 10% better?
It’s like having a mini retro, which helps us both continuously improve for the next pairing session.
2. Be honest with each other
When pairing, it’s important to be honest with each other. When you’re solving a problem, keep an open line of communication. For instance, explaining the thought process behind your decisions is a verbal way to ‘show your work,’ keeping your partner in the loop as to why you did the thing you did.
On the other hand, it’s okay to not know how to do something — that’s why you’re working on it together. Both of you being open about your knowledge and skill level will make pairing much smoother. And don’t be afraid to ask clarifying questions, as there is no better time to learn than in a pairing session. If your partner doesn’t know the answer, it’s an opportunity for you to delve into that problem later.
Some days, you will wake up and not want to drive. You would rather navigate and think about the high-level details because it’s easier on your brain — and that’s okay, as long as you are honest and let your partner know. There’s a misconception that software development is a very solitary career. It can be, but it doesn’t have to be! Pairing most definitely makes software development a ‘people’ thing.
Everyone has a different personality and way of working, so it’s better to be upfront about your preferences. Working through compromises together to create the best possible pairing session is part of pairing — after all, your partner may also not want to drive that day!
3. Find balance
To have a successful pairing session, take breaks, change driver and navigator seats once in a while, and do what you can to avoid cabin fever! Pairing can last for a few hours at a time (sometimes even an afternoon!) so it’s important to give your brain little points of relief from prolonged concentration.
Another way to avoid burnout is to start with a simpler task. The small win can prevent you from getting overwhelmed right away and be a confidence boost for you and your pairing partner. Finding a balance between solving simple and hard tasks is key to not wearing yourself out too quickly.
While finding your groove, be cognizant of your pairing partner’s skill level. Everyone has different experiences, so remember to be patient with each other and customize your interaction for the other person. For instance, some developers want communication about each character to type meanwhile others want to know the goal and have the autonomy to decide how to best implement code.
4. Avoid both external and internal distractions
A common tip for pairing is to avoid distractions, like package deliveries, phone notifications, pets, etc. I’d argue that distractions are not just an outside thing — there are both internal and external distractions.
An internal distraction would be getting sidetracked within the code. For instance, while implementing a feature, you discover that the way a notification updates is no longer the best approach for your feature. Rather than completing your feature, you go down a rabbit hole to update the notification feature. Working on enhancements like this is important, but they can also take time away from the work you committed to and lead to missing agreed-upon deadlines. You want to ensure you still have time to achieve the goals set at the beginning of the pairing session.
Don’t get me wrong, I like light sidetracks — like when you’re in the middle of the code, you ask a question about why something’s happening, and the answer reveals itself within a minute or two. This allows for quick learning about syntax when working in a new language or understanding business logic.
But to accomplish everything you want in the pairing session, it’s best to pull yourself out of the problems eating up a lot of time. Internal distractions (like notifications) have their time and place. The most important thing you can do is be aware of when you’re getting sidetracked and bring your focus back to the task at hand. However, to make sure the problems you discover along the way are not forgotten, do a quick search about them and share the resource with your pairing partner. You will both learn from the problem and now have a reference for when you come back to it.
As someone who never paired before joining Tandem, I can now confidently say that I understand its benefits. It makes building strong software easier, spreads knowledge of the project codebase, and allows people with different strengths to collaborate. I’ve learned so much by solving problems with others. There will always be value in coding by yourself, but knowing how to create a successful pairing session is a skill that will make you an even stronger developer.