With today's economic pressures coupled with a highly competitive business environment, management is aggressively pursuing ways to increase effectiveness and efficiencies at the same time as they strive to improve customer services. For these reasons many organizations are trying to integrate offshore development into the Agile projects. Offshore development has seen tremendous growth in recent years. The efficiencies gained by combining these two methods could be significant, but there are some pot-holes on the road to success.
Distributed communications, time zone differences, language and cultural barriers, security problems, lack of direct interaction with the business subject matter experts are just a few of the challenges faced when combining Agile and offshore development. All of these challenges are significant and require directed effort if they are to be overcome.
Most off-shore development organization have standardized on the traditional waterfall development as their methodology. These more traditional methods define tasks that have to be done on a large scale, classically organized project. These traditional development techniques tend to run contrary to the fundamental concept of Agile. In Agile there is always a working product which is incrementally improved at the direction of the customer as the learnings are extracted during the demonstrations. Traditional methods set hard and fast requirements upfront.
The Hybrid Model
Many organizations have tried combining these techniques with varying degrees of success. The following graphic illustrates one approach that has worked well in the past. By no means is this meant to say that's the only way you can be successful with and Agile/Offshore - Agile/Waterfall approach, but it is a very common way found in today's environment. That being said the success using this approach still rests in cooperation and flexibility among the onshore and offshore teams.
The Agile initiation process remains the same and a project baseline is established. The baseline defines the parameters of the project, standards, technology architecture and other fundamentals that each interaction will be built upon. Often time this work takes place in what has been called Sprint 0.
In this hybrid model Sprint 1 is the first real iteration in the project. The onshore team works directly with the business user/subject matter experts to define functional requirements. Once these function requirements are in sufficient detail, they are entered in the function back-log. The function backlog is an inventory of capabilities that must be designed, developed, tested, and accepted by the key stakeholder(s).
The offshore development team looks at this inventory, evaluates the requirements, size, complexity and effort required for each component in the inventory. Based on these estimates and the size of the development team the onshore and offshore team define and then refine what functionality will be delivered in the Sprint. Once the definition of what will be delivered is agreed upon, the development process begins. This is where the problems start. Most offshore development houses use rigid methodologies. Even the ones that claim to use iterative development approaches like Agile really don't. They are driven by a Sprint task list and want every aspect of the software locked down tight. As the Agile methods progress through what has been called an iterative discovery process using demos and proof of concepts, new requirements are uncovered. This becomes very costly, as billable hours are spent rewriting code and estimating the newly discovered requirements and changing schedules.
But it gets better. Many hybrid (Agile/Traditional) projects use time-box management techniques and call it Agile. Time-boxing is a technique that fixes the time spent on a given task or set of tasks. Once the time-box is established, the development staff does the best that they can to stay within that time frame. So instead working on something until it is completed, as is the case with typical waterfall development, the offshore team only works on it for say, 5 days. At the end of those 5 days the work is either completed or is placed in the backlog inventory to be addressed at a later date, or replaces other functionality that was originally scheduled in the