Predictability with Agile

Anyone who has been involved, as a manager or stakeholder in traditional software development processes knows that software is almost never delivered as scheduled. More distressing is that, even toward the end of the development phase of the project, forecasting doesn't get any easier or more accurate. The reason is that, in traditional software development methodologies-the most common of which is the "Waterfall" method-a comprehensive (and believed to be "complete") specification is given to the engineering team and there is little interaction with stakeholders again until the software reaches "Alpha" release or initial testing. This period of "gestation" is typically months long and without meaningful milestones to measure progress (which can ultimately only be done by stakeholders), it is difficult for the development team (not to mention anyone outside the team) to determine how close they are to the finish line. Inevitably, the initial deliverable is not exactly what the stakeholder wants because:

This often leads to additional "unplanned" development, or a new plan for a "phased" release, where the initial release is generally acknowledged by stakeholders to be less than the requirement. This outcome is one of the most common sources of discouragement for development teams.

Next, the formal testing process, which is even more unpredictable than development begins. Rarely do traditional development projects account for the elapsed time and additional development effort required to fix "bugs" uncovered in the testing process. (See Testability below).

Agile Methodologies yield much more predictable deliverables because: