Agile vs Waterfall

Waterfall model:

  • Predictive model
  • Optimized for a single purpose
  • Hard to change

eXtreme Programming

  • Reusability
  • Easy to change direction
  • But no idea of next 6 months
Waterfall model - only one shot to get the customer's idea. Xp loop, converging to a perfect product

Because the software industry is so different than any other, the development model used prior of creating agile methodology was taken from the engineering disciplines, such as civil or mechanical engineering. Those disciplines put a lot of emphasis on planning before you build because the resources are very expensive and cannot be wasted because of bad synchronization or different physical characteristics like calibers, by example. The planning style is a predictive method that focuses on planning the future in detail. A team that uses these predictive techniques can report precisely what features and tasks are scheduled, both their order and length, for the entire time span of the development process. Predictive teams are very difficult to redirect after the client needs. The plan is typically optimized for the original destination and changing direction can cause completed work to be thrown away and done over differently. These teams will often institute a change control board to ensure that only the most valuable changes are considered.

Opposed to this, the software as industry relies more on reusability and on site modifications. If a programmer finds a piece of code, of course respecting the intellectual property, can easily adapt it to his project. This approach is called adaptive, because these methods focus on adapting quickly to changing realities – no customer knows from the start exactly what he needs from the start. When the needs of a project change, an adaptive team changes the specifications as well. But this comes with a drawback; because an adaptive team will not be able to describe exactly what will happen in the future, it will precisely know only the current step, the next one depending on the user feedback. Thus, adaptive team knows exactly what tasks are being done next iteration, has an idea about the overall project, but only which features are planned for next month. But if asked about a future release, let’s say six months from now, an adaptive team may only be able to report the mission statement for the release, or a statement of expected value vs. cost.