Saturday, November 01, 2014

Critical factors for effective distributed teams


With distributed teams, it is very easy to develop an us vs them relationship.  There is a whole lot of informal interaction that occurs when we're co-located that don't happen when we're separated.  A lot of this random interaction might seem trivial and pointless but it all contributes to remind us that we're dealing with humans and not faceless entities.  This is essentially about propinquity.

Critical Factor #1: Increase the amount of informal interaction to humanise relationships

Some techniques I've seen that have been useful include:
  • Always-on video conferencing.  If there's too much background noise, mute sending on each side which allows you to un-mute to call out to the other side for ad-hoc communication.
  • Flying people to visit to and from each location.  This is especially useful at the start but also needs to be done regularly during the entire delivery.
  • Electronic collaboration tools like chat rooms, Yammer, etc.
Although, it's important to increase the humanising interactions, it's also important to reduce the amount of interactions required to do the actual work.  No matter what we do, it's harder to communicate across locations compared to the same location.

Critical Factor #2: Decrease the amount of communication across locations required for doing the work

Some techniques I've seen that have been useful include:
  • Separation of work across locations by self-contained capability, not by function.  This typically requires a loosely coupled architecture, for example microservices.
  • Integration contract tests.  A lot of ongoing communication is related to clarifying unclear expectations.  Integration contract tests are a way to be much more explicit and concrete about expectations as well as provide a trigger for when expectations are diverging thus requiring communication.
Co-location compensates for many team practices that would otherwise be ineffective.  Problems that seem small in a co-located context become very large when distributed.  Before you scale up a distributed setup, you should already be able to detect the types of problems you'll face from a co-located setup, but the problems will just seem very small.

Critical Factor #3: Sweat the mundane details.  Minor issues when co-located are major issues when distributed.

A particular mundane detail that I've seen that is critical is...
  • Keeping the communication technology working no matter what.  A common error is not forecasting expected demand in bandwidth to support video conferencing as the number of teams grow.

No comments:

Post a Comment