10 Best Practices to Get the Most from Your Distributed Agile Teams
Distributed agile teams can be placed in different locations.
- The team can be located in two or more locations;
- Product Owner can be on site, and the Team is distant;
- A mesh model can be used: product owner is not with an on-site team, and development team is distributed across different locations.
There are some good practices that you can follow to achieve successful distributed agile teams.
1. Provide shared project vision
- You should visit all the locations in order to share the project vision;
- You should involve the entire team in this activity in order to define the ownership of the project results;
- Perform release planning, sprint planning and daily scrum meetings with the full team members.
2. Regular meetings are needed to establish trust
- Provide strong communication infrastructure, like Skype, video conferencing, phones, high bandwidth, big screens to facilitate virtual team etc.
- Enable live meetings between your client, local team, and the distant team.
- Organize visits at frequent intervals during the project.
- Have the distant and the on-site teams working and collaborating together in order to improve relations and build strong trust;
- Only relationships based on trust will bring you high performance in your project.
3. Apply strict norming and chartering plan to achieve high quality
- Define the activities that the team should perform to enforce and maintain high-quality software.
- Define standards for software coding, code reviews, programming in pairs, source code control, tools for defect tracking, the definition of ‘ready’ and ‘done’, etc.
4. Enable continuous integration with high test coverage across all teams
- Continuous integration is important because it will help you to build items rapidly;
- Team’s aspiration towards component building will reduce waiting & debug time between teams and it will enforce trust between them.
- You should avoid the old ‘big bang integration’ at the end of the project, which in very often a reason for schedule postponing.
5. Create a synchronization and communication plan
- Define the communication channels between the client, the local team, and the distant team, as well as the synchronization procedure.
- Establish daily and distributed meetings, retrospectives and sprint review time.
6. Use short sprints
- Short iterations enable you to discover what the distant team is doing on a regular basis. You can give quick feedback and redirect the team instantly.
- It is not good to accept a big project and hand it to a distant team – in expectation of results after 6 months.
7 Perform 3-4 sprints with entire team at local site
- You will need 3-4 sprints (or 8 weeks) to build good team relations.
- On project inception – it is good to have distant team travel to the customer site and work together with the on-site team.
- In these sprints, you can discuss and formalize the norms and charters together and also perform small sprint activities – like setting up frameworks, initial architecture / design etc.
- The distant team should build a direct relation with the client, and get to hear requirements directly.
8. Have a Scrum Master at both locations
- You should provide Scrum master at both locations since the project needs to be worked within the context and environment of each team.
9. Ask for features teams, instead of component or layer teams
- This will reduce the integration time, and will improve quality, team spirit and will enable knowledge redundancy.
10. Include all team members in release planning, iteration planning, review, and retrospectives
- Every team member should participate in the sprint planning meetings, sprint reviews with the client, as well as retrospectives.
- If the distant team does its own retrospective, then share the results with others teams.