There have been a few posts recently in various forums about mixing agile with offshoring. At first I had a repulsive taste in my mouth. You see, I've never been in an environment where offshoring has decreased the cost of development while maintaining a similar level of quality or time (or reduced the time with the same cost). I'm not saying that it is not possible, I'm just saying that the companies I've worked in that tried it have not been good enough to make it work in their favor. In my last group, we practically had an A/B test team that proved this for me.
My personal history was then combined with my positive experiences with agile and co-located teams. I saw the huge productivity gains when everyone on the team was moved into a single room together. I saw similar gains with the product owner was moved nearby and the usability and testing roles were given hotel desks in the room to spend part of the day (they were matrixed, so they spent 2-4 hrs a day in the room). To me this was proof that closer was better. Time zone issues, communication issues, latency of conversation, team chemistry.... all of these things improve with co-location. Accountability is much higher because you can see the peer that made whatever statement.
Thus, my view was always... why would I want to work on a team that isn't co-located? I hold high expectations of myself and my work. Why would I want to immediately suppress my potential by being in that situation?
But this week, I had a new thought. Some companies offshore. Clearly the model has to work for them to continue to follow this model (or they are complete idiots). Does agile improve this model?
Yes! It would! Agile is greatly about quicker feedback loops. What better way to uncover communication gaps, quality and time issues, or any other set of problems than by shortening the window of time before you uncover them?
So... I'm suddenly in a new camp. Agile and offshoring is not a bad idea, it doesn't completely suck. Actually, if you feel that offshoring is your necessary way of gaining an advantage, then agile might be one of the only ways to manage it well. Instead of looking at offshoring as a way to ruin agile, I'm looking at agile as a way to improve offshoring.
That being said... I still want to work in a way where I can be face to face with my peers at least weekly.
Disclaimer: In no way do I want to reflect any discrimination or judgement about people in offshoring centers. Many of the people I've worked with in India, Romania, or Germany are equally capable as people I've worked with in the states. I believe the disadvantage of offshoring has nothing to do with the individuals and all to do with the structure/model in which it is set up and managed. The point is that it takes extra cost to manage, and this is a cost that doesn't exist in a co-located setting.