Traditional Software development approaches used in 1980s and 90s were based on heavyweight processes of project planning, designing and budgeting. Development phase is strictly based on the results of planning and design and can only begin when these phases are completed. Such approaches are too rigid and have a history of resulting in over-budgeting and delays.
When the Customer makes a mistake in business requirements this mistake is then made in further development. To fix it Customer has to spend even more costs than he spent on initial development. In other instances, when development was done properly but market circumstances have changed, the Customer may be faced with unplanned expenses related to refactoring of software demands.
David M. Kelley, Professor of Stanford University and founder of IDEO, determined a core axiom in the field of innovation design which showed a way to prevent those big mistakes:
“Fail faster, succeed sooner”
Idea to split old-fashioned project development cycle into smaller pieces where changes can be managed and budget can be under full control was in the air.
In February 2001, 17 leading software developers met in Snowbird, Utah to discuss alternative, lightweight, solid approach for Software Development. Family of emerging lightweight software development methods has been consolidated under umbrella term AGILE.
Emerged from this meeting was symbolic “Manifesto for Agile Software Development”:
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
Following this key values and Agile principles, Agile uses small regular controllable iterations of work. One iteration in Agile is a so called Sprint. In one short Sprint (2-4 weeks) full development cycle is performed: analysis, design, coding, testing and product release. At the end of each Sprint a working software is released. Following Sprint will extend Software and bring it closer to final version.
Using Agile has significant advantages:
Potentially shippable product which is delivered to Customer much earlier than using classic methods. Agile oriented Development Team brings You working product every 2-4 weeks. Product is ready for use and ready for income generation, if designed properly.
Decreased risk of over-budgeting, over-timed development and overall failure. Real projects developed with Agile bring potential budget reduction.
Readiness for changes. Development plan can be changed in the middle of development – and it’s perfect! The sooner both Customer and Developer understand the need for change, the sooner they will have a chance to fix mistakes and prevent them in the future.
And the sweetest words for investor or entrepreneur – early Return On Investments. Your software product starts generating income at early stages. Product will be ready for income generation within 2-3 sprints from the beginning of development.