Lessons

Waterfall vs Agile: When and Why

Level: Beginner Module: Agile Foundations 3 min read Lesson 2 of 52

Overview

  • What you’ll learn: The Waterfall model, its strengths and weaknesses, how Agile addresses those weaknesses, and when each approach is appropriate.
  • Prerequisites: Lesson 1 — What is Agile?
  • Estimated reading time: 14 minutes

Introduction

Before Agile conquered the software world, there was Waterfall — the sequential, phase-based approach where requirements flow downward like water through stages: Requirements → Design → Implementation → Testing → Deployment → Maintenance. Each phase must complete before the next begins, and going back upstream is expensive.

Waterfall is not inherently evil. It works beautifully for building bridges, where requirements don’t change mid-construction. But software is not a bridge. Software requirements change constantly, users don’t know what they want until they see it, and the market shifts faster than any plan can predict.

The Waterfall Model

How It Works

Waterfall follows a strict sequence:

  1. Requirements: Gather all requirements upfront. Document everything. Get sign-off.
  2. Design: Create system architecture and detailed design based on the requirements.
  3. Implementation: Write the code according to the design.
  4. Testing: Test the completed system against the requirements.
  5. Deployment: Release the finished product to users.
  6. Maintenance: Fix bugs and handle change requests.

Waterfall Strengths

  • Clear milestones and deliverables — easy to measure progress.
  • Well-defined scope — everyone knows what’s being built.
  • Works well for stable, well-understood domains (hardware, regulatory systems).
  • Documentation is thorough — useful for compliance and handoffs.

Waterfall Weaknesses

  • Late discovery of problems — testing happens at the end, when fixing is most expensive.
  • Assumes requirements are known and stable upfront — rarely true for software.
  • Customer sees the product only at the end — surprises are guaranteed.
  • No room for learning — each phase is locked once completed.

The Agile Approach

Agile flips the model: instead of one long sequence, work in short iterations (typically 1-4 weeks). Each iteration delivers a potentially usable increment of the product. Requirements, design, coding, and testing happen in every iteration.

Aspect Waterfall Agile
Planning Upfront, comprehensive Continuous, adaptive
Requirements Fixed at start Evolving throughout
Delivery One big release at end Incremental, frequent
Testing After implementation Continuous, every iteration
Customer feedback End of project Every iteration
Risk Discovered late Discovered early
Change Expensive, resisted Expected, welcomed

When to Use Which

  • Waterfall fits: Regulated industries with fixed requirements (medical devices, aerospace), hardware manufacturing, projects where the problem and solution are well-understood.
  • Agile fits: Software development, product innovation, projects with evolving requirements, competitive markets where speed matters.

Key Takeaways

  • Waterfall is sequential and plan-driven; Agile is iterative and feedback-driven.
  • Waterfall assumes requirements are stable; Agile assumes they will change.
  • Neither approach is universally superior — the right choice depends on the domain, the project, and the level of uncertainty.
  • Most modern software development benefits from Agile because requirements are rarely stable and feedback is essential.

What’s Next

In Lesson 3, you will survey the major Agile frameworks — Scrum, Kanban, XP, and SAFe — to understand which tools are available in the Agile toolkit.

繁體中文

概述

  • 學習目標:瀑布流模型、其優缺點、敏捷如何解決這些弱點,以及何時使用哪種方法。
  • 先決條件:第 1 課——什麼是敏捷?
  • 預計閱讀時間:14 分鐘

簡介

在敏捷征服軟體世界之前,有瀑布流——一種循序漸進的方法,需求像水一樣向下流過各個階段:需求 → 設計 → 實作 → 測試 → 部署 → 維護。每個階段必須在下一階段開始前完成,逆流而上的成本很高。

瀑布流本身並不邪惡。它非常適合建造橋樑——需求在施工過程中不會改變。但軟體不是橋樑。軟體需求不斷變化,使用者在看到成品之前不知道自己想要什麼,市場變化的速度超過任何計劃的預測。

瀑布流模型

  1. 需求:預先收集所有需求,記錄一切,取得簽核。
  2. 設計:根據需求建立系統架構和詳細設計。
  3. 實作:按照設計撰寫程式碼。
  4. 測試:根據需求測試已完成的系統。
  5. 部署:將成品發布給使用者。
  6. 維護:修復錯誤和處理變更請求。

敏捷方法

敏捷翻轉了模型:不是一個長序列,而是在短迭代中工作(通常 1-4 週)。每次迭代都交付產品的可用增量。

面向 瀑布流 敏捷
規劃 預先、全面 持續、適應性
需求 開始時固定 全程演進
交付 最後一次大發布 增量、頻繁
測試 實作之後 持續、每次迭代
客戶回饋 專案結束時 每次迭代
風險 晚期才發現 早期就發現
變更 昂貴、被抵制 預期中、被歡迎

何時使用哪種

  • 瀑布流適合:需求固定的受監管產業、硬體製造、問題和解決方案都明確的專案。
  • 敏捷適合:軟體開發、產品創新、需求不斷演進的專案、速度至關重要的競爭市場。

重點摘要

  • 瀑布流是循序的、計劃驅動的;敏捷是迭代的、回饋驅動的。
  • 瀑布流假設需求穩定;敏捷假設需求會變化。
  • 兩種方法都不是絕對優越——正確的選擇取決於領域、專案和不確定性程度。

下一步

在第 3 課中,您將概覽主要的敏捷框架——Scrum、Kanban、XP 和 SAFe。

日本語

概要

  • 学習内容:ウォーターフォールモデル、その長所と短所、アジャイルがどのように弱点に対処するか、各アプローチの適切な場面。
  • 前提条件:レッスン1——アジャイルとは?
  • 推定読了時間:14分

はじめに

アジャイルがソフトウェアの世界を征服する前、ウォーターフォールがあった。要求→設計→実装→テスト→デプロイ→保守という段階を水が流れ落ちるように進む、逐次的なアプローチである。各フェーズは次のフェーズの前に完了しなければならず、上流に戻るのはコストが高い。

ウォーターフォールモデル

  1. 要求:すべての要求を事前に収集し、文書化し、承認を得る。
  2. 設計:要求に基づいてシステムアーキテクチャを作成。
  3. 実装:設計に従ってコードを書く。
  4. テスト:完成したシステムを要求に対してテスト。
  5. デプロイ:完成品をユーザーにリリース。
  6. 保守:バグ修正と変更要求の処理。

アジャイルアプローチ

側面 ウォーターフォール アジャイル
計画 事前、包括的 継続的、適応的
要求 開始時に固定 全体を通じて進化
提供 最後に一度の大リリース インクリメンタル、頻繁
テスト 実装後 継続的、各イテレーション
顧客フィードバック プロジェクト終了時 各イテレーション
リスク 遅く発見 早期に発見
変更 高コスト、抵抗 予期される、歓迎

いつどちらを使うか

  • ウォーターフォール:要求が固定の規制産業、ハードウェア製造。
  • アジャイル:ソフトウェア開発、プロダクトイノベーション、要求が進化するプロジェクト。

重要ポイント

  • ウォーターフォールは逐次的で計画駆動、アジャイルは反復的でフィードバック駆動。
  • ウォーターフォールは要求が安定と想定、アジャイルは変化を想定。
  • どちらも普遍的に優れているわけではない——正しい選択はドメインと不確実性に依存する。

次のステップ

レッスン3では、主要なアジャイルフレームワーク——Scrum、Kanban、XP、SAFeを概観します。

You Missed