Agile vs Waterfall
Traditional Waterfall treats analysis, design, coding, and testing as discrete phases in a software project. This worked OK when the cost of change was high. But now that it's low it hurts us in a couple of ways.
First off, when the project starts to run out of time and money, testing is the only phase left. This means good projects are forced to cut testing short and quality suffers.
Secondly, because working software isn't produced until the end of the project, you never really know where you are on a Waterfall project. That last 20% of the project always seems to take 80% of the time.
Thirdly you've got schedule risk because you never know if you are going to make it until the end.
You've got technical risk because you don't actually get to test your design or architecture until late in the project.
And you've got product risk because don't even know if you are building the right until it's too late to make any changes.
Can't handle change
And finally, most importantly, it's just not a great way for handling change.
The Agile Approach
Instead of treating these fixed stages Agilists believe these are continuous activities.
By doing them continuously:
- Quality improves because testing starts from day one.
- Visibility improves because you are 1/2 way through the project when you have built 1/2 the features.
- Risk is reduced because you are getting feedback early, and
- Customers are happy because they can make changes without paying exorbitant costs.