Waterfall vs. Agile

One of the bigger debates in the last few years in project management circles is which development process is better, Waterfall or Agile.

First, some definitions are required.  The Waterfall methodology is a stage gate process where a project is broken down and subsequent work packages are performed after the completion of the previous work package.  This can be seen as a linear process, like building a house.  First the foundation is poured, then the walls are erected, then the roof.

The Agile methodology is an iterative process where finished pieces are constructed, with the possibility of refining or completely changing the original product in subsequent iterations.  One of the core concepts of Agile is to make your mistakes early.  An example of this would be like making pasta sauce from scratch.  You might add salt in the beginning but if you find the sauce to be too salty, you could add more tomato paste and water.  You could also add spices later, to taste.

The debate is which process works better.  The answer is both and neither.  Waterfall is a good process for projects where changes are costly, such as in manufacturing.  When designing parts that require tooling, it could be very expensive to try to iterate.  The old adage of “measure twice, cut once” is still a good rule of thumb for most manufacturing type projects.  Tooling can also be a very long lead item, depending on complexity, so even if non-recurring engineering (the one-time cost to research, develop, design and test a new product)  is not a significant factor, the lost revenue of a delayed product launch would definitely have an impact to the business.

Agile is a better process for software development projects, particularly web solutions.  With Agile development, the project can be completed in iterations that can actually go out into the world for both user testing and to drive business value.  Change is far less costly and is really measured in opportunity cost.  Since Agile development is centered around a forced prioritized “product backlog” the higher prioritized features are done first.  If done properly by the product owners, this should mean that the greatest value (i.e., revenue generating) features come first.

The project development methodology should be tailored to the goals and structure of the individual business.  Even a company that produces pure software projects may want to maintain some aspects of waterfall as a way limit the cost of change.  And hardware companies may want to use some aspects of Agile to make course corrections earlier rather than later in development.

What method is used in your company?  Can you see how aspects of the other methodology could be useful at your company?  Has anyone had the experience of transitioning from Waterfall to Agile?