The Agile Manifesto emphasizes the importance and nature of communication in the software development process. Two of the twelve principles underscore this:
Business people and developers must work together daily throughout the project.
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
On my current project, the five members of our development team are scattered across four cities in three states. Geographically distributed teams seem to be more and more common as telecommuting/remote working and offshore development expand.
When a team can't be face-to-face, how can tools and technology be employed to make practices like daily stand-up meetings, code reviews, pair programming, and the XP concept of "whole team" effective? How can these practices themselves be tailored to best suit a geographically distributed team?