Pivotal Labs

Main menu

Skip to primary content
Skip to secondary content
  • About
  • Case Studies
  • Team
    • Executives
    • Locations
      • San Francisco (HQ)
      • Boston
      • Boulder
      • Denver
      • London
      • Los Angeles
      • New York
  • Community
    • Blogs
    • Tech Talks
    • Events
  • Careers
    • Lifestyle
    • Principles & Practices
    • Benefits
    • FAQ
    • Apply
  • Contact
    • Press Room
    • Press Releases
    • In The News
    • Press Kit
  • All
  • Labs
  • Standup
  • Tracker

Pair Programming Matrix

Joe Moore
Thursday, July 12, 2012

(Update 07/17/2012: Added link to Pair Programming Matrix Google Doc)

At Pivotal Labs we consider ourselves to be expert pair programmers, but sometimes even we need help. We identified (thanks to a retrospective) that we were being very unbalanced in our pairings: some developers seemed to pair with each other often while rarely paring with others. We wanted a lightweight means of enforcing balanced pairing. That’s when someone remembered the pairing matrix.

Pair Programming Matrix

A blog post titled “Pair Programming Matrix” inspired us to try our own pairing matrix. It’s a grid with a cell intersecting each pair of developers. Here’s a photo from the original article:

We thought we would give it a try, only using a Google Spreadsheet with some fancy conditional formatting instead of a whiteboard

Upshot

Overall the pairing matrix serves it purpose: it helps us have much more balanced pairings. We’ve been using it for several months and will likely continue using it so long as it seems useful.

It strikes me that a pairing matrix would be a good way for team new to pair programming to add a bit of helpful structure. I would hesitate to add this structure if it’s unneeded: “if it ain’t broke, don’t fix it.”

Pros

  • Exposes “holes” and “hot spots” when developers are not pairing together or pairing too often
  • Easy to use, reset
  • Can be a simple way for teams new to pairing to get started

Cons

  • Time off skews the matrix
  • Does not work well when team structure fluctuates often
  • Becomes unwieldily with larger teams

Examples

Here are some screenshots of pairing matrices at different stages. Team structures changed and thus the featured developers were not always the same, but you get the idea.

Early in the process. We already have a hot spot!

Pairings are starting to even out.

Over time we were much more balanced.

Eventually we needed to reset.

Too big!! We abandoned this and made the team smaller.

Make Your Own Matrix

By popular demand, I have made a blank, read-only copy of our pairing matrix, complete with conditional formatting. Feel free to duplicate it and modify the copy. Please post your own modifications and optimizations in the comments.

Link: Pair Programming Matrix Google Doc

  • 0 Shares
  • Share on Facebook
  • Share on Twitter

4 Comments

  1. Hugo Barauna says:

    Could you share the spreadahwet with us, so we can see the conditional formatting?

    July 17, 2012 at 4:34 am

  2. Joe Moore says:

    Hugo — Here you go! I’ve also updated the post with a link to a read only, duplicatable copy of the pairing matrix. Enjoy!

    [https://docs.google.com/spreadsheet/ccc?key=0AkuIWCNse5R5dFVHR1ZHZTF6VmdlUzhJa1NGbGRzOEE](https://docs.google.com/spreadsheet/ccc?key=0AkuIWCNse5R5dFVHR1ZHZTF6VmdlUzhJa1NGbGRzOEE)

    July 17, 2012 at 7:53 am

  3. Ryan says:

    Why do you strive to equalize pairing? People will determine on their own with whom they are most efficient. Why break up productive pairs?

    May 10, 2013 at 4:34 am

  4. Joe Moore
    Joe Moore says:

    Ryan — Good question. As with many things at Pivotal we identified inconsistant and infrequent pair rotation as a problem during a retrospective. To be clear, the team as a whole agreed that this was an issue, rather than a top-down manager level decision. At Pivotal we find frequent and diverse pairings beneficial for many reasons: knowledge transfer, exposure to different perspectives, exposure to different skill-sets, diversity in personalities, just to name a few. The team felt that long-running pairings (in this case, exceeding 3 days) was a drawback, and that a pair’s efficiency diminished the longer they were together.

    The pairing matrix made it easier to know which pairs had paired “a lot” vs “a little”. It was a helpful tool. One of the team members even wrote an app for that: http://www.pairtrix.com/.

    Regarding people determining the most efficient pairs on their own: our team identified that were were bad at doing this. The same people tended to pair up more out of habit rather than efficiency.

    Regarding braking up efficient pairs: the matrix tool was just that: a tool, and not an enforcer. If pairs wanted to stick together until the end of a user story then they did. If it made sense for them to work on several stories in a row then they did so, also. But at least the tool prompted a conversation about whether or not it was time to switch rather than falling into an easy (but not necessarily efficient) habit.

    FWIW the project I’m referencing is the only project where I have ever used a pairing matrix; it is also the largest full-time pair programming project with which I have worked.

    May 10, 2013 at 8:04 am

Add New Comment Cancel reply

Your email address will not be published.

Joe Moore

Joe Moore
New York

Recent Posts

  • How We Use tmux for Remote Pair Programming
  • Integrating Remote Developers: Intuitive, Flexible Video Conferencing
  • Integrating Remote Developers into Large Teams
Subscribe to Joe's Feed

Author Topics

agile (117)
pair programming (6)
remote (4)
remote pair programming (3)
tmux (1)
android (10)
mobile (10)
robolectric (4)
java (4)
c2dm (2)
testing (8)
apple (1)
ipad (1)
pivotal tracker (6)
sf.tug (2)
desert (2)
ruby on rails (13)
javascript (2)
capistrano (1)
palmpre (1)
active record (3)
activerecord (6)
mysql (1)
rubymine (1)
fun (4)
acts_as_fu (1)
rspec (2)
xp (1)
flash (1)
  • About
  • Case Studies
  • Team
  • Community
  • Careers
  • Contact
  • Labs
  • Events

Contact Us

contact@pivotallabs.com
+1 415-77-PIVOT
TwitterLinkedInFacebook

Pivotal Tracker

Tracker is the award-winning agile project management tool that enables real-time collaboration around a shared, prioritized backlog.
Visit pivotaltracker.com >