“Agile Methods strive to deliver valuable, quality software faster and cheaper, while maintaining flexibility to harness change for competitive advantage.”
“Cloud Computing strives to deliver valuable, quality software faster and cheaper, while maintaining flexibility to harness change for competitive advantage.”
Coming from entirly different perspectives, one of process, the other of technology, agile & cloud share a lot of similar aims.
Traditional waterfall methods are based on the idea of a “project” – with a defined deliverable, objective, duration and budget. At the beginning of the project, all these dimensions are agreed and the job of the Project Manager is to “work the plan” – to strive to make emerging reality match the predetermined plan. Much has been written about the shortcomings of this approach (“the future ain’t what it used to be”) and how trying to predict and plan for future events based on past experience is becoming increasingly difficult as the rate of change in the business and technology landscapes accelerate.
Agile methods emerged as an attempt to treat constant, unpredictable change in a more pragmatic way – accept its going to happen and work in a way that not only delivers in turbulent environments, but even ’embraces change for competitive advantage’. As these methods have evolved, increasingly the emphasis is moving from “projects” to “increments” – from trying to deliver big lumps of functionality in one go, to delivering little bits in a constant ‘flow’. This has been made possible by reducing the ‘transaction costs’ of testing, building and deploying systems through continuous integration, automated testing, etc. Practices like test driven development and timeboxed iterations mean software is never far from being production ready. This means the “project” can be released, re-directed or even terminated at very short notice, while still delivering value to the customer according to the investment made.
This move from “project” centric to “increment” centric development, and the further reduction in the transaction costs of deploying to cloud hosted platforms, makes agile and cloud particularly good bedfellows. Of course, this move away from large project based development has profound implications for other organisational processes, or even structures. Pressures to adapt the organisation will be increased through the emergence of flexible technology platforms such as cloud computing.
So, when is a project not a project? When its one or more increments!