Co-locating your agile team is common advice given by agile coaches. I strongly subscribe to the benefits of co-location and think we should do it whenever possible.
Strong collaboration and alignment between team members that are NOT co-located is definitely possible as illustrated by the many successful open source projects, taken on by contributors from all over the planet. Furthermore, modern communication technologies have come a long way and can be a great aid.
If team members subscribe to a shared goal and make commitment to collaborating towards that goal, then they can move mountains, where ever they are. Aligning minds by far outweighs aligning bodies.
Aligning bodies does make it significantly more easy to align minds though.
These are some resources on the matter:
From Alistair Cockburn: Crystal Clear, chapter on osmotic communication and common mistakes
It is true that many projects have shipped software despite developers sitting across hallways. However, team leaders repeatedly tell me, “Give me three to five developers in one room, keep the distractions away, and I can get the software out. Don’t spread us out.” That means they visit each other, draw on each others’ whiteboards, and look over each others’ shoulders at their programs and tests.
Fowler: Remote versus co-located work
Ideally a team is co-located in the same physical location. This does put limitations on who you can hire, namely only people within commute-distance. Remote teams can be more efficient if the members simply are better at their job.
Summary of advantages
Based on Tom and Geri Scrum:
- Better communication
- Immediate communication
- Team building
So co-location = less misunderstanding + fewer work blockages + becoming more efficient as a team
I have not explored these resource yet, but I intend to do so later:
- Highsmith, Agile Software Development Ecosystems
- Eckstein: Agile Software Development with Distributed Teams: Staying Agile in a Global World
- Eccles et al.: The Impact of Collocation on the Effectiveness of Agile is Development Teams