Co-located, Outsourced, Distributed
In the beginning, software teams were co-located. Everyone sat in the same room, met frequently, pored over papers and blackboards, and discussed their plans. In those days, offices were a lot bigger so that everyone would be in the same place. I remember huge cube farms at the now extinct Digital Equipment Corporation.
Meeting in-person is still the preferred option for most managers, and many team members. Scrum-based Agile methodologies will always recommend that you work in co-located teams. That is one of the major weaknesses of Scrum. Most startups will try to pull all of their team members into one location. This reduces design time, but increases recruiting time.
An "outsourced" team is a co-located team that is in a different location from your main project planners. Outsourcers like to organize complete teams in their home cities. However, you don't need to hire outsourcers to get this topology. Any large organization or large project will have teams in multiple locations.
An outsourced team tends to be managed like a co-located team. Each co-located team has a specific area of responsibility or expertise. The team expertise can be functional - for example, "QA" or "Hardware." However, an Agile team will try to be cross-functional and divide the work so that each team delivers a complete product or feature. In this type of organization, there is often a fairly awkward movement of work between teams, described as "throwing something over the wall."
A distributed team does not throw work over the "wall" between teams and specialties. It tears down the wall so that a person in any location can participate in any of the work that is required. It is organized as a single global team.
Your teams may become distributed because:
- You want to work with someone with special skills in another location.
- A member of your team moves to a remote location or works at home for family reasons.
- You have outsourced teams that you want to reorganize into true distributed teams.
- You want to solve your talent shortage by recruiting globally.
- You already work in a global corporation.
I have rarely been on a conference call with my customers at SAP that didn't include people on at least three continents.
Co-located teams are a luxury. They allow us to use our habitual management and communications skills. However, distributed teams are a necessity. It has been a long time since I have seen a large team that is completely co-located, and today I rarely see even small co-located teams. We can design our Agile process to unblock these teams and make them productive. And, because we have access to more and better talent, they will ultimately be more productive than our old co-located teams.
A truly distributed, single global team is the most flexible and scalable way to organize continuous delivery.