Chương 11: Ước lượng

Mục tiêu học

11.1 Ước lượng không phải cam kết

Ước lượng (estimate) là dự đoán có cơ sở về công sức, thời gian hoặc chi phí, kèm mức bất định. Cam kết (commitment) là lời hứa giao kết quả theo một điều kiện. Sai lầm nền tảng của nhiều dự án là biến ước lượng thành cam kết khi mới có một câu trả lời mơ hồ.

Ước lượng Cam kết
Bản chất Dự đoán có khoảng Lời hứa
Người tạo Người sẽ làm Người có quyền (PM, Sponsor) sau khi thương lượng
Khi thông tin đổi Cập nhật Chỉ đổi qua thương lượng
Ví dụ "Khoảng 35–43 tuần, tin cậy 80%" "Go-live 03/10/2026 nếu giữ phạm vi X"

Nón bất định (cone of uncertainty): ở giai đoạn đầu, ước lượng có thể lệch rất lớn (nhiều lần), thu hẹp dần khi làm rõ yêu cầu và thiết kế. Nghĩa là cùng một dự án, ước lượng ở tuần 1 không thể chính xác bằng ở tuần 20, và khi khách đòi "con số chính xác" từ tuần 1 thì thực chất đòi điều bất khả thi. PM cần nói điều này bằng lời dễ hiểu, kèm kế hoạch thu hẹp khoảng (ví dụ ước lượng lại sau Sprint 0).

11.2 Các kỹ thuật ước lượng

Kỹ thuật Cách làm Ưu điểm Nhược điểm Khi nào dùng
Analogous (tương tự) So với dự án/gói đã xong tương tự Nhanh, rẻ Phụ thuộc chất lượng dữ liệu cũ Giai đoạn đầu, chưa có WBS
Bottom-up Ước lượng từng work package rồi cộng Chi tiết, chính xác hơn Tốn công, cần WBS Đã có WBS
Parametric Dùng đơn vị (ví dụ ngày công/màn hình, /API) × số lượng Nhanh và nhất quán Cần dữ liệu lịch sử Công việc lặp lại
Expert / Delphi Nhiều chuyên gia đưa ý, thảo luận, lặp Giảm thiên lệch cá nhân Cần người giỏi Gói mới, rủi ro

Đối chiếu ít nhất hai kỹ thuật — ví dụ bottom-up 1.927 ngày công đối chiếu với analogous (dự án tương tự trước đây của BrightSoft) để phát hiện lệch quá xa.

Ba điểm và PERT

Với gói bất định, đừng đưa một con số; đưa ba: O (lạc quan — mọi thứ suôn sẻ), M (khả dĩ nhất), P (bi quan — trục trặc nhưng không thảm hoạ). Công thức PERT:

Ví dụ gói 3.5.3 (Dịch vụ đơn hàng): O = 50, M = 65, P = 95 ngày → E = (50 + 260 + 95)/6 = 67,5; SD = (95 − 50)/6 = 7,5.

Với nhiều task độc lập: tổng E = Σ E; SD tổng = √(Σ SD²) (không cộng thẳng SD). Với 12 gói lớn của FoodNow: Σ M = 750, Σ E = 772,5, SD tổng ≈ 26,3. Khoảng ~80% (±1,28 SD): ≈ 739–806 ngày công; khoảng ~95% (±1,96 SD): ≈ 721–824. Lưu ý: E lớn hơn M vì phân phối lệch phải (rủi ro trễ nhiều hơn sớm). Nếu áp cùng tỷ lệ +3% cho toàn WBS 1.927 ngày, kỳ vọng ≈ 1.985 ngày công ≈ 89% năng lực đội.

Giới hạn của PERT: giả định các task độc lập và người ước lượng khách quan. Thực tế chúng phụ thuộc lẫn nhau, nên khoảng thực rộng hơn công thức. Hãy coi kết quả là cận dưới của sự bất định.

📎 Mẫu đầy đủ: templates/estimation/three-point-estimate.csv (công thức Excel viết sẵn), templates/estimation/estimation-checklist.md

11.3 Ước lượng trong Agile

Trong Agile, người ta ước lượng kích thước tương đối thay vì giờ:

Kết nối với Hybrid: WBS (ngày công) dùng cho ngân sách và mốc; story point/velocity dùng để dự báo tiến độ sprint. Cần bảng quy đổi sơ bộ nhưng đừng coi 1 point = 1 số giờ cố định.

11.4 Buffer, contingency và hệ số năng suất

11.5 Trả lời "khi nào xong?"

Câu hỏi khó nhất của PM. Cách trả lời tốt:

  1. Nói bằng khoảng và độ tin cậy, không nói một ngày: "Dự kiến tuần 35–43, tin cậy khoảng 80%."
  2. Nêu giả định lớn nhất (đội đủ người, vendor đúng hạn).
  3. Nêu điều gì làm khoảng thu hẹp và khi nào: "Sau Sprint 3 và khi PayEasy xác nhận sandbox, em sẽ ước lượng lại và báo khoảng hẹp hơn."
  4. Đưa lựa chọn: "Nếu anh cần sớm hơn, mình có thể cắt X, Y — mỗi cái tiết kiệm được bao nhiêu."
  5. Không nhượng bộ bằng cách "cố gắng". "Cố gắng" không phải phương án; nó là cách chuyển rủi ro sang đội.

Tình huống FoodNow

Tuần 6 (09–13/02/2026). Anh Bảo gọi họp khẩn: "Đối thủ sắp ra app. Tôi cần MVP trong 6 tháng, chị Hà làm được không?" Trong khi đó, ước lượng của đội cho MVP đủ ba app là 9 tháng.

Hà không nói "được" hay "không". Chị chuẩn bị ba con số trong hai ngày. Một: bottom-up 1.927 ngày công (kỳ vọng PERT ≈ 1.985), vừa 87–89% năng lực 12 FTE × 185 ngày. Hai: nếu cố nén xuống 6 tháng (khoảng 25 tuần làm việc, sau Tết), năng lực chỉ còn ≈ 12 FTE × 4,74 ngày/tuần × 25 ≈ 1.420 ngày — thiếu ≈ 560 ngày ngay cả khi đội làm 100% năng lực. Ba: thêm người không giải quyết được: kể cả tăng lên 16 FTE, sau khi trừ chi phí phối hợp và thời gian học việc, năng lực hiệu dụng vẫn dưới nhu cầu (Brooks, Ch16).

Chị trình bày cho anh Bảo ba phương án: (A) 6 tháng nhưng bỏ khoảng 38% phạm vi — thực chất chỉ còn app Khách hàng và Nhà hàng, không có Tài xế và Admin, không đủ vận hành; (B) 9 tháng giữ phạm vi đầy đủ, ví điện tử để R2; (C) 7,5 tháng với rủi ro cao và không dự phòng. Chị nói: "Em khuyên B. Em không thể cam kết A vì em sẽ phải hứa điều đội không làm được." Anh Bảo hỏi: "Còn nếu tôi cần lấy ví điện tử vào ngay?" Hà đáp: "Ví thêm khoảng 60–70 ngày công và một vendor mới, tức là kéo thêm 2–3 tuần và một rủi ro tích hợp nữa; em đề nghị đẩy sang R2."

Kết quả: anh Bảo chấp nhận giữ 9 tháng bằng cách chuyển ví điện tử sang R2 (Scope Statement v1.1, 13/02/2026) và đề nghị một buổi demo chạy thật cho hội đồng quản trị ở tuần 22 (01–05/06/2026) để có "thứ để cho xem". Hà đồng ý và ghi vào kế hoạch.

Bài tập

Bài 1 (làm ra sản phẩm) — PERT. Tính E và SD cho 5 task, sau đó tính tổng E, SD tổng và khoảng ~80%:

Task O M P
A. Thiết kế CSDL 8 12 22
B. API đăng nhập 5 8 14
C. Màn hình danh sách 6 10 16
D. Tích hợp thanh toán 15 25 50
E. Kiểm thử tích hợp 10 14 24

Bài 2 (làm ra sản phẩm). Dùng three-point-estimate.csv làm mẫu, ước lượng 8 gói lớn nhất của dự án của bạn.

Bài 3 (tình huống ngắn). Sponsor nói: "Tôi đã hứa với hội đồng: xong sau 4 tháng. Anh chị ước lượng lại để khớp đi." Đội ước lượng 6 tháng. Bạn làm gì trong 24 giờ đầu? Nêu 2 hướng và lời nói mẫu.

Gợi ý đáp án

Bài 1: A: E = (8+48+22)/6 = 13,0; SD = 14/6 = 2,33. B: (5+32+14)/6 = 8,5; SD = 1,5. C: (6+40+16)/6 = 10,33; SD = 1,67. D: (15+100+50)/6 = 27,5; SD = 5,83. E: (10+56+24)/6 = 15,0; SD = 2,33. Tổng E = 74,33; Σ SD² = 5,44+2,25+2,78+34,03+5,44 = 49,94 → SD tổng ≈ 7,07. Khoảng ~80%: 74,33 ± 1,28×7,07 ≈ 65,3–83,4 ngày công. Nhận xét: task D (thanh toán) chiếm phần lớn bất định — làm spike sớm.

Bài 3: Chẩn đoán: cam kết đã đưa ra trước ước lượng (neo). Hướng A: đưa dữ liệu (khoảng, giả định) rồi để Sponsor chọn cắt phạm vi giữ 4 tháng, ghi rõ cắt gì. Hướng B: đàm phán lại với hội đồng, chia phase (phase 1 ở tháng 4 với phạm vi nhỏ). Lời nói mẫu: "Em hiểu anh đã hứa với hội đồng. Với phạm vi hiện tại, đội cần khoảng 5–7 tháng. Để giữ 4 tháng, mình phải cắt các hạng mục X, Y, Z — anh muốn cắt cái nào, hoặc mình đề xuất với hội đồng một bản phase 1?" Sai lầm: ép đội "nghĩ lại" để ra con số nhỏ hơn; đồng ý rồi báo trễ sau.

Sai lầm thường gặp

  1. Sai lầm: Trả lời "khi nào xong?" bằng một ngày duy nhất. → Hậu quả: ngày đó bị coi như cam kết; khi lệch, mất uy tín. Cách khắc phục: trả lời bằng khoảng, độ tin cậy và giả định.
  2. Sai lầm: PM ước lượng thay đội. → Hậu quả: con số không có sở hữu, đội không cam kết. Cách khắc phục: người làm ước lượng; PM tổng hợp và thách thức bằng dữ liệu.
  3. Sai lầm: Bị neo bởi hạn chót của khách. → Hậu quả: ước lượng bị bóp cho vừa hạn. Cách khắc phục: ước lượng độc lập trước, rồi mới thảo luận đánh đổi.
  4. Sai lầm: Nhét đệm vào từng task. → Hậu quả: đệm bị ăn hết (Parkinson), không ai thấy tổng đệm. Cách khắc phục: đệm cấp dự án, tên rõ, quy tắc dùng.
  5. Sai lầm: Dùng velocity để so sánh đội hoặc đánh giá cá nhân. → Hậu quả: đội "thổi" point, dữ liệu vô nghĩa. Cách khắc phục: velocity chỉ để dự báo trong một đội.
  6. Sai lầm: Cộng thẳng SD của các task. → Hậu quả: khoảng bất định quá lớn, mất niềm tin vào công cụ. Cách khắc phục: SD tổng = √(Σ SD²), và nhớ giới hạn giả định độc lập.

Tóm tắt & tiếp theo

Chương 12 biến ước lượng thành lịch: quan hệ phụ thuộc, đường găng (critical path) và Gantt.