In this interview with Vishwanath Nagaraj, originally published in the Sticky ToolLook eNewsletter, he discusses the concept of distributed agile and some of the tools that help make the idea a reality.
In this interview with Vishwanath Nagaraj, a client principal and project manager for Twist at ThoughtWorks, he discusses the concept of distributed agile and some of the tools that help make the idea a reality.
Sticky ToolLook: We've read about agile experiences in all sorts of environments and organizations, but there is almost always an emphasis on the value of collocated teams. How have you seen "distributed agile" work?
Vishwanath Nagaraj: A fundamental principle that all agile approaches to software development rely on is the principle of feedback. From a feedback cycle perspective there is definitely tremendous value in having collocated teams. However, for various reasons--global availability of talent, economic benefits, scale, etc.--distributed development teams have become a reality for most organizations. The challenge is to adapt and evolve agile practices to facilitate feedback cycles on distributed teams within a project or program context.
As you move across the spectrum of how teams can be distributed, the challenges vary in their intensity and nature. For example, a collocated team could be distributed as soon as it outgrows its physical space and you move a portion of the team to another facility or a different floor in the same facility. Inter-team communication gets hampered as soon as you do this. You often see this in organizations that follow a more traditional approach to software development, where the engineering team and the testing team are working in different facilities.
As you move up the complexity scale, you see globally distributed teams--probably from multiple companies--working on a project. There, you need to start addressing not just challenges around communication that distance propagates but also around different time zones, cultures, and language.
As a clarification of terms, I refer to "distributed agile" as a delivery model where there are full-lifecycle teams at different locations and development takes place in all these locations. "Offshore agile" is a model we have used successfully at ThoughtWorks, where teams are distributed, but a majority of the development takes place in one location--albeit away from the customer location--and there is a smaller cross-functional team at the customer location. So, in a sense, an offshore model almost replicates a collocated model but not collocated with the customer.
I have been part of teams which have successfully applied agile practices on a spectrum of such distributed and offshore projects. Given the challenges, we have realized that rapid feedback cycles and visibility are more important in a distributed team than a collocated one. We have been successful when we have appropriately addressed three key elements: people, process, and technology.
Sticky ToolLook: What are some of the pros and cons of distributed agile, and how can teams get past the obstacles?
Vishwanath Nagaraj: The advantages of distributed agile, as the term suggests, are a combination of the benefits of distributed development, which include access to talent, ability to scale, and economic benefits. Plus, they include the benefits that agile practices bring to software development, such as the ability to respond rapidly to market and business changes, faster time to market, lowered cost of change, and improved quality of software delivered.
The challenge, however, is to address effectively issues of distribution, such as reduced communication bandwidth, lack of visibility, cultural differences, etc., through pragmatic application of agile principles and practices. I believe agile practices and principles inherently address challenges that distributed teams face. For example, business sponsors on a distributed team often find it difficult to get an accurate visibility of progress and status of a project. Applying agile practices of working in short iterations and using working software to demonstrate progress at the end of every iteration is a very effective way to address this challenge and build trust with the business.
As discussed previously, the three broad areas that organizations need to address to make this successful are people, process, and technologies.