By- Anurag Agrawal, Director Engineering, GlobalLogic
“Agile Development” is an umbrella term for several iterative and incremental software development methodologies. The most popular agile methodologies include Scrum, Kanban, Lean Development, Crystal, Dynamic Systems Development Method (DSDM) and Feature-Driven Development (FDD).
While each of the agile methodologies is unique in its specific approach, they all share some core values like continuous planning, testing, integration, and other forms of continuous evolution of both the project and the software. There is no doubt about the fact that Agile methodology works best when the team is co-located as a co-located team will have better coordination and understanding.
However, it is also true that at-times co-location is not feasible. Often for project and business success, we end up with a distributed team in most of the set-ups. In short, a distributed team is unavoidable from a business point of view but not an ideal situation from the Agile standpoint. Therefore it is important to understand that how Agile can work best even in a distributed environment.
To do that, we need to understand the pain points of a distributed environment and should put some safeguards around it. A distributed team with same “Safeguards” can perform like a co-located team and it will surely play a big factor in the success of the project. Let us have a look at few of the safeguards that we can introduce to make our distributed Agile process more robust!
Right Mindset of Team(s)
First thing first, our team(s) should understand and acknowledge the fact that we are a "distributed" team and not "co-located" therefore we all need to be more disciplined and committed. Being distributed, we have to be flexible to accommodate possibly different time zones and culture of our other teammates at different locations. If needed, we should plan some sessions on the culture of other teams so that our teams are aware of each other. If teams have right mindset and understanding, half the battle already won!
Understanding People and Culture Differences
In a distributed team, we need to be sensitive and aware of differences in culture and hence people behavior. There are multiple angles in this aspect but a couple of major ones in this regards are described below.
Effective Communication is a key in the multi-culture environment. A simple simile or nod may interpret as something you had not intended. For example, if a team member will not look you in the eye when speaking, do not mean something is wrong here. People from any Asian and Latin American cultures avoid direct eye contact as a sign of respect.
Language differences can make communication difficult, but if you are creative, you can find ways to communicate effectively. Talk slowly and clearly. Restate the statement in a different way or repeat it more slowly. Use other methods of communication, such as making drawings, demonstrating or acting out, or using hand motions.
It is not very easy to gain an understanding of cultural difference, for whatever reason. In these situations, the best approach is just to acknowledge that some people are different and to accept that is okay.
Use of Online Tools
In a distributed environment, ideally, all required information should be available online, so that it is available 24*7 irrespective of time zone. Rather than using boards, charts etc. as a physical display, we should use online displays so that everyone is referring the same thing. Any plans, road maps, metrics etc. should be available and visible online. This will ensure that entire team is referring same artifacts and there is always a single source of information all the time.
A Well Defined Overlapping DAILY Time-Slot
This is one of the most critical aspects of any distributed team especially when they are in different time zones. We have to have some discipline around making teams available for each other especially in a different time zone. A simple method of doing this is to define an agreed time window that suits all time zones. For example, for India and USA time zones it could be 5 pm – 7 pm, IST or 7 AM – 9 AM, IST. In this agreed window there should not be any local meetings planned, this window should be reserved for across the location communication. All common meetings like requirement clarification, common stand-ups, and retrospectives should be planned in this slot. Team members should be online on agreed tools (like Skype/chat tools/video conferencing / any other means) so that their counterparts from other locations can approach them freely. This is a simple rule but helps a lot!
Use of Right Communication Tools
You would agree that Emails are not the ideal tool for communication in many situations. We need discussions frequently to close the loop quickly. Right communication tools are key to productive communication, we should have these tools available based on what we need. For example, video conference room may be required for requirement discussions, retrospective meetings. Screen sharing tools may be needed to discuss design in various stages. Skype/Chat tools should be available for ad-hoc conversations. Easy to use and easily available communication tools make our team's communication easy and smooth!
Create Virtual ONE Room for all Important Meetings
At times, we need discussions where we want everyone in one room. In a distributed environment as well, we should have this arrangement. We can use video conferencing or some virtual meeting room (Google hangout etc) where people can see each other and screen/document could be shared seamlessly. More than logistics, it is at-times mindset issue, in a distributed team, we assume that we can't/doesn't need virtual meeting rooms, but that is not the case. We need in-room meetings and we should have those in a distributed environment as well using virtual rooms.
Right Team Composition
Right team composition is another important aspect that we should consider in a distributed environment. We should have right back-ups/proxies for roles that can become a bottleneck in any location. A typical example of it is Product Owner / Requirement Owner role, everyone needs these persons all the time, and we should have proxy/back-up of these roles in local time-zones to avoid any delay or productivity loss.
Face Time among members at different Locations
One of the best ways to experience and understand other cultures is to actually live among them. It might take a while, but short-term travels across the locations can be the best way of knowing each other. We should plan temporary co-location by planning short-term travel across the locations. It will help the team to know the environment, culture and other aspects of other location.
Team Bonding with other Locations
We should plan team-bonding activities across the locations as well. One example of this could be to have Hack-A-Thon teams consisting members from different locations. Other options could be friendly quiz, competitions, knowledge sharing across the locations. We can utilize common time window for these activities as well. A well-gelled team produces the best result!
Regular Sharing of Information and Knowledge across Locations
Information sharing should also be part of our plan for distributed teams. It may happen that some activities are happening in a specific location only and it is important to share that information and knowledge with other locations as well. We should formally plan knowledge sharing sessions among different location as other regular ceremonies.
Plan co-location of key members for critical events
Distributed teams don't mean that each and everything needs to happen remotely. We should plan travels as well for critical events. For example in the start of project /engagement, critical process/design decision should happen at one location where all key member should participate in person. We should plan for these travels to ensure that all critical events compete without any hassles.
Conclusion
With business being global day by day, distributed teams are unavoidable. In the fast and competitive world, we cannot let team’s productivity and quality affected by any reasons. By using some simple Safeguards like making team aware of facts, using right tools and planning we can completely overcome the downside of a distributed environment. This is a proven fact that Agile cannot only work extremely well with distributed teams but also be even more productive than the co-located team!
If you are working in a Distributed Team, review your project and find out, if you are missing some safeguards, if yes, bridge the gap now!