Many companies have adopted agile development methodology which is based on an informal process. Companies have faced many challenges in extending this successful way of programming to a distributed team, where resources are distributed in different parts of the world belonging to different time zones. As Ken Schwaber, author of The Enterprise and Scrum, said, “The best communication is face to face, with communications occurring through facial expression, body language, intonation and words. When a white board is thrown in and the teams work out design as a group, the communication bandwidth absolutely sizzles.” The need for best resources has encouraged many companies to follow distributed methodology which relies on a more formal mechanism. Extending distributed methodology to agile can create a huge impact in quality of end-product and within a team. Agile emphasizes in having team in one location, which is not possible in a distributed environment. Distributed agile process is fully agile but agile with a twist. The key to this is to make it feel less distributed as much as possible. This article shows you five best practices for creating a distributed agile environment: 1. Tweak Process: Companies normally following agile development methodology do not need a design upfront, as the requirements are continuously evolving. This process can be altered a bit by finalizing critical requirements and high level design. Uses cases and user case stories can be employed together with stakeholders clarifying the requirements. It is also a best practice if they could sketch out acceptance tests for these requirements. 2. Facilitate Knowledge Sharing: Having the team in one place offers: feedback, frequent communication, team biding, trust and a sense of responsibility. Since it is not possible in a distributed environment, it is best to promote sharing understanding of domain knowledge and functionalities, between and within teams. Tools which mimic white board can be used so that tasks can be assigned, prioritized, tracked and issues can be reported. As agile specifies ‘it is better to work on well understood functionalities rather than on new functionalities’; tools or other mechanisms must be enabled so that client can prioritize their requirements and the whole team can view it. Special times need to be prearranged for studying, evaluating and understanding these prioritized requirements. 3. Communication: Informal communication is the key to agile process. But being in a distributed environment, it becomes tedious to organize regular meeting as miscommunication may occur. So it is best to arrange informal communication through formal means, i.e. assign a person in each location to facilitate meeting. With the advancement of telecommunication industry, it is now easier to maintain continuous communication among the team in different locations. Video conferencing, SMS, online chats and other tools can be used. It is best to choose the occurrence of meetings according to your organization needs. A formal structure with organization and reporting is good since it improves coordination among the team. Teams in different time-zones may have difficulty in conducting meetings. Pick a suitable time which is best for all, for conducting the stand-ups, as explained in the figure below.
4. Build Trust: Trust has been emphasized in agile as it creates a feeling of responsibility; the team becomes easily adaptable and leads to less formal control. It is good to frequently visit team members in other parts of the world - distributed partners and a senior manager can do it. If team members have worked with each other earlier, it creates a spirit of being in one team. So organize teams in such a manner which will guarantee excellent throughput. 5. Trust but Verify: Even though trust endures between team members, it is best to verify the same, because there may be grounds of error or misdirection as it is distributed. Members in onshore locations can verify the designs, and an onshore QA can verify and test the project on a regular basis. It is best to do a documentation of critical artifacts. The requirements document can be finalized towards the end of software life cycle as the requirements change. By following the best practices, agile can be extended to a distributed environment. At Cabot, we follow agile but as said, agile with a twist! This makes it the most efficient form, and delivers quality end-products with great customer satisfaction. References:  Agile Development:Working with Agile in a Distributed Team Environment - Microsoft Developer Network  ‘CAN DISTRIBUTED SOFTWARE DEVELOPMENT BE AGILE?’, Balasubramaniam Ramesh, Lan Cao, Kannan Mohan, Peng Xu, October 2006 Interested in expanding your team to work in a distributed agile environment? We can help! Contact Us Today!
Subscribe to our newsletter and know all that’s happening at Cabot.
YOU WILL BE HEARING FROM US SOON!
We look forward to hearing from you!
YOU WILL BE HEARING FROM US SOON!