Tips from 12+ years of experience working in globally distributed agile software development teams
Globally Distributed Teams consist of two or more (sub-)teams working together from different geographical locations to accomplish common goals.
I have been part of many globally distributed software development teams as a developer, lead and manager during my career. Working together with teammates from various countries, cultures, time zones and backgrounds is always fun, but challenging as well.
Build Trust and Interpersonal Relationships
Everything begins with relationships. Close relationships are built with local teammates as you interact with them a lot. But it is equally important to build similar relationships with your remote teammates as well. Try these with your remote teammates and see how fast you become friends.
Trust begins with the relationship and strengthens via continuous performance.
In an ideal world, you’d progress smoothly, achieve all milestones, perform as expected always. But in reality, things don’t always go smoothly. If your remote team members/manager do not see the impediments which slow you down, “trust” can be affected. You have to have transparency to avoid that.
Therefore, try to give a clear picture of the status always —be honest and open, highlight impediments during daily scrums, do your sprint reviews, retrospectives, keep the sprint board/backlog updated and request/give continuous feedback.
Great software is typically produced only when there is great communication between the people involved. Poor communication will limit the quantity, quality, and correctness of the results.
Effectiveness of communication depends on,
Mode of communication
The following are a few modes of communication, ranked according to the easiness of exchanging information.
Communication is not only about language skills but also about listening, friendliness, confidence, volume, clarity, tone, body language, empathy, respect, and responsiveness. A good vocabulary means nothing if you have no respect or understanding for another teammate’s opinion.
Have tools for collaboration
Use the right tools effectively for collaboration. They will help with project management, communication, transparency as well as productivity.
There are many tools. Select wisely, and use frequently.
Achieve Technical Excellence
According to the principles behind the Agile Manifesto, “Continuous attention to technical excellence and good design enhances agility”.
Technical excellence is curiosity towards continuously learning new skills, trying out new approaches, and striving to enhance the quality of products and code. Encourage team members to use online learning platforms such as Coursera, Udemy, Pluralsight, etc. to improve their technical competence.
Teams can set standards/calculate metrics (code/product quality-related) to identify areas for improvement. Try Pair Programming, Test-Driven Development, Refactoring, Continuous Integration & Delivery etc. to see what helps you to produce better software faster.
Build Domain Expertise & Product Knowledge
In globally distributed teams, it is common that (sub-) teams from different locations have different levels of domain expertise & product knowledge. Teams from certain locations may not have good exposure to some domains and/or access to data due to various regulations. (e.g. GDPR)
You can try these to overcome such challenges,
Remote working & distributed teams are becoming more popular than ever. Hope this post would help you make your experience better!