Distributed – adj.
Dispersed through a space or over an area; spread; scattered.~ Dictionary.com
Most people agree that teams often work better if they sit together. I like the osmotic sharing of information that it gives. I like the camaraderie that it brings. I like the team spirit that is generated and the trust that builds over time.
But it isn’t always possible or necessarily best. Many of us work in organisations that have a global presence. Many teams have at least one person who is working from home. Many times a company’s expansion means that it’s not possible for everyone to sit together. In fact, requiring people to work at a set location dramatically restricts your options of who you can bring on to the team. Martin Fowler points out that distributed teams can take many different forms:
- Multi-site teams have “two or more co-located groups at separate locations within a larger team”. But this can mean multiple sites across different floors of the same building, different buildings in the same town, different towns in the same country, or different countries — each of which generates additional problems to overcome (e.g. time zones);
- Satellite workers refer to situations where the majority of team members are co-located, but one or more individuals work from home or a different office;
- Remote-first refers to teams “where everyone works in a separate location, usually from home”.
During a recent 2-day Scrum course that we ran, one participant described his business which was very much distributed. He asked what we would do in such a scenario and we discussed various ideas. However, we wanted to get input from a wider range of people who had experienced similar challenges, so we scheduled it as a topic at the London Agile Discussion Group. We created two scenarios on which to make suggested improvements: the first had three teams across different UK towns; the second had people spread across the UK, US and China. The session produced interesting suggestions and concluded with us asking the groups to suggest a top 10 list of practices that would help the scenarios described. Unsurprisingly, nearly everything related to communication.
I’ve munged their suggestions into the following top 10 suggestions of how to improve the scenarios we provided:
- Allocate budget: improving the situation would need money to be spent, so they wanted to purse holder to allocate money to compensate for distribution;
- Hire the right people: build the teams with the right kind of people who would embrace the challenges of distant communications;
- Business alignment: set clear and transparent visions, goals, strategies and roadmaps;
- Stakeholder alignment: get the stakeholders to a position where they are willing to work with their counterparts in different regions to provide clear and unified guidance. For example, one person taking the role of product owner on behalf of all regions;
- Team alignment: lay good team foundations, such as common language/terminology, clear roles and responsibilities;
- Virtual meetings: technology still lets many teams down, so invest in a decent video conferencing system for daily stand-ups, planning sessions, retros, etc., get everyone a decent headset, and set aside a dedicated virtual meeting space;
- Face-to-face meetings: commit to getting people to meet each other in person. For example, regular visits to each other’s teams, rotation of team members (such as a 4-month secondment to a team in a different office), and even an company annual party;
- Build trust by sharing: share knowledge and learnings, share data, share outcomes from retros, share culture to foster understanding of cultural differences, share celebrations across teams;
- Collaborative tools: implement processes and tools that work for your situation (such as a common tech stack, coding standards, continuous integration tools, virtual boards);
- Don’t forget the Agile Manifesto: regular agile training refreshers.
As Fowler rightly says, there isn’t one solution to solve every situation; but maybe our top 10 will start you thinking about what puts you in a better position to deal with your distributed teams.
We’d love to hear your thoughts on what recommendations you would make in our comments section below.
Image courtesy of jhon casso (that’s what he says his name is!)
Nice article! It overlaps well with my Agile on the Beach talk. The face to face time is super important, it doesn’t have to be a secondment though, even regular short visits are great ways to start building strong relationships between individuals. If you can get everyone to meet face to face at some point during a project it will significantly improve the depth of the relationships between people in the team and reduce the impact of poor remote communication.
Also have a look at ScreenHero for remote pair programming, it’s a really good tool and has a few cool features that put it ahead of a regular screen sharing session. You can currently only sign-up for an account if you have a paid for Slack account, but once you have an account I don’t think you need to keep the Slack account running.
My slides are available at http://bit.ly/remote-teams-aotb2016 if anyone wants to get them. Video of the session will be available (hopefully) on the http://agileonthebeach.com website in the next couple of weeks.
Thanks Dave, that’s really helpful.
I’ve since found this useful article by our friend Craig Strong which might help some of you with specific approaches for meetings: http://www.strongandagile.co.uk/index.php/facilitating-distributed-team-retrospectives/
A friend of mine has recommended http://www.ideaboardz.com/ and https://funretro.github.io/distributed/ for distributed teams.
Monzo, in a talk at UX Oxford last week, said they use https://www.retrium.com/
(N.B. Not used it myself)