Since starting at OmbuLabs as the Junior Developer I have had the incredible opportunity to pair with my teammates. A lot. Over the months we have begun to develop better practices and routines to make the most of our pairing sessions, and now I would like to share some of our practices and tips for making a pairing session successful. At OmbuLabs we are a fully remote company so all of our pairing sessions are done through Tuple or Zoom, but this advice could translate easily to in person sessions as well.
When and How Long to Pair For
As a Junior Developer the time that I get to spend with other Developers is invaluable and having a schedule helps us to keep everything on track. We have a ratio of six Senior Developers to one Junior. To spread out the pool of knowledge each Senior Developer devotes two hours of time every other week to a pair session. This is a fixed schedule and we try to keep to it as much as possible. The team has made pairing a priority.
Two hours is a good amount of time for a session because it is long enough to get real work done, but short enough to stay concentrated and not need to take breaks.
Our schedule isn’t the only time we pair though. If I or any other Developer needs extra help with something, we can simply reach out on Slack and ask if anyone has time to pair. These spontaneous sessions can last anywhere from 5 minutes to several hours, and are extremely helpful. It is rare that an issue wouldn’t be solved in a pair. That old cliché that two heads are better then one is a cliché for a reason.
Know What You are Pairing About
When I began at OmbuLabs I would enter each pairing session with an idea of what I wanted to ask about, or a few errors that I had been having and needed help with. After a month or so of this strategy we realized that it would be better to adjust.
Sometimes pairing sessions turned into code refactors or got derailed a bit from the story we were supposed to be working on. We decided it would be better if the Senior Developer could have an overview of the project and the specific story before the session began. That way they could familiarize themselves with the big picture and also refresh themselves on the topic if necessary.
These days I try to let my peers know at least a few hours ahead of time what we can work on, and what has already been accomplished. The more information I am able to give them, the better session will go.
If there isn’t time for an overview several hours ahead, as is usually the case during spontaneous pairs, then it is a good idea to take some time in the beginning of the session to thoroughly explain what has been tried, what the issue is, and what the goal is. The more the outside Developer knows, the smoother the pair session will be. Taking the time to give all the information will save time in the end.
Navigating or Driving
Spending time in both pairing seats is important for any team to have successful pairs. It’s possible to learn just as much watching someone work through their process as it is having someone help you work through yours.
I have recently begun to spend more time watching my teammates work on their projects during pair sessions. It is extremely helpful to see what tools they use and how they solve problems that arise. The more you watch other’s work, or learn about what they are working on, the more tips and ideas you can pick up for yourself and apply to your own skills.
Knowing When to be Quiet and When to ask Questions
Watching and listening is probably the most important key to a successful pair session. It’s easy to get distracted when things slow down for a minute or something needs to load. It’s best to keep focused so that you don’t miss important steps or information. Use the downtime to take notes.
I find it helpful to keep a pad of paper and take notes by hand. This makes things smoother because I’m usually sharing my screen or trying to watch someone else on their screen and it’s nice to have something completely separate from the computer. It helps to keep track of what is being discussed and possible ideas or concepts that should be checked out later.
While watching and listening is important, knowing when to interject with an idea, or just to ask a question is also essential. Sometimes it’s hard to interrupt, but it will make the session more useful if you can ask questions when you don’t understand something, or add ideas when you think you know what should be done next. This creates a rapport between the Developers and you get much more out of a session if silence is not the overwhelming sound.
When wrapping a pair session it is important to talk about how the session went and what could be done differently the next time if anything felt off or went askew. The key to successful pair sessions is communication and the freedom to adjust as needed. Both team members should be on the same page.
Pairing is an extremely useful tool, not just for learning to code, but also for debugging and solving issues that arise. Having a fresh set of eyes is often the key to uncovering a bug, or learning a new way to solve a problem.
Pairing also helps to build relationships between Developers and can make work move along faster. If Developers reach out for help when they are stuck, projects move at a quicker pace in many situations. Collaboration for learning and debugging are essential to any company. Pairing sessions are most successful when there is the right amount of time set aside for them, the Developers are both aware of what they are pairing on and what the big picture of the project is. Also key to a strong pairing session is open communication between the developers, room for asking questions and sharing ideas.
Does your company use pair programming as a tool? Let us know what tips you have!