In an earlier article, we saw how colocated testing teams can bring greater ROI for an organization (Colocated Testing Teams – What are they? And how do I benefit?).
On the flip side, many industry insiders argue that building a colocated team with the necessary skills and experience is difficult due to lack of availability of local talent. Personal situations might prompt key resources to relocate or take a break from work which makes it difficult to maintain a steady team in case of long-term projects. Another downside to building a colocated team is the initial expense involved in creating area and infrastructure for a large team. Agile teams provide the perfect answer to both these concerns.
What does being Agile mean?
In the agile methodology, software is released in small increments or release cycles which are called iterations, and each iteration entails all the different stages seen in a normal development cycle. It differs from the traditional waterfall model in that the various stages of software development like requirements gathering, design, coding and testing go hand in hand. One stage does not wait for the previous stage to end.
Compared to a traditional model, agile teams are typically smaller in size, the scope of work is limited and there is less documentation involved. Release cycles are also accordingly short. The time available for testing is generally less which means testing needs to be optimized and automated wherever practical. Manual testing would need to be limited to new or modified functionality. Also, the testing team needs to work closely with the development team to understand the scope of change and leverage their test cases wherever possible.
Agility and Colocation: How do they work in tandem?
Agile teams work best in a colocated scenario as they require first hand face to face communication. Due to the small iteration cycle, there is less time to seek clarifications and resolve issues. Testing starts early, as soon as the code is stable, and continues as coding progresses. In such a situation where the code is evolving even as testing progresses, it is imperative that the QA and the development team collaborate and work as a single team. Colocation facilitates this.
Since an agile project develops the software in multiple iterations, the size of the development and testing team is generally small and streamlined. This mitigates the pain of identifying and on-boarding skilled resources locally. Release cycles are small which means there is very less time to manually test each and every functionality. From unit testing and above, testing is automated as much as possible and manual testing is limited to detecting bugs in the code and missing functionalities. This too serves to limit the size of the team required to execute the project.
The agile methodology makes it possible to develop the product with a limited number of skilled and qualified resources. The only constraint is the necessity to have resources with a good working knowledge of the system in order to adapt to changes, which is a natural part of the agile methodology.
So if you are thinking AGILE, you need to think colocated QA staffing.