Monday, January 26, 2009

The case for agile on integration projects

It is a common belief that agile only applies to front end projects (e.g websites, user interfaces) and does not work well for back end or systems integration projects.

Admittedly, Agile is an excellent fit for these front end projects, given the emphasis on customer feedback, and in projects that use user stories to capture requirements there is a particular emphasis on user visible functionality. But the agile approach is not represented by the technique of user stories, indeed more important than the structure of requirements is the core agile practices:
  1. Frequent delivery - Building a potentially shippable product increment at least each month (if not more frequently) is key to the success of an agile approach. On any complex integration project there are many unknowns and often many moving parts. By working to deliver complete and tested functionality incrementally the project teams are able to discover and respond to integration challenges sooner and more effectively, reducing the exposure to uncertainty on the project.
  2. Cross functional teams - Agile projects are typically staffed by a team that is multi-disciplinary including development, analysis, testing, design and are structured around end-to-end features rather than by component. On integration projects a useful strategy for improving the ability of integration teams to deliver and organise the critical work across integration boundaries is to include platform staff (e.g. vendor or back-end team members) as part-time members of the end-to-end (client-side or front-end) feature teams. This cross-boundary structure allows the team to solve complex integration issues at the coal-face. The platform team members can return to their platform team to act as product owners and ambassadors for the client teams ensuring alignment, problem-solving and communication across the integration boundary.
  3. Frequent inspection and adaptation - As part of delivering each incremental product increment an agile team will review and evaluate each increment with the appropriate customers and stakeholders. As part of this review any systemic product, team or oganisational issues are addressed and responded to. Integration projects can quickly and consistently demonstrate technical and organisational progress and can make critical adjustments to their approach and organisation based on the results of early end-to-end integration testing.
  4. Self organisation - Agile teams are set-up to allow them to solve difficult problems at the coal-face, organising the work across disciplines and organisational boundaries. It is often very difficult or impossible to predict the technical and business issues that will be encountered by an integration project making traditional up-front approaches to planning and estimating highly unreliable. Agile teams can respond to this uncertainty by allowing teams to self-manage their work against clear functional priorities.
In addition to these more integration specific benefits an agile approach has other general benefits such as reducing waste in planning and bureaucracy, an improved focus on technical quality and an improved visibility of project progress and issues.

It is safe to say that agile is worth considering for serious systems integration projects not just for your next website refresh.