OddTeams

Last edit April 7, 2005
Any team I am a member of is bound to be a little odd....

OddTeams is a practice used to deal with the situation where you have an odd number of developers who are trying to pair program. The basic practice is as follows:

  1. Give each pair station an identifier, preferrably a number
  2. Pair up on the stations to the extent possible. I recommend letting a stronger developer take the helm as the loner to start.
  3. Set a timer for a reasonably short duration. We have found 20 minutes to be a comfortable clip.
  4. Hack away
  5. When the timer goes off, switch. Follow rules of:
    • drivers stay at their stations and become navigators
    • navigators move to the next station and become drivers
    • alternate between moving to the left and moving to the right (see below)

For three people, two stations it looks like (parens represent a pair at a station):

  • (1 2) 3

  • 1 (2 3) > (2 moves right)

  • (3 1) 2 < (3 moves left )

  • 3 (1 2) > (1 moves right)

  • (2 3) 1 < ...

  • 2 (3 1) >

For five people, three stations, it looks like:
  • (1 2) (3 4) 5

  • 1 (2 3) (4 5) > (2,4 move right)

  • (3 1) (5 2) 4 < (3,5 move left )

  • 3 (1 5) (2 4) > (1,2 move right)

  • (5 3) (4 1) 2 < (5,4 move left )

  • 5 (3 4) (1 2) > ...

It continues to scale in this manner. Notice that the outer pairs get increased focus from individuals -- i.e. one full hour of attention at a station, while the inner pairs get more pair focus.

Cons:
  • High frequency context switching, not necessarily at points-of-closure. If you are typing mid-stream when the buzzer goes off, it doesn't matter, you go ahead and switch.
  • Violates the principle of AcceptedResponsibility.
  • Other?

Pros:
  • Time passes even more quickly [for us] than our normal "EvenTeams" pairing, possibly due to the increased time-limit focus
  • Provides an explicit framework for dealing with O(n^2) communication issues via a hive-like collective conscious
  • Every programmer works with every other programmer
  • Every programmer develops on every part of the system
  • prevents keyboard hogs and lazy navigators through team process rather than personal discipline

Feedback appreciated -- JefNewsom


What we do here is, just avoid odd number of devs. (Disclaimer: we're not extreme yet, still ad[ao]pting.)

So if the team ends up having odd devs, we split the pairs at the stand-up meeting as usual. The person who gets to be pairless at any given time:

  • does some sysadmin or dba work. We seem to be always needing some.
  • refactors the html/zpt/css stuff.
  • chats with customer.
  • pairs with the coach when he/she is available.
  • spikes stories for the next day.***


See PairProgrammingTrainingWithBlitzClock PairPromiscuously