Mở đầu — vì sao bài này quan trọng
Nếu phạm vi (scope) trả lời câu hỏi "chúng ta làm cái gì", thì tiến độ (schedule) trả lời câu hỏi khó hơn nhiều: "khi nào xong, và điều gì thực sự quyết định ngày xong đó". Trong thực tế đi làm, hầu hết các dự án chậm deadline không phải vì đội thiếu năng lực, mà vì người quản lý dự án (PM) không nhìn ra được chuỗi công việc nào đang quyết định ngày kết thúc. Họ dồn sức ép lên những đầu việc đang trễ nhưng lại nằm ở nhánh không quan trọng, trong khi cái nhánh thực sự "kéo lê" cả dự án thì không ai để ý.
Đó chính là lý do Critical Path Method (CPM — Phương pháp Đường găng) và Critical Chain Project Management (CCPM — Quản lý dự án theo Chuỗi găng) trở thành hai công cụ nền tảng mà bất kỳ ai thi PMP cũng phải nắm chắc. Trong đề thi PMP, đây là khu vực ra câu hỏi tính toán nhiều nhất: tìm đường găng, tính float, hiểu tác động của việc rút ngắn tiến độ. Nhưng quan trọng hơn cả điểm thi, hai phương pháp này thay đổi cách bạn tư duy về thời gian trong dự án — từ chỗ quản lý theo cảm tính sang quản lý theo dữ liệu.
Bài này tập trung riêng vào cách xây dựng mạng lưới tiến độ, tính đường găng, tính float, và hiểu triết lý khác biệt của CCPM. Các kỹ thuật ước lượng thời lượng công việc (estimation) sẽ được nói kỹ ở Bài 26, nên ở đây ta giả định đã có sẵn con số thời lượng và tập trung vào cấu trúc tiến độ.
Khái niệm cốt lõi
Network Diagram — sơ đồ mạng lưới
Trước khi có đường găng, ta phải có sơ đồ mạng lưới. Đây là cách biểu diễn các công việc (activities) cùng với quan hệ phụ thuộc (dependencies) giữa chúng. Phương pháp phổ biến nhất là Precedence Diagramming Method (PDM), hay còn gọi là Activity-on-Node (AON): mỗi công việc là một ô (node), các mũi tên nối giữa các ô thể hiện quan hệ "việc này phải xong trước khi việc kia bắt đầu".
Có bốn loại quan hệ phụ thuộc bạn cần thuộc:
- Finish-to-Start (FS): A xong thì B mới bắt đầu. Đây là loại phổ biến nhất — ví dụ phải đổ móng xong mới xây tường.
- Start-to-Start (SS): A bắt đầu thì B mới bắt đầu (thường có độ trễ). Ví dụ bắt đầu đổ bê tông thì mới bắt đầu san phẳng bề mặt.
- Finish-to-Finish (FF): A xong thì B mới xong. Ví dụ viết code và viết tài liệu kỹ thuật phải kết thúc cùng lúc.
- Start-to-Finish (SF): hiếm gặp — ca trực mới bắt đầu thì ca cũ mới được kết thúc.
Critical Path Method (CPM) — Phương pháp Đường găng
Đường găng (critical path) là chuỗi công việc dài nhất đi xuyên qua sơ đồ mạng lưới, tính từ đầu đến cuối dự án. Nghe hơi ngược đời: tại sao lại là dài nhất chứ không phải ngắn nhất? Vì đường dài nhất chính là thời gian tối thiểu để hoàn thành toàn bộ dự án. Bạn không thể xong sớm hơn tổng thời lượng của chuỗi dài nhất, vì các công việc trên đó phụ thuộc nối tiếp nhau, không thể làm song song.
Đặc điểm cốt lõi: các công việc nằm trên đường găng có float (hay slack) bằng 0. Float là lượng thời gian một công việc có thể trễ mà không làm trễ ngày kết thúc dự án. Công việc trên đường găng không có "đệm" nào cả — trễ một ngày là dự án trễ một ngày. Ngược lại, công việc nằm ngoài đường găng có float dương, tức là có thể xê dịch trong một khoảng nhất định mà không ảnh hưởng ngày về đích.
Để tính, ta dùng Forward Pass và Backward Pass:
- Forward Pass (đi từ đầu ra cuối): tính Early Start (ES) và Early Finish (EF). Quy tắc: EF = ES + Duration − 1 (nếu tính theo ngày trọn); khi một công việc có nhiều việc đứng trước, lấy EF lớn nhất làm ES.
- Backward Pass (đi từ cuối ngược lại đầu): tính Late Start (LS) và Late Finish (LF). Khi một công việc có nhiều việc đứng sau, lấy LS nhỏ nhất làm LF.
- Total Float = LS − ES = LF − EF. Công việc có Total Float = 0 chính là công việc găng.
- Free Float là lượng trễ được phép mà không ảnh hưởng đến ES của công việc ngay sau nó (khác với Total Float là không ảnh hưởng đến cả dự án).
Rút ngắn tiến độ: Crashing và Fast Tracking
Khi dự án cần về đích sớm hơn, có hai kỹ thuật nén tiến độ (schedule compression):
- Crashing: thêm nguồn lực vào đường găng để rút ngắn thời gian (thêm người, tăng ca, thuê ngoài). Đánh đổi: tăng chi phí. Nguyên tắc là crash công việc có "chi phí crash trên mỗi ngày rút được" thấp nhất trước.
- Fast Tracking: làm song song những việc vốn dĩ tuần tự. Đánh đổi: tăng rủi ro và có thể phải làm lại (rework).
Critical Chain Project Management (CCPM)
CCPM do Eliyahu Goldratt đề xuất trong cuốn Critical Chain, dựa trên Lý thuyết Ràng buộc (Theory of Constraints). Nó ra đời để khắc phục điểm yếu của CPM: CPM chỉ quan tâm đến quan hệ phụ thuộc logic giữa các công việc, mà bỏ qua sự ràng buộc về nguồn lực. Trong thực tế, cùng một chuyên gia không thể làm hai việc song song dù logic cho phép.
Critical Chain = đường dài nhất có tính đến cả quan hệ phụ thuộc logic lẫn ràng buộc nguồn lực. Đây là điểm khác biệt cốt lõi so với critical path.
CCPM đưa ra hai ý tưởng lớn:
- Cắt bỏ đệm an toàn cá nhân: con người có xu hướng ước lượng thời gian kèm một khoản "đệm" phòng thân (padding). CCPM cắt các con số ước lượng về mức "50% khả năng hoàn thành" — nghĩa là con số khá gắt.
- Gom đệm lại thành buffer chung: thay vì mỗi việc giữ đệm riêng, CCPM gom toàn bộ đệm vào các buffer đặt ở vị trí chiến lược:
Triết lý CCPM chống lại ba "căn bệnh" quản lý thời gian: Định luật Parkinson (việc luôn nở ra cho vừa thời gian được giao), Hội chứng sinh viên (nước đến chân mới nhảy), và đa nhiệm gây hại (multitasking làm mọi việc chậm hơn). Quản lý theo CCPM là theo dõi mức tiêu thụ buffer chứ không phải theo dõi từng công việc có đúng hạn hay không.
Tình huống thực tế
Ví dụ 1 — Công ty phần mềm FPT Software và bài học "trễ nhầm nhánh"
Một nhóm dự án tại một công ty phần mềm lớn ở Hà Nội (bối cảnh giả định dựa trên mô hình FPT Software) triển khai hệ thống quản lý kho cho khách hàng Nhật. Sơ đồ có hai nhánh: nhánh backend (thiết kế DB → viết API → tích hợp) mất tổng 30 ngày, và nhánh frontend (thiết kế UI → code giao diện) mất 18 ngày; cả hai phải gặp nhau ở bước "kiểm thử tích hợp" (5 ngày).
Đường găng ở đây là: backend (30) + kiểm thử (5) = 35 ngày. Nhánh frontend chỉ 18 ngày, nên có Total Float = 30 − 18 = 12 ngày.
PM ban đầu thấy nhánh frontend hay trễ vặt nên gây sức ép dữ dội lên đội UI, trong khi đội backend cứ đủng đỉnh. Kết quả: dự án vẫn trễ, vì đội backend — vốn nằm trên đường găng — trễ 4 ngày mà không ai để ý. Bài học: sức ép quản lý phải dồn vào đường găng. Nhánh frontend có tận 12 ngày float, trễ 3-4 ngày cũng chẳng sao; ép nó là lãng phí năng lượng và làm hỏng tinh thần đội.
Ví dụ 2 — Nhà thầu xây dựng Coteccons và bài toán Crashing
Một nhà thầu xây dựng (bối cảnh gợi từ Coteccons) đang thi công một tòa văn phòng ở TP.HCM. Chủ đầu tư muốn bàn giao sớm 10 ngày để kịp cho thuê. Đường găng gồm 4 công việc có thể crash:
| Công việc | Thời gian crash tối đa | Chi phí crash / ngày |
|---|---|---|
| Đổ móng | 3 ngày | 8 triệu |
| Đổ sàn tầng | 4 ngày | 5 triệu |
| Xây tường | 5 ngày | 12 triệu |
| Hoàn thiện | 2 ngày | 20 triệu |
Ví dụ 3 — Startup fintech áp dụng CCPM để hết cảnh "deadline nào cũng trễ"
Một startup fintech ở Singapore có 12 kỹ sư, nhưng lúc nào cũng trễ hạn dù ai cũng bận rộn. Nguyên nhân: mỗi kỹ sư giữ đệm riêng cho ước lượng của mình (khai 5 ngày cho việc thực ra làm 3 ngày), và một kiến trúc sư giỏi duy nhất bị kéo vào 4 dự án song song (multitasking).
Áp dụng CCPM: họ cắt ước lượng về mức 50% (việc 5 ngày còn 3 ngày), gom phần đệm bị cắt thành một Project Buffer đặt cuối chuỗi. Họ xác định lại chuỗi găng có tính đến ràng buộc: kiến trúc sư chỉ làm một dự án một thời điểm. Kết quả sau 2 quý: thời gian giao hàng trung bình giảm khoảng 25%, và điều quan trọng là PM giờ chỉ cần nhìn "buffer đã tiêu bao nhiêu phần trăm" để biết dự án có nguy hiểm không, thay vì họp hành truy vấn từng người. Bài học: CCPM không phải là ép người làm nhanh hơn, mà là loại bỏ lãng phí do đệm phân tán và đa nhiệm.
Hướng dẫn từng bước
Đây là quy trình thực hành để lập và quản lý tiến độ theo CPM, sau đó nâng cấp lên CCPM khi cần:
- Liệt kê công việc từ WBS: lấy các gói công việc (work package) từ WBS (đã học ở Bài 24) và phân rã thành các activities cụ thể.
- Xác định quan hệ phụ thuộc: với mỗi công việc, hỏi "việc gì phải xong trước?". Ghi rõ loại quan hệ (FS/SS/FF/SF) và các lead/lag.
- Vẽ sơ đồ mạng lưới (PDM/AON): nối các node lại. Kiểm tra không có vòng lặp (không được có việc A phụ thuộc B mà B lại phụ thuộc A).
- Đưa thời lượng vào từng công việc: dùng con số ước lượng (kỹ thuật ước lượng sẽ nói ở Bài 26).
- Chạy Forward Pass: tính ES và EF cho từng công việc, từ đầu đến cuối.
- Chạy Backward Pass: tính LS và LF, từ cuối ngược về đầu.
- Tính Total Float: Float = LS − ES. Những công việc có Float = 0 tạo thành đường găng.
- Xác nhận đường găng: đánh dấu chuỗi công việc float = 0. Chú ý có thể có nhiều hơn một đường găng và các đường near-critical.
- (Nếu cần rút ngắn) Quyết định Crashing hay Fast Tracking: chỉ tác động lên đường găng; cân nhắc chi phí (crashing) và rủi ro (fast tracking).
- (Nâng cấp CCPM) Đưa ràng buộc nguồn lực vào: điều chỉnh lịch để không có nguồn lực nào bị phân bổ quá tải; xác định lại chuỗi găng theo cả logic lẫn nguồn lực.
- Đặt buffer: cắt đệm cá nhân, gom thành Project Buffer và Feeding Buffer.
- Theo dõi và cập nhật: với CPM, cập nhật tiến độ thực tế và tính lại đường găng định kỳ. Với CCPM, theo dõi mức tiêu thụ buffer (dùng biểu đồ fever chart: xanh/vàng/đỏ).
Lỗi thường gặp & mẹo
Lỗi 1 — Nhầm đường găng là đường ngắn nhất. Đường găng là đường dài nhất. Nếu trong đề thi bạn tính ra critical path ngắn hơn một nhánh khác, chắc chắn bạn sai.
Lỗi 2 — Dồn nguồn lực vào công việc có float dương. Đây là lỗi kinh điển ngoài đời (như ví dụ 1). Chỉ đầu tư sự chú ý và nguồn lực vào đường găng và các đường near-critical.
Lỗi 3 — Quên rằng crash công việc ngoài đường găng là vô ích. Rút ngắn một việc có float không làm dự án về sớm hơn, chỉ tốn tiền vô ích.
Lỗi 4 — Nhầm Total Float với Free Float. Total Float là trễ mà không ảnh hưởng cả dự án; Free Float là trễ mà không ảnh hưởng việc ngay sau. Đề thi rất hay hỏi phân biệt hai khái niệm này.
Lỗi 5 — Lẫn lộn critical path với critical chain. Critical path chỉ xét logic phụ thuộc; critical chain xét cả logic và ràng buộc nguồn lực. Nếu câu hỏi nhắc đến "buffer", "resource constraint", "Theory of Constraints" thì đó là CCPM.
Mẹo thi cử:
- Khi tính Forward/Backward Pass, hãy nhất quán quy ước bạn dùng (bắt đầu từ ngày 0 hay ngày 1). PMP thường chấp nhận cả hai miễn logic đúng.
- Khi có nhiều việc đứng trước: Forward Pass lấy giá trị lớn nhất. Khi có nhiều việc đứng sau: Backward Pass lấy giá trị nhỏ nhất. Nhớ câu này là làm được đa số bài tính.
- Fast Tracking = rủi ro (không tốn thêm tiền). Crashing = tiền (không thêm rủi ro logic). Đừng lẫn.
- CCPM: buffer đặt cuối chuỗi = Project Buffer; buffer ở nơi nhánh phụ nhập vào = Feeding Buffer.
Bài tập thực hành
Bài 1 (tính đường găng): Một dự án có các công việc với quan hệ FS như sau:
- A (3 ngày) → không phụ thuộc gì (bắt đầu dự án)
- B (4 ngày) → sau A
- C (2 ngày) → sau A
- D (5 ngày) → sau B
- E (3 ngày) → sau C và D
- Kết thúc sau E.
Bài 2 (crashing): Đường găng của một dự án là 20 ngày, cần rút xuống 16 ngày. Có 3 công việc trên đường găng crash được: X (rút tối đa 2 ngày, 3tr/ngày), Y (rút tối đa 3 ngày, 2tr/ngày), Z (rút tối đa 4 ngày, 5tr/ngày). Hãy chọn phương án crash rẻ nhất để rút đúng 4 ngày và tính tổng chi phí.
Bài 3 (tư duy CCPM): Đội của bạn luôn khai thời gian dư ra 40% "cho chắc" nhưng vẫn thường trễ. Hãy mô tả cách bạn áp dụng CCPM: cắt đệm ở đâu, gom về đâu, và bạn sẽ theo dõi sức khỏe dự án bằng chỉ số gì thay vì kiểm tra từng công việc.
(Đáp án gợi ý — Bài 1: đường găng A→B→D→E = 15 ngày; Total Float của C = 15 − (3+2+3) = 7 ngày. Bài 2: crash Y 3 ngày (6tr) + X 1 ngày (3tr) = 4 ngày, tổng 9 triệu.)
Tóm tắt
- CPM tìm đường dài nhất xuyên qua sơ đồ mạng lưới — đó là thời gian tối thiểu của dự án. Công việc trên đường găng có float = 0.
- Forward Pass (lấy giá trị lớn nhất khi hội tụ) tính ES/EF; Backward Pass (lấy giá trị nhỏ nhất) tính LS/LF; Total Float = LS − ES.
- Chỉ dồn nguồn lực và biện pháp nén tiến độ vào đường găng. Crashing đánh đổi bằng tiền, Fast Tracking đánh đổi bằng rủi ro.
- CCPM bổ sung ràng buộc nguồn lực vào bức tranh (critical chain), cắt đệm cá nhân và gom thành Project Buffer / Feeding Buffer, chống lại Parkinson, hội chứng sinh viên và đa nhiệm.
- Quản lý theo CPM là theo dõi đường găng; quản lý theo CCPM là theo dõi mức tiêu thụ buffer.