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:
- Give each pair station an identifier, preferrably a number
- Pair up on the stations to the extent possible. I recommend letting a stronger developer take the helm as the loner to start.
- Set a timer for a reasonably short duration. We have found 20 minutes to be a comfortable clip.
- Hack away
- 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