Friday, June 24, 2005

XP when 'Working from Home'

After a long time I am back into a project where I work at the client office. Most of my colleagues travel to work on Monday and leave on Friday. Taking a flight every Monday morning and Friday evening , can become really painful in the long run. It becomes tough to sustain the same pace. One solution is that work from home on Friday, or give an option to work from home to get pending work completed.

Sounds fine , but the problem comes when you try to sustain the XP best practices like Pair Programming/Rotation, Collective code ownership etc. I beleive that once the door to "work from home" is opened, it breaks the XP cycle there and then. Since each XP practice is dependent on another practice, for example without pairing, refactoring, it is really difficult to gain the benefits of collective code ownership.

Also it leads to the problem , that newbies to XP , who are sceptical about pairing, might be drifted to the option of working from home, than try out and see whether they can benefit from pair programming.

Imagine the horror, when a fellow developer decides to go on a refactoring spree over the weekend , and checks in all the code , all alone ! Monday morning , rest of the team will have to spend some significant time understanding what has happened over weekend. More problems come up, if some developers disagree to the approach. The cycle breaks, and people start owning pieces of the codebase.This might even give rise to a blame culture which is even more unhealthy for an XP team.

How to solve this issue ?

I am looking for ideas on this..

Off my head I can think of..
  • Remote pairing (using some XP tools available in market) ?
  • Individuals in the team not taking huge tasks alone (like big refactorings)
  • What people decide to work over weekend is decided on Thursday in a developer huddle.
  • People doing any imp stuff over weekend take a small session in the coming week to let the team know about it
  • Maybe have alternate weekends as 3 day weekends, stretch for 9 hrs a day to get stuff done. This way no one works on weekends and gets a long break once in 2 weeks.
  • Decide on core team hours ?