There seem to be an implicit assumptions amongst many of the Agile practitioners that Agile is best practiced in a small and co-located teams. I feel that in some sense these assumptions may be because the complexity of managing Agile in a distributed team/s (geographically distributed) is certainly more than practicing Agile in a co-located teams.
In my experience, managing Agile in a Distributed requires some special effort but it certainly can be practiced to a large extent. The major challenges comes in the face-to-face part – stand-ups, pair programming, etc. However, these challenges can be overcome by proper supplementation of roles, methods, practices, and tools.
I have captured my thoughts associated with how the complexity associated with practicing various Agile Values in a distributed environment can be eased in the table picture below.
The table above is self-explanatory. As you can see, to implement some of these values in distributed teams have the same complexity as in co-located teams, while in some the complexity of the practicing these values can be eased by proper usage of software engineering methods (my definition of a ‘Method’ is a combination of roles + habits) and some good tools. However, there are some practices of Agile (e.g. collaboration amongst teams is a big one here) where inherent culture and core values of the distributed team plays a key role.
On the side note – the term “Distributed Agile” can be confusing sometimes. For many who I have talked to, for them it appeared that they thought it was a new avatar or flavor of Agile. Distributed Agile is practicing Agile in distributed team/s. Simple!