Best Practices In Global Agile Development For Product Innovation


Agile over the wire and how to make it work.

In our experience, pure-play Agile development is destined to fail in a global delivery model. The basics of Agile, such as the emphasis on face-to-face communication, close interaction between teams and an adaptive approach to product development, are not possible while engaging an offshore team. However, by injecting process adaptations, Cognizant has successfully enabled some facet of "specially customized" Agile methodologies. In fact, a large percentage of Cognizant's software product innovation services use Agile practices in some form or the other.

Cognizant is a leader in product engineering capability, and one of the reasons for its success is the strong integration of processes in its delivery methodologies. Today, product requirements are evolving and there is huge pressure to meet deadlines, budget and user expectations. Many clients want to develop prototypes for products and start development before requirements are completely finalized. To meet such requirements, we extract the relevant principles of Agile processes and inject them into a global delivery model. Some clients already have some form of Agile process or "mindset" in place when they engage with Cognizant, which facilitates adoption of these customized Agile frameworks into their environment. 


To effectively use Agile development in a global model, we recommend focusing on the following key areas:


Iterative Development Approach

Traditionally, our development approach has been to get requirements sign-off before we start development. On Agile projects, we do not require client sign-off; {sidebar id=1} rather we use an iterative product development approach. The development of the product is planned over a series of iterations, where scoping of iterations is prioritized based on business and technical complexity. Architecturally significant requirements are developed first, followed by functionally significant ones. Working collaboratively with the client, we prioritize requirements and scope them for subsequent iterations/releases. The onsite-offshore iterations tend to be lengthier (around two weeks) than the typical duration for single-site projects (a few days or a week). Cognizant maintains a close control over the high-level scope and duration of the project, in effect controlling the iterations to an acceptable number. This achieves a balance between Agility and the budget constraints for the project.


Incremental Builds And Continuous Integration

For each iteration, build units are continuously integrated. This is achieved by seamless integration of the release management, build, unit test and promotion process and ensures that there are no last minute surprises during integration. We use a single source control system (preferably server-based environments) across the global team as it is important of have a single view of the source code. We have recommended IBM Rational ClearCase MultiSite and Serena Software Inc. PVCS. It is also important to set up a VPN or Frame Relay connection to facilitate high speed access for source code management. 


Face-to-face Interaction

Agile principles stress face-to-face human interaction and a high level of trust. Cognizant ensures that such interactions are planned with the client visiting the offshore teams and the offshore team members spending time at the client site at crucial phases of the project. In a classic Cognizant project, only the executive sponsors travel to meet offshore teams and vice versa. For agile projects, the development teams are also required to travel. The cost impact of these visits is normally offset by higher productivity in the later phases of the project. In addition, the teams ensure there is an overlap in daily work hours. Traditional application maintenance projects do not require high face-to-face contact given the nature of project. For agile projects, we mandate frequent video conferences to ensure that teams "see" each other and interact, rather than perceive a team member as just another voice on the phone! This level of interaction is most important to build up rapport and trust.


Test First Development

It is important to develop a test strategy and test plan prior to commencement of development. Test cases and unit test scripts ensure that unit test suites address testing at the unit level. This helps in building good regression suites to use as developers continuously integrate their code and as the product is progressively developed.


Code Refactoring



AgileConnection is a TechWell community.

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