Applying Agile to Distributed Development: A Format for Success


When everyone knows the project vision and no one engineer has a single area of responsibility, the work that the team needs to achieve becomes visible across multiple sites. Plus, with working software as the primary measure of progress and every team member scored on the code and the code reviews he or she does, team members become more self-motivated and quality becomes a team-wide responsibility.

Concentrate on Test Automation
AgileFusion specializes in mobile application development, so for our purposes, the feature must be fast and responsive in order to ensure good usability and end-user satisfaction. In a manual testing scenario, a tester writes the test cases, tests them, and gives his feedback to the developer. While this is taking place, developers have already made numerous changes to the code. When you consider many developers making 24/7 changes to code in a distributed environment, the feedback received from the tester is immediately outdated and faulty. With test automation, once a test case is written it can be executed and the application can be tested again and again as soon as any change in the code occurs.

Automated testing gives our teams fast, reliable feedback when making changes—something you just can’t do manually, especially when working with distributed teams. Automating the most important end-to-end use cases is the top priority. Those cases that continuously test the critical features of the app, such as finding and purchasing a product, opening a book, and finding or adding a new contact, would guarantee that such cases continue to operate and are never missed or overlooked.

Test automation metrics also help our teams set goals and measure progress. Most successful test organizations track and publish test automation metrics, which inspire pride and competition among their teams. These build metrics are important because these reports help our teams to pinpoint the issues that don't break the products but slow down the performance.

Finding the root causes of performance at the end of the project can be very time-consuming. Our reports help us to quickly identify the build where the issue first surfaced and the code that introduced the performance degradation.

Applying agile techniques to distributed development does work, but it requires more than simply adopting a particular framework or process. To be successful, you must create an inclusive environment where all team members are proactive, fully understand the big picture, and are dedicated to the success of the entire project, not just their particular piece of code.

Effective communication is key to making this happen. Leveraging blends of technologies for teams to communicate and share information establishes trust. The result is a more effective team, regardless of where they are located.

Communication and trust also allow you to eliminate silos of ownership. Quality and efficiency are greatly improved when every member of the team understands the big picture and is expected to contribute to every aspect of the code and engineers are measured on both fixes and code reviews.

Finally, automated testing is crucial in an environment where development is taking place 24/7. It not only acts as a safety net against new development, but more importantly, it also frees up a lot of precious developer and tester time—allowing them to focus on the things they do best.

About the author

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.