Agile
An Agile approach is an iterative approach to software development. Software is developed in one to two week iterations (often called “sprints”). Each iteration includes gathering requirements, prioritizing tasks, setting goals, then developing, testing, and delivering small pieces of usable software to the client.
The greatest benefit to the Agile approach is flexibility. The Agile approach embraces change. Ideas for software functionality always come out during the requirements gathering phase of every iteration, so change is inevitable. Change is an integral and important part of the Agile process.
Waterfall
These ideas can be better understood when compared to what it replaces, which is called a “Waterfall approach”. A Waterfall approach is appropriate for projects like building construction, or automobile manufacturing. In those types of projects the end product is designed on paper in its entirety before any production begins.
A Waterfall approach is not a good fit for software development because it does not embrace change. For example, changes made to the blueprint of a building after construction has begun always cost a great deal of time and money.
This does not work for software development. Change is good. Change should be embraced and even sought after.