In a traditional environment we try to answer all the questions in advance thus it becomes predictable and repeatable process whereas in Agile projects, it is more of evolving as the age of the project increases.
In a traditional way of project development, we assume and believe that perfect estimates can be created in advance, however this traditional approach in project development has failed more often and proved that it is difficult to arrive at better estimates with little or no information as the project starts. Therefore in agile we hold the estimate till the last moment and the reason is very simple, more the clarity, better will be the estimate. Agile supports this fact.
Traditional development believes in full project plan upfront and track the progress of the project on the planned timelines/cost. However this approach has failed due to visibility in the beginning. Plans evolve as things gets clear during the project. Therefore in agile, a small piece is picked by the agile team and planned. This is nothing but a focused planning effort which works on a progressive elaboration concept.
Traditional development believes in a full project requirement and planning in the beginning. After the requirements are captured, the same is estimated and planned. Requirements can never be envisaged in the beginning at 100%. In a traditional approach, due to an upfront requirement, the gathering friction on requests change and extra cost with customers peep in. Therefore in agile, requirement changes are welcomed at any point of time during the project i.e. Customer is part of the team and they can prioritize the requirements for next iterations. They can add/delete and modify what they need and when they need.
Also as explained earlier, assuming that requirements will hardly change is not good. In real world, requirements change very frequently, especially in today’s dynamic business market it’s assumed that users know exactly what they are looking for since the beginning, whereas practically this is not possible. It rarely happens that users have a full visibility in the beginning. As the project grows, demonstration of the product happens and the user requirements evolve. Agile is based on the same.
Traditional development is based on the big bang approach that is do everything completely then take the next move, be it requirements, estimation or planning whereas agile is based on incremental approach, do all the bits in small chunks which gives more space for inspection and adaptation after every baby step is completed.
Traditionally we have three constraints for project development i.e. scope, cost and schedule whereas agile environment is driven by value delivered to customer. Business value is the only criteria of project success.