Collaborating vs Pairing

Matthew Bussa
Beam Benefits
Published in
3 min readSep 4, 2020

Pair programming, some consider it a developer revolution while others a waste of time. If we desire to have an environment where knowledge sharing is key, pairing and collaboration are two such tools that promote such an environment. But what is the difference between pair programming (pairing) and collaboration?

Photo by "My Life Through A Lens" on Unsplash

Collaboration

Collaboration is the act of working with another individual to produce or create something. Pairing is collaborating but not all collaborating is pairing. Collaboration is more of a consult where I’m stuck or need help working through a particular scenario.

Advantages

  • Typically a relatively quick activity that’s largely conversation based
  • Bounce high level ideas off of each other
  • Quick sync to ensure all are executing the goal cohesively

Disadvantages

  • If you’re in the weeds of a technical problem, it may take awhile to give the other person accurate and precise context

Helpful Collaboration Scenarios

  • The context is largely shared and want to rubber duck or brainstorm when you’re stuck on a problem
  • Quick question(s) around a particular piece of code or tech
  • Solicit different ideas to come up with a collaborative solution

Pairing

Pair programming is the act of pairing with another individual to work through a problem, at a code level. While not limited to but two popular methodologies on how this can be practiced are:

  • Ping Pong pairing model where one writes a failing test, then the other pair makes the test pass and creates the next failing test.
  • Driver/Navigator model where one pair does most of the typing (ie the driver) and the other pair does the reviewing and navigation.

The single most important part of pairing is the shared context.

Advantages

  • No better way of bringing someone up to speed
  • Deeper knowledge share and shared context
  • Opportunity to level up each other in different skills (whether that be coding, workflow, etc.)
  • Definitely a more social activity (this could go in either column depending on your personality)
  • Developing better trust/relationships with your team members
  • Arguably better code, less bug infested code, as it is being constantly reviewed

Disadvantages

  • More tiresome as a good pair would be in constant communication and vocalize everything
  • Potential clashing of personalities
  • Some people just don’t enjoy pairing (and that’s ok)

Helpful Pairing Scenarios

  • Where large pieces of context are not shared
  • Ramping up someone in a new to them codebase
  • Teaching or leveling up someone in a new tech

Additional Pair Programming Resources

Collaboration and pairing are two great tools and like any tool, should be used wisely. While not every problem is a nail, we need to learn to deploy methods that aren’t always a hammer. Both of these tools are great, in their regard and often times a pair is needed and other times, potentially a quick consult is needed.

--

--