When engineering teams are spread across different geographical locations, they inevitably encounter several challenges. This article describes quality-related problems faced by distributed teams and potential solutions in Distributed Agile.
Small to mid-sized organizations developing software products often struggle to grab their share in the marketplace by juggling with release dates, product quality, innovation, and pricing. Sometimes, product quality is kept on the back burner due to the fact that these organizations also need to sustain the interest of their investors by demonstrating product's profitability. An ideal product strategy demands a perfect balance between innovation, time-to-market, cost-effectiveness, and overall quality. This cannot be achieved without having an effective product lifecycle that is capable to cope with continuously changing requirements since quality primarily deals with realization of business requirements.
Trends in product development are rapidly changing over the past decade. In today's prevailing trend, product teams no longer sit together in the same location to develop software products. Product firms have begun to diversify in different geographies for several business reasons at strategic level. Thus, functional groups within an organization face a dire need for robust processes, framework, and platform that can optimize the distributed product development.
Need for Agile Techniques in Product Development
In product ecosystem, there is an ever-changing need to optimize the way product firms deliver their products with desired emphasis on innovation, quality, and cost. The ability to make continuous significant changes is one of the biggest differentiators of software product development from other engineering disciplines. In order to fulfill this need, product firms continuously seek optimum methodologies such as Agile Methodology. Agile Development Methodologies promote responding to change, by balancing order and chaos.
Agile software development approaches promote high levels of visibility, predictability, and quality by adapting an iterative development approach that promote:
- Evolutionary development of software
- Focus on values and principles, most important of these being - embracing change, delivering business value early and often, and remaining people-focused
- Real-time face-to-face communication
- Working software as a primary measure of success
Agile Development for Distributed Teams
Agile software development is referred to as Distributed Agile , when development teams are completely or partially spread across different geographical locations. This needs molding some of the traditional agile practices which typically assume collocation, emphasizing face-to-face communication and real-time collaboration. This can be done by building a:
- Robust team communication infrastructure
- Knowledge sharing and collaboration setup
- Scalable engineering platform
- Information exchange mechanism
Various agile principles such as Collective Code Ownership, Continuous Integration, Test-driven Development, and Pair Programming demand scalable engineering platform, which should be accessible to all the distributed teams. For instance, in order to exercise collective code ownership, all the developers spread around different locations, should be able to access the entire system. This can be accomplished when a centralized source code repository is accessible across different locations without performance bottlenecks. The success of the distributed agile development is substantially dependent on the way teams collaborate on real-time basis. In this situation, teams should avoid depending heavily on the use of E-mails for knowledge sharing. This is one of the major reasons as to why wiki and Web-based collaboration systems are gaining popularity. The use of IM tools, NetMeeting, and video conferencing can certainly enable effective communication between the teams.
Analyzing Quality Related Challenges in Distributed Environment
When product teams spread across different locations work together, they inevitably encounter various challenges in day-to-day operations. In order to realize these challenges, we performed a study on six different product development teams within the organization catering to our partners in the off-shore product development model. Our goal was to identify key issues in the distributed environment and establish best practices.
All the product development teams were spread across maximum three locations. In almost all cases, Product Management was performed in United