What is "Agile"?
Agile development is a software development methodology the basic principle of which is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental), allowing developers to take advantage of what was learned during development of earlier parts or versions of the system when moving on to develop the next. Agile is favoured in scenarios where requirements and solutions are not fully known at the outset. Agile allows requirements and solutions to evolve through collaboration between the customer and different cross functional teams.
Why use Agile?
Agile methods break development into increments. Iterations are short time frames, known as sprints. Each iteration involves working through a full software development cycle including planning, requirements, design, coding, testing and demonstration. This minimizes overall risk and allows the project to adapt to changes quickly. Typically developers hold daily meetings to discuss the process of each sprint ("scrums"). A key member of the Agile team is the customer representative(s) - acting on behalf of its stakeholders. This approach can be contrasted with the traditional software development lifecycle (the waterfall method).
Contracting for success
Our view is that, properly practised, Agile can have beneficial effects, achieving cost and time savings through its more efficient processes. So how to contract for Agile? Given its nature, it requires a different approach to contracting, one that is built around a dynamic, interactive, iterative relationship as opposed to a one time transaction.
Customer Engagement
One essential for successful Agile contracting is a tailored but not overly prescriptive governance framework. The major difference with Agile is the intense level of customer engagement; Agile really is dependant on the customer engaging in a highly interactive way with the developer. But the engagement needs to be intelligent engagement. Agile is input based, and input based activity is hard – and often ill-advised – to prescribe contractually, often (as in the case of Agile) requiring a high degree of skill and judgement. In our experience, the better approach is to build into the contract a set of engagement principles.
Contracting for intelligent engagement - engagement principles and health indicators
Engagement principles might include lines and levels of communication and idea generation. Also, as Agile is experimental, actually planning for failure – failure doesn't always mean that the project or phase has been unsuccessful, in fact it's important that lessons learnt from such failures can be used to assist with ongoing development.
Health Indicators may include factors such as project on time, project on budget, working code, customer satisfaction.
Building the engagement principles and health indicators into the contract and applying them with rigour is key to ensuring the successful and efficient outcome.
Exit as incentive
In order to incentivise suppliers and mitigate some of the inevitable risk that comes from using the Agile methodology it is important that the customer has complete freedom as to duration and continuity of the Agile development. To ensure this is workable the contract must provide for delivery of working code and value at the end of each and every sprint of the Agile lifecycle.
However this threat of exit will not be workable unless there are contractual provisions which ensure that any handover could be properly regulated and effected. It's really critical that the supplier understands their responsibilities to handover. The contract must capture disciplines around documenting IPR, source code, access documentation and personnel etc continuously throughout development.
Pricing
In general, time and materials pricing is to be preferred. Fixed pricing can encourage the supplier to attempt to tie down scope with the customer ending up footing the bill for subsequent changes. This is totally contrary to what Agile is trying to achieve. By contrast, a time and materials model mitigates the supplier's risk, whilst the customer retains control through intelligent engagement and its ability to pull down the shutters.
Portfolio level health checks
A useful indicator of relationship success can be portfolio level health checks, assessing the health of Agile across the customer's entire project portfolio. What's often important is that these health checks have real teeth in the event expected levels of performance are not achieved.
Conclusion
Agile offers great advantages in terms of speed, cost, and outcome but it relies on:
• the willingness of the parties to collaborate and regularly communicate;
• clear engagement principles and health checks that are diligently applied; and
• contractual rigour around exit strategy, handover and materials.