Chương 28: Incremental & Iterative Delivery: khái niệm, phân biệt

Mục tiêu học

28.1 Incremental vs Iterative — khác nhau ở đâu?

Đây là cặp thuật ngữ dễ nhầm vì thường đi cùng nhau trong Agile, nhưng bản chất khác nhau:

flowchart TB
    subgraph Inc["Incremental — thêm dần từng phần hoàn chỉnh"]
        I1["Bước 1:<br/>Đặt món (hoàn chỉnh)"] --> I2["Bước 2:<br/>+ Theo dõi đơn hàng<br/>(hoàn chỉnh)"]
        I2 --> I3["Bước 3:<br/>+ Khách hàng thân thiết<br/>(hoàn chỉnh)"]
    end
    subgraph Iter["Iterative — cải thiện dần cùng một phần"]
        T1["Vòng 1:<br/>App chỉ có 1 màu,<br/>chưa đẹp"] --> T2["Vòng 2:<br/>Thêm màu sắc,<br/>bố cục tốt hơn"]
        T2 --> T3["Vòng 3:<br/>Hoàn thiện UI/UX<br/>đầy đủ"]
    end

Trong thực tế, Scrum kết hợp cả hai: mỗi sprint vừa có thể thêm tính năng mới (incremental) vừa có thể cải thiện tính năng đã có dựa trên phản hồi (iterative) — đây là lý do 2 khái niệm hay bị gộp chung, dù về mặt lý thuyết là hai trục khác nhau.

28.2 Vì sao giao hàng từng phần giảm rủi ro?

So sánh hai chiến lược cho dự án FoodNow:

Chiến lược A — Giao hàng một lần (Waterfall thuần, Chương 6): phát triển toàn bộ Epic A, B, C, D trong 6 tháng, chỉ ra mắt khi hoàn thành 100%.

Chiến lược B — Incremental Delivery: ra mắt Epic A (Đặt món & Thanh toán) sau 2 tháng cho 2 chi nhánh thử nghiệm, thu thập phản hồi thật, rồi tiếp tục Epic B, C, D.

flowchart LR
    subgraph A["Chiến lược A: Giao 1 lần"]
        A1["Tháng 1-6: Code toàn bộ"] --> A2["Tháng 6: Ra mắt<br/>toàn bộ, LẦN ĐẦU<br/>nhận phản hồi thật"]
    end
    subgraph B["Chiến lược B: Incremental"]
        B1["Tháng 1-2: Epic A"] --> B2["Ra mắt thử nghiệm,<br/>nhận phản hồi SỚM"]
        B2 --> B3["Tháng 3-4: Epic B<br/>(đã điều chỉnh theo<br/>phản hồi Epic A)"]
        B3 --> B4["Tháng 5-6: Epic C, D"]
    end

Với Chiến lược A, nếu phát hiện vấn đề nghiêm trọng ở Epic A (ví dụ: khách hàng thấy luồng thanh toán khó hiểu) — vấn đề này chỉ được phát hiện ở tháng thứ 6, sau khi đã lỡ xây cả Epic B, C, D theo cùng một giả định sai. Với Chiến lược B, vấn đề được phát hiện ở tháng thứ 2, kịp thời điều chỉnh trước khi tiếp tục — đây chính là giá trị cốt lõi của Incremental Delivery: biến những giả định chưa kiểm chứng thành bài học sớm, với chi phí thấp, thay vì đặt cược toàn bộ dự án vào một lần ra mắt duy nhất.

28.3 Các chiến lược chia Incremental phổ biến

Chiến lược Mô tả Ví dụ FoodNow
Theo tính năng (Feature-based) Chia theo Epic/Feature độc lập Epic A trước, Epic B/C/D sau (như ví dụ 28.2)
Theo phân khúc người dùng (User segment) Ra mắt cho một nhóm nhỏ trước, mở rộng dần Thử nghiệm ở 2 chi nhánh trước, mở rộng 12 chi nhánh sau
Theo khu vực địa lý (Geographic) Ra mắt ở một khu vực trước Chỉ Quận 1, Quận 3 trước, mở rộng toàn TP.HCM sau
Theo mức độ hoàn chỉnh (Walking Skeleton) Xây một luồng end-to-end tối giản trước (dù đơn giản), rồi bổ sung chi tiết dần Luồng đặt-thanh toán-nhận đơn tối giản (chưa có UI đẹp, chưa có thông báo) chạy được trước, rồi hoàn thiện dần

"Walking Skeleton" đặc biệt hữu ích ở giai đoạn đầu dự án mới: thay vì hoàn thiện 100% một Epic rồi mới sang Epic khác, xây một luồng mỏng nhưng xuyên suốt toàn bộ hệ thống trước — giúp phát hiện sớm các vấn đề tích hợp giữa các thành phần (app, backend, cổng thanh toán, hệ thống chi nhánh) mà chỉ khi ráp nối thực tế mới lộ ra.

28.4 Thách thức khi áp dụng Incremental Delivery

Bài tập

  1. Với dự án FoodNow, tự đề xuất một kế hoạch chia Incremental theo 1 trong 4 chiến lược ở mục 28.3 (khác với ví dụ đã có), giải thích lý do chọn chiến lược đó.
  2. Giải thích bằng ví dụ cụ thể của riêng bạn (không dùng lại ví dụ FoodNow) sự khác biệt giữa "Incremental" và "Iterative".

Sai lầm thường gặp

Tóm tắt & tiếp theo

Incremental (thêm dần từng phần hoàn chỉnh) và Iterative (cải thiện dần cùng một phần) là hai khái niệm khác nhau nhưng thường kết hợp trong Agile — giao hàng từng phần giúp phát hiện sớm vấn đề với chi phí thấp hơn nhiều so với đặt cược vào một lần ra mắt duy nhất. Chương 29 sẽ học cách biến chiến lược Incremental thành một kế hoạch cụ thể, có tài liệu — Release Plan và Incremental Delivery Plan, kèm mẫu đầy đủ.