Case study Nâng cao 7 phút đọc

Cứu dự án sắp đổ: 30 ngày đầu

Cách tiếp quản một dự án phần mềm đang trễ ngày, mất niềm tin, và chạy bằng anh hùng. Playbook cứu 30 ngày kèm artifact và các cuộc trò chuyện.

Mục lục
  1. Khi nào một dự án thật sự cần cứu?
  2. Cái giá khi để dự án sắp đổ trôi tiếp là gì?
  3. Playbook cứu 30 ngày trông thế nào?
  4. Tuần 1 (chẩn đoán) trông thế nào trong artifact?
  5. Cắt scope cho cứu trông thế nào?
  6. Tuần 3-4 cài lại kỷ luật ra sao?
  7. Cứu dự án có thể tự tạo ra những lỗi nào?
  8. Khi nào cứu không phải câu trả lời đúng?
  9. Đi tiếp từ đây như thế nào?

Dự án khó nhất mà một tech lead có thể kế thừa là dự án đã sắp đổ vào lúc họ nhận. Team kiệt sức, stakeholder mất niềm tin, và plan gốc đã trở thành hư cấu. Case study này đi qua plan cứu 30 ngày - đây cũng là chỗ các chương trước đó của series gộp lại khi áp dụng cùng lúc.

Khi nào một dự án thật sự cần cứu?

Có ba tín hiệu cần xuất hiện cùng lúc, mỗi cái đến từ một chương trước.

Status kẹt đỏ. Status report ở mức amber hoặc đỏ từ 3 tuần trở lên mà không có plan phục hồi. Trend mới là data; một tuần xấu vẫn là bình thường.

Ngày trượt theo cấp số. Commit gốc là 3 tháng; ETA hiện tại là 6+ tháng; ETA mới lại xuất hiện sau mỗi sprint. Ước lượng đã vỡ; cần re-plan.

Tinh thần team rõ giảm. Engineer im trong retro, 1-on-1 cho thấy dấu hiệu burnout, có rủi ro nghỉ việc trong team. Anh hùng không bền được lâu.

Nếu chỉ có một tín hiệu, vệ sinh dự án bình thường là đủ fix. Cả ba cùng lúc thì rơi vào phạm vi cần cứu.

Cái giá khi để dự án sắp đổ trôi tiếp là gì?

Có ba kiểu hệ luỵ còn tệ hơn cả việc cứu.

Sập tin cậy. Stakeholder dừng dự buổi demo vì không còn tin ngày nữa. Phục hồi tin cậy tốn thêm 6+ tháng kể cả sau khi dự án đã ship.

Engineer rời đi. Engineer mạnh nhất rời trước, vì họ có lựa chọn. Đến lúc lãnh đạo nhận ra, team đã thiếu đúng những người đáng lẽ cứu được.

Bẫy chi phí chìm. "Chúng ta đã 70% xong" trên một dự án còn một năm nữa. Cuộc trò chuyện cứu là chỗ lộ ra liệu nên xong, descope, hay giết. Không có nó, dự án sẽ kéo mãi.

Playbook cứu 30 ngày trông thế nào?

gantt
    title Plan Cứu 30 Ngày
    dateFormat YYYY-MM-DD
    section Tuần 1 Chẩn đoán
    Phỏng vấn stakeholder           :a1, 2026-06-20, 4d
    Review RAID                     :a2, 2026-06-22, 3d
    1-on-1 team                     :a3, 2026-06-20, 5d
    Doc chẩn đoán                   :a4, after a3, 2d
    section Tuần 2 Plan
    Workshop cắt scope              :b1, 2026-06-29, 3d
    Re-baseline với sponsor         :b2, after b1, 2d
    section Tuần 3 Ổn định
    Cài daily standup               :c1, 2026-07-06, 1d
    Cài status tuần                 :c2, 2026-07-06, 1d
    Ship win nhìn thấy được         :c3, 2026-07-09, 4d
    section Tuần 4 Reset
    Retro nhịp bình thường đầu      :d1, 2026-07-17, 1d
    Review sponsor                  :d2, after d1, 1d
    Trao lại tay lái                :d3, after d2, 1d

Bốn tuần, bốn phase. Chẩn đoán trước khi làm bất kỳ điều gì; re-plan với buy-in từ stakeholder; ổn định nhịp; rồi trao dự án trở lại nhịp khoẻ. Cứu kết thúc khi nhịp bình thường đã bền - không phải khi dự án ship.

Tuần 1 (chẩn đoán) trông thế nào trong artifact?

# Dự án {{ Tên }} — Chẩn đoán

## Tóm tắt stakeholder (từ phỏng vấn)
- Sponsor: muốn X vào Y; sẵn linh hoạt scope, không linh hoạt ngày
- Tech Lead: ước lượng sai; dependency Z bị trượt
- 3 engineer: tinh thần thấp; scope bị thêm giữa sprint; retro
  không có action item

## Trạng thái hiện tại
- Item Must gốc: 12; ship: 4; đang làm: 5; chưa bắt đầu: 3
- Ngày gốc: 2026-08-15; xu hướng hiện tại: 2026-12-01
- Top blocker: SDK vendor, capacity infra, lag design

## Highlight RAID
- 8 rủi ro mở, 3 issue, 2 dependency đang chặn
- 6 rủi ro đã hơn 30 ngày không cập nhật
- Không theo dõi giảm thiểu cho 4 trong 3 issue

## Quan sát team
- Standup chạy 45 phút, không tập trung
- Không có buổi retro nào trong 6 tuần qua
- Queue review pull request trung bình 5 ngày
- 2 engineer làm cuối tuần liên tục 3 sprint qua

## Chẩn đoán
Dự án thất bại vì (a) scope gốc vượt capacity 2 lần, (b) các
nhịp đã mục, (c) báo cáo cho stakeholder mang tính phòng thủ.

## Đề xuất
Cắt scope còn 6 Must, re-baseline ngày sang 2026-09-30, khởi
động lại kỷ luật standup/retro/status, ship một win nhìn thấy
được trong tuần 3 để xây lại tin cậy.

Bản chẩn đoán là artifact cho cuộc trò chuyện tuần 2 với sponsor. Không có nó, cuộc trò chuyện cứu chỉ là ý kiến; có nó, là data.

Cắt scope cho cứu trông thế nào?

Áp khung MoSCoW một cách tàn nhẫn:

# Cắt Scope Cứu — Dự án {{ Tên }}

## Must gốc (12 item)

| Item | Trạng thái | Quyết định | Lý do |
|------|------------|-----------|-------|
| Luồng refund | 80% | GIỮ MUST | Đã hứa với khách |
| Đa tiền tệ | 0% | HOÃN sang Q4 | Không khách hỏi |
| Subscription billing | 30% | HOÃN sang Q4 | Lớn hơn ước lượng |
| Admin audit log | 60% | GIỮ MUST | Tuân thủ |
| Stripe webhook idempotency | 100% | GIỮ MUST | Đã xong |
| Runbook customer support | 0% | HOÃN 2 tuần | Nhanh, làm sau |
| Dashboard hiệu năng | 0% | HOÃN sang Q4 | Chỉ nội bộ |
| ... | | | |

## Danh sách Must mới (6 item)
[các item giữ ở trên]

## Ngày mới
2026-09-30 (cũ 2026-08-15; +6 tuần)

## Cái sponsor cần duyệt
- Trượt ngày 6 tuần
- Giảm scope (6 item hoãn)
- Không thêm scope mới trong giai đoạn cứu

## Comms
- Sales: comms launch chỉnh; không công bố ngày cho đến khi
  sponsor duyệt
- Customer success: luồng refund vẫn hứa vào ngày X
- Team Eng: mục tiêu tập trung trong 6 tuần kế tiếp

Đây là một trade-off trung thực: 6 item bị hoãn để mua lại 6 tuần. Sponsor hoặc ký vào trade-off đó, hoặc dự án không có đường đi tiếp.

Tuần 3-4 cài lại kỷ luật ra sao?

flowchart LR
    Day0[Tuần 3 Ngày 0] --> Standup[Daily standup<br/>15 phút, focus blocker]
    Standup --> Status[Status thứ Sáu<br/>RAG, top 3 rủi ro]
    Status --> Retro[Retrospective tuần 4<br/>không đổ lỗi, action item]
    Retro --> Win[Ship win nhìn thấy<br/>nút refund live]
    Win --> Sponsor[Review sponsor<br/>handover]

Kỷ luật ở đây có nghĩa là các artifact từ chương lifecycle chạy đúng giờ. Cứu kết thúc khi team duy trì được standup, status report, và retro mà không cần người cứu dẫn dắt.

Cứu dự án có thể tự tạo ra những lỗi nào?

Khi nào cứu không phải câu trả lời đúng?

Có hai trường hợp.

Dự án nên bị giết. Đôi khi chẩn đoán lộ ra rằng dự án không còn giá trị nghiệp vụ, hoặc khối việc còn lại đã vượt quá đầu tư hợp lý. Câu trả lời trung thực là đề xuất giết, không phải cứu. Chi phí đã chìm rồi.

Team gốc cần đổi lãnh đạo. Đôi khi vấn đề nằm ở manager, không ở dự án. PM cứu không fix được tình huống này; cần partner HR đi cùng.

Playbook cứu áp dụng được khi dự án vẫn cứu được bằng kỷ luật và cắt scope. Dưới ngưỡng đó, cần can thiệp khác.

Đi tiếp từ đây như thế nào?

Case study tiếp theo: greenfield MVP launch - hình ngược lại, một dự án hoàn toàn mới không gánh nặng cũ. Sau đó, hiện đại hoá legacydự án quản vendor hoàn tất nhóm case study.

Câu hỏi thường gặp

Làm sao biết một dự án thật sự cần cứu?
Có ba tín hiệu cùng xuất hiện: status report kẹt 'amber' hoặc 'red' từ 3 tuần trở lên, ngày trượt 2 lần trở lên so với commit gốc, và tinh thần team rõ ràng giảm xuống (người im lặng, người tìm chỗ khác). Một tín hiệu đơn lẻ có thể chỉ là turbulence bình thường; nhưng cả ba cùng lúc là phạm vi cần cứu. Chương status report cho biết đường trend cần xem.
Có nên đưa người mới vào không?
Gần như không trong tuần 1. Người mới chưa có ngữ cảnh và sẽ ngốn thời gian mentor mà bạn không có. Hãy ổn định với team hiện tại trước; thêm capacity tươi từ tuần 4 trở đi khi bạn đã biết thật sự cần gì. Ngoại lệ là khi một kỹ năng quan trọng đang thật sự thiếu - tuyển một chuyên gia, đừng tuyển năm generalist.
Nói với sponsor về việc cắt scope ra sao?
Bằng số, không bằng cảm xúc. 'Danh sách Must gốc = 10 tuần việc; chỉ còn 4 tuần; đây là 5 item tôi đề xuất giữ và 5 item tôi đề xuất hoãn'. Chương scope cho khung cuộc trò chuyện. Sponsor ghét bị bất ngờ nhưng chấp nhận trade-off rõ ràng - hãy dẫn bằng trade-off.
Nếu team kháng cự plan cứu thì sao?
Hãy nghe trước; team có những ngữ cảnh mà bạn chưa có. Sau khi nghe xong, gọi tên ràng buộc: 'Chúng ta phải ship cái gì đó vào ngày X. Giúp tôi tìm xem cái đó là gì.' Phần lớn kháng cự đến từ sợ thất bại, không phải chống lại hướng đi. Khi đường thành công đã cụ thể, họ sẽ tham gia.