In a previous post I talked about the issues I faced in two separate projects where we had implemented daily pair switching. In this post I'll talk about an alternate strategy and how we would go about fixing the issues that prompted us to use daily pair switching in the first place.
On obvious thing that needs to be done (which in fact is something you need to have regardless of your strategy) is to have small cards. The ideal size would be day-long cards which is difficult in real life and so a realistic maximum size for a card would be around 4 days, 5 would be just about stretching it.
That being said the pair switching strategy that has most worked in projects I've been on are where a pair sticks together for a complete story at which point they switch. If another pair happens to finish at that some point or will relatively soon they can just swap. Of course, this doesn't happen all the time and the team needs to be able to break apart another pair even if they're story isn't completed.
One problem which creeps into a team when switching happens less frequently is you find favourite pairs, by which I mean two developers who are always pairing together (albeit with breaks of pairing with others). This happens because there are certain developers who are naturally more compatible with each other and enjoy working together. But, in the longer this adversely affects the team because of reduced distribution of knowledge. If this turns out to happen on your team you could introduce a pairing matrix. Essentially, a developer/developer chart to see if people have reasonably evenly been distributing their time.
The second most common problem is similar to the first one and the solution is also quite similar. What happens is get a lot of domain (or technology) experts. Although, people cite this as a reason to adopt daily switching, I find it happens just as often in daily switching teams. The solution is to again have developer/domain matrix to see who's worked on what. This is consulted when deciding which story to pick up from the card wall. I find this to be the perfect balance of spreading the knowledge and having developers learn quickly (by actually touching all the layers of the application while implementing one story fully).
I started off by saying that stories can't be longer than a week. But, invariably there are some (hopefully just some) stories that go on for longer than a week. At this point, a switch has to be forced, because if that does not happen the pair just stagnates.