I’ve been meaning to write a comparison of Waterfall and Agile software development, as well as the truths in the PMBOK. Until then, I just want to point out one key difference: efficiency order vs. value order.
This is my own terminology, but “efficiency order” and “value order” seem to be the two most reasonable responses to the question, “In what order will work be performed?” Work can be ordered according to the value generated, such that the highest priority work is accomplished first. Or work can be ordered according to the sequence with the least waste. Value order puts building a submarine hull before installing sonar, since submariners can live without sonar, but not without a hull. Efficiency order might install sonar before the hull is complete if doing so requires less labor and improves the schedule.
If you haven’t already guessed, Agile software development usually pursues “value order,” and Waterfall software development aims at “efficiency order.” That is the broad generalization behind the two approaches, but reality is, of course, far more nuanced and complex. Smart Agile prioritization will take efficiency into consideration, and smart Waterfall planning will ensure that lower-value work can be changed or dropped without hurting higher-value work.
Value ordering has significant benefits when the landscape frequently shifts. This is the classic software development story: the perfect set of requirements are written and agreed upon, the developers work for five years building the product, and the final product exactly matches the requirements but no longer has any value to anyone. Better: perform the work in value order, constantly updating the order as the value shifts, and deliver often so that the product arrives in time to be relevant and so that the feedback loop is quick enough to keep the product relevant.
Efficiency ordering has significant benefits when there are dependencies and parallel work can occur. If things are as simple as A then B then C, it doesn’t matter what approach you use, you’ll still do A then B then C. But if D needs E, F, & G to be accomplished first, and each of those can be worked independently, then it can be smart to do so.
The scale, entropy, and structure of software development almost always favor quick feedback loops and value ordering over optimized schedules. These, to my mind, are the essential benefits of the Agile approach.
Efficiency order may be the better choice in other realms (such as shipbuilding). Choosing between value order and efficiency order, however, is an important decision in every process.