The UK Post Office's infamous Horizon IT system stands as a cautionary tale for large-scale projects. The project demonstrably lacked key Agile principles. Firstly, it failed to deliver "Working Software." Secondly, the focus seemed to be on "process and tools" rather than "Customer collaboration." Subpostmasters, the system's true users, reported issues that were dismissed, leading to some even facing jail time. This is the antithesis of effective customer collaboration.
Agile emphasizes business-to-user collaboration, not business-to-business. In Horizon's case, the "customers" were the actors/personas using the system, like Subpostmasters, Support, Accounts, and Managers. The project failed to provide them with the necessary tools for efficient work.
In my experience, project failure often stems from a lack of alignment between business and development teams. Agreed-upon goals are crucial. Additionally, engineering capabilities need to be sufficient for the task. As the Agile manifesto states, "We are uncovering better ways of developing software by doing it and helping others do it." However, this requires developers to:
Create functional software that meets user needs. In my view, "working code" should be "self-testing code." This promotes clear documentation and understanding of functionality. Businesses should be able to review tests and confirm intended behavior. New tests should be created to expose and fix issues as they arise.
By incorporating these principles, future projects can avoid the pitfalls exemplified by the Horizon system.