
Agile software allows organisations to thrive on uncertainty rather than seeing it as an onerous challenge.
"For many years, software development has been structured around attempts to predict a future desired state of the IT infrastructure as dictated by a future desired state for the business. Success of the development project is measured by how closely the project adhered to the plan, rather than the value it delivered," says Martin Fowler, chief scientist for ThoughtWorks and one of the authors of the Agile Manifesto, adding that this is an illogical approach in a business environment defined by continuous change.
"Any software developed according to a 12-month horizon, for example, may no longer be relevant when that time comes. A predictive approach resists change and, therefore, limits business agility. By contrast, an Agile approach to software development welcomes change, seeing it as a strategic advantage."
While Fowler does not dismiss the need for predictability, he believes a focus on predicting outcomes often means people don't handle the situation properly when their plans fall apart.
"An unpredictable situation means many of the models for controlling projects, many of the models for the whole customer relationship, just aren't true any more. The benefits - and habits - of predictability are so great that it's difficult to let them go," notes Fowler.
"However, letting go of predictability doesn't mean you have to revert to uncontrollable chaos. Instead, you need a process that can give you control over any unpredictability. That's what adaptivity is all about."
According to Fowler, software development adaptivity means frequently delivering small pieces of working software, with each piece in the sequence building on the previous one and containing a subset of the overall project's required features. "These working systems are short on functionality, but are otherwise faithful to the demands of the final system. They are fully integrated and as carefully tested as a final delivery."
He believes this iterative, interactive methodology gives the organisation immediate and continuous value, adding that a tested, integrated system often brings a forceful dose of reality to any project. "Documents can hide all sorts of flaws. Untested code can hide plenty of flaws. But, when users actually sit in front of a system and work with it, then flaws become truly apparent, both in terms of bugs and in terms of misunderstood requirements," he says.
"An Agile approach also gives the customer much finer-grained control over the software development process. At every iteration, he gets both to check progress and to alter the direction of the software development. This leads to much closer relationships with the software developers: a true business partnership." Ultimately, one needs to assess if the customer received software with value beyond its cost.
"A good predictive project will go according to plan; a good Agile project will build something different and better than the original plan foresaw."
Share