Distributed agile teams can exist in different forms like.
- Product Owner is onshore, Team is offshore
- Team split between two or more locations
- A complex model like product owner not with onshore team and development team distributed across time zones
I would like to share top 10 good practices that are implemented by successful distributed agile teams.
-
Meeting face-to-face is the only way to build trust
- Budget-in recurring face-to-face meetings between your customer, local team, and offshore team
- Having strong communication infrastructure like Skype, Video Conf, Phones, high bandwidth, big screens to facilitate virtual team etc
- Seed visits in frequent intervals across the length of the project
- Both offshore and onshore teams sitting, working and partying together is a must to ignite relations and build strong trust
- The highest performing teams are those based on trust
-
Establish a shared project vision
- Participation in this activity by whole team emphasizes ownership of the project results
- Use collocation travel as best opportunity to build this
- Doing release planning, sprint planning and daily scrum together by team builds similar shared vision
-
Establish continuous integration (CI) with high test coverage across all teams
- CI is important because it detects build issues immediately
- Avoids the classic “big bang integration” at the end of projects which in my experience is the #1 reason for schedule slip
- Teams striving towards build-state always green, reduces waiting/debug time between teams and hence build trust between them.
-
Establish a synchronization and communication plan
- Define how customer, local team, and offshore team will communicate and maintain synchronization
- Define daily and distributed stand-ups, retrospectives and sprint review time
-
Establish a rigorous Norming and Chartering plan to achieve high quality
- Set of activities the team will perform to absolutely insure and maintain high-quality software
- Define consensus based design, Coding standards, Code reviews, Scrum-of-Scrums, Pair Programming, Source control philosophy, Defect tracking mechanism, Definition of “Ready” and “Done” and more.
- You can read this excellent post on Norming and Chartering
-
Use short sprints
- It is not wise to coin a big project and hand it to offshore team in expectation of results after 6 months
- Short iterations insure that you see what the offshore team is doing on a regular basis. You can give quick feedback and redirect the team quickly
- Read my earlier post on When is Good Day to Start a Sprint
-
ScrumMaster at both locations
- Most impediments will need to be worked within the context and environment of each sub-team
-
Execute 3-4 sprints with entire team at local site
- When project starts it is wise to have offshore team travel to customer site and work together with onshore team
- It takes 3-4 sprints of 2 weeks each at-least to build relations
- Use this to have discussions and formalize Norming and Chartering together and also doing sprint zero activities together like setting up frameworks, initial architecture & design etc.
- Offshore team will get to build relation directly with client and get to hear requirements directly.
-
Involve full team in release planning, iteration planning, review, and retrospectives
- Everyone on the team participates in the sprint planning meetings, sprint reviews with your customer, and retrospectives
- If sub-team do their own retrospective, then share results with others teams
-
Go for features teams over component or layer teams
- This would reduce integration time, improves quality, team morale and builds knowledge redundancy
There are few more practices and patterns noticed in different distributed teams. In my corporate agile and scrum in-depth workshops you get to understand 30+ good practices that are applied by successful distributed teams and also some successful patterns and team structures to make it successful.
Catherine says
Excellent advice. I would add “plan budgets together” and “plan team events” together. The hardest part about working in a distributed environment is simply “feeling like we are on the same team.”
Bill Schaller says
A starting point for this discussion could have been the 10 biggest challenges to distributed teams. It is hard to say from this posting what problems you are trying to solve? There are many broad items listed that make it difficult for me to understand what the practice truly is trying to achieve.
One thread that may be assumed in this posting is the challenge of time-zones. How do you work with 5 hour or 10 hour time zone differences between teams/product owner?
I have had a number of years of experience working with distributed teams between North America and Asia. There are lots of challenges that you will encounter. For example, travel restrictions that make it impossible to bring teams together for any amount of time. Especially if there are large sites of 200+ developers involved. Cost will restrict your abilities but also the differences across continents wrt computing, data centres, tools and networks. To create a homogenous CI environment becomes a real challenge if not impossible. One last challenge to reflect on is transparency and trust. Teams working together at one site have instant transparency and are able to build trust between themselves quickly. However, this does not progress as well with distributed teams. Teams have to develop working relationships and be able to trust each others intentions and capabilities. This takes a tremendous amount of effort and dedication.
I have reflected on a few challenges that need to be understood before attempting to apply practices. I would be interested in how distributed teams work together to handle common impediments between sites?
Avienaash Shiralige says
Bill, Seeing your feedback I expressed my opinions on an article today which addresses Communication and Trust challenges. I am planning to write few more posts in coming days to take this forward.
Appreciate you coming over here.
Avie
top personal training courses says
I truly love your blog.. Pleasant colors & theme.
Did you build this website yourself? Please reply back as I’m planning to create
my own site and would like to find out where you got this from or what the theme is named.
Thanks!
Avienaash Shiralige says
I’m glad you liked it. It’s built on wordpress.
Proquotient says
This is an extremely useful list of tips and advice for people who are working in the field of Agile like Scrum Masters. These tips will allow them to improve their Agile implementations and also become better at their roles. Thanks for sharing this great article.