When physically pairing is not possible in Agile!
I work in a young company. And by young, I mean the average age of my colleagues in Software Development is not more than 30 years. Before we went agile, our company had a policy of allowing people to work from home if needed. So all the young parents were greatly benefitted with this policy. The quality of work did not suffer and I think that was due to the fact that they were happier at home with young children and that was reflected in their work as well.
Then cometh the age of Agile!
We put proper emphasis on pairing (in my humble opinion, rightly so) and working from home from developers became harder and harder. QA had it a bit better because it was possible to do their work alone at times, but come time for estimation and writing features for a project, even they were not free. And while providing day care at workplace [ Day Care – An office affair and Babies at work ] is a possibility, it’s still a long way off.
So in the meantime, what do we do?
At our workplace, we have been provided with Macbook Pro’s for everyone. The default instant messaging client is called iChat, which comes with a provision to chat automagically on the local network, and ability to utilise the associated video camera. This I think, could be utilised to our advantage. Why does one need to be physically present while pairing? I don’t think you do. While the immediate presence of your colleague has the obvious advantages, the Agile advantages, I think, are more concerned with immediate feedback.
When you pair with someone, you want to ensure that both of you have some investment in the code being written: You can share the screen with iChat allowing both you (at work) and your pair (at home) to be able to play programming ping pong.
While pairing, you want immediate feedback if your pair has spotted a mistake in what you have done or that they don’t like what you have done: iChat enables voice support in conjunction with video.
I am not saying that it will be perfect. No new way of dealing with shortcomings in an existent methodology is, but we have to try. As a company, you have to ask yourself; in what ways do I get the best out of my employees? Keeping young parents in your company happy by allowing them to be parents and Agile practitioners (in that order), is one very good way to do it. And yes I know, I have specifically quoted Apple products in my example; that is only because I have experience with them. For dedicated linux users, you have pidgin/gAIM/Kopete. For others you have Skype/MSN/GTalk. All this is workable. We just have to have the will.