Vòng đời dự án Trung bình 6 phút đọc

Sprint execution: standup, blocker, điều chỉnh giữa sprint

Cách giữ sprint chạy ngày qua ngày: format standup hữu dụng, quản lý blocker thật sự gỡ, điều chỉnh scope giữa sprint không hoảng.

Mục lục
  1. Khi nào kỷ luật sprint execution mang lại giá trị?
  2. Cái giá khi execution yếu là gì?
  3. Một standup hữu dụng trông thế nào?
  4. Lead xử lý blocker mà không thành bottleneck ra sao?
  5. Template điều chỉnh giữa sprint là gì?
  6. Sprint execution scale lên đa team ra sao?
  7. Sprint execution có thể tạo ra những lỗi nào?
  8. Khi nào kỷ luật execution chặt là quá liều?
  9. Đi tiếp từ đây như thế nào?

Lập plan cho sprint là phần dễ; chạy sprint từng ngày mới là chỗ phần lớn team âm thầm tụt lại. Engineer không flag blocker; lead bận trong quá nhiều cuộc họp để nhận ra; đến buổi demo thứ Sáu thì mới vỡ ra rằng có những việc đã không xảy ra. Chương này giới thiệu các artifact hàng ngày giúp giữ cho khoảng cách đó nhỏ lại.

Khi nào kỷ luật sprint execution mang lại giá trị?

Có ba dấu hiệu.

Team lỡ hơn một sprint goal trong ba sprint gần nhất. Lỡ một sprint là chuyện bình thường; nhưng lỡ theo pattern là tín hiệu rằng phần execution đang xuống cấp, chứ không phải phần planning xuống cấp.

Blocker tồn tại hơn 48 giờ. Khi engineer nói "tôi đang bị chặn nhưng sẽ làm việc khác", blocker đó thường sẽ sống đến hết sprint và đập thẳng vào buổi demo cuối.

Bị bất ngờ về scope vào cuối sprint. Câu "chúng ta tưởng sẽ xong X vào thứ Sáu" được nói ra vào chiều thứ Tư mà chưa có plan phục hồi. Đây là dấu hiệu thiếu tầm nhìn ở giữa sprint.

Nếu sprint đang đáp đáng tin cậy và blocker được gỡ nhanh, một mức kỷ luật nhẹ là đủ.

Cái giá khi execution yếu là gì?

Có ba kiểu lỗi thường gặp.

Velocity suy giảm dần. Sprint qua sprint, sản lượng giảm mà không có lời giải thích. Nguyên nhân thường nằm ở việc thêm scope một cách im lặng và blocker không được quản lý, chứ không phải ở việc mất capacity thực sự.

Văn hoá anh hùng. Một engineer làm cuối tuần để gỡ rối. Team âm thầm học rằng đó là kỳ vọng. Burnout đến theo sau.

Mất niềm tin từ stakeholder. Ba buổi demo liên tiếp trình ra ít hơn so với cam kết. Stakeholder dần dần ngừng dự; niềm tin bào mòn.

Một standup hữu dụng trông thế nào?

15 phút, có cấu trúc rõ:

## Daily Standup — 2026-06-11

Mỗi người, 60 giây:
1. Hôm qua: cái tôi ship (PR merge, story chuyển Done)
2. Hôm nay: cái tôi đang lấy
3. Blocker: cái gì chặn tôi, hay tôi chờ sẽ chặn

Sau vòng (4 phút):
- Blocker mới thêm vào danh sách
- Owner đồng ý cho mỗi blocker mới
- Cái nào để thảo luận offline đánh dấu

## Danh sách blocker (sprint này)

| Blocker | Owner gỡ | Tuổi (giờ) | Trạng thái |
|---------|----------|------------|------------|
| Stripe sandbox 503 | Bob -> ticket infra | 28 | Đã escalate |
| Design email refund đợi | Carol -> Designer | 8 | Đang xử |

Danh sách blocker chính là artifact bí mật của standup. Phần lớn các buổi standup nói về blocker rồi quên ngay; còn một danh sách dai dẳng có gắn tuổi sẽ ép việc escalate phải xảy ra - blocker trên 24 giờ thì lead phải chú ý, trên 72 giờ thì lên thẳng status report.

Lead xử lý blocker mà không thành bottleneck ra sao?

Có ba quy tắc.

Quy tắc 1: kết nối, đừng tự làm. Khi một blocker xuất hiện, việc của lead là xác định ai có thể gỡ được và route engineer đến đúng người đó. Tuyệt đối không kéo blocker vào queue của chính mình.

Quy tắc 2: escalate sau 24 giờ. Blocker cũ hơn một ngày thì phải chuyển lên cấp trên. EM được kéo vào cho các blocker xuyên team; sponsor được kéo vào cho các blocker xuyên tổ chức.

Quy tắc 3: theo dõi thời gian gỡ. Blocker tồn tại bao lâu chính là metric đo sức khoẻ của team. Thời gian gỡ trung bình dưới 24 giờ là khoẻ; trên 48 giờ nghĩa là có gì đó sai trong cách team flag hoặc escalate.

Template điều chỉnh giữa sprint là gì?

Khi scope đổi giữa sprint, hãy tài liệu hoá thật rõ:

## Điều chỉnh giữa sprint — 2026-06-11

### Trigger bởi
Bug ảnh hưởng khách phát hiện trong luồng refund production.
Sponsor (VP CS) yêu cầu fix sprint này.

### Sprint goal gốc
Ship luồng refund đầu cuối.

### Sprint goal điều chỉnh
1. Fix bug refund production (ưu tiên: hôm nay)
2. Tiếp việc luồng refund sau fix (còn lại sprint)

### Hoãn cái gì
- "Template email refund" hoãn sang sprint kế
- Demo sprint sẽ trình bày tiến độ luồng refund, chưa hoàn thành

### Duyệt bởi
- PM: có
- Sponsor: có (Slack 2026-06-11)
- Team: có (thảo luận standup)

Template này ép việc điều chỉnh phải có ý thức. Khi không có nó, "ai cũng biết là chúng ta đã đổi" - trừ stakeholder không biết, và họ sẽ xuất hiện ở demo với kỳ vọng dự án đã hoàn thành.

Sprint execution scale lên đa team ra sao?

flowchart TB
    TeamA[Standup Team A<br/>15 phút] --> Cross[Sync blocker xuyên team<br/>10 phút, chỉ khi có blocker]
    TeamB[Standup Team B<br/>15 phút] --> Cross
    TeamC[Standup Team C<br/>15 phút] --> Cross
    Cross --> Lead[Project lead route<br/>blocker xuyên team]

Mỗi team vẫn chạy standup riêng. Một buổi sync blocker xuyên team 10 phút chỉ chạy khi có ít nhất một team đang có blocker liên quan đến team khác (thường khoảng 2-3 ngày mỗi tuần). Project lead chủ trì cuộc sync này; các team gửi danh sách blocker của mình tới. Có thể bỏ qua cuộc sync trong những ngày không có gì cần sync - bỏ là dấu hiệu khoẻ mạnh.

Sprint execution có thể tạo ra những lỗi nào?

Khi nào kỷ luật execution chặt là quá liều?

Có hai trường hợp.

Team senior tự tổ chức. Một team senior đã ship cùng nhau nhiều năm có thể cần ít ceremony hơn. Hãy tin team; chỉ can thiệp khi metric đi xuống.

Sprint chỉ có hai người. Hai engineer không cần standup chính thức; một thread Slack đã đủ phủ.

Kỷ luật chỉ thật sự đáng tốn overhead ở quy mô team từ 5 người trở lên và khi blocker thực sự cắt qua nhiều người. Ở mức nhỏ hơn, các nhịp nhẹ vẫn chạy được.

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

Chương tiếp theo: launch và handover - những gì xảy ra khi chuỗi sprint kết thúc ở một release. Sau đó, incident và rollback sẽ nói về cách xử lý khi launch trục trặc.

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

Standup ba câu hỏi kinh điển có gì sai?
Không sai gì cả nếu nó được giữ là một buổi sync; nhưng sai mọi thứ nếu nó biến thành status report. Ba câu hỏi (hôm qua, hôm nay, blocker) chạy tốt khi engineer nói chuyện với nhau, và fail khi engineer chuyển sang báo cáo cho manager. Engineer sẽ ngừng nói ra blocker thật vì manager sẽ 'giúp' (tức là kéo blocker đó vào queue của mình rồi quên đi). Hãy đóng khung standup là buổi phối hợp của team, không phải buổi giám sát của quản lý.
Gỡ blocker mà không tự biến mình thành điểm nghẽn - làm sao?
Có hai quy tắc. Một là blocker cũ hơn 24 giờ phải được escalate lên project lead. Hai là phản ứng của lead phải là 'ai có thể gỡ được' chứ không phải 'tôi sẽ tự fix'. Việc của lead là kết nối, không phải làm anh hùng. Chương stakeholder có chỉ rõ đường escalation; lead nên là tầng định tuyến, không phải người trực tiếp làm.
Nếu scope đổi giữa sprint thì sao?
Hãy dừng lại và quyết một cách có ý thức. Việc mới đi vào nghĩa là một việc cũ đi ra. Sprint goal chính là hợp đồng; nếu việc mới phá goal, hãy hoãn nó sang sprint kế. Nếu việc mới sẽ thay luôn goal, hãy huỷ sprint hiện tại và re-plan. Chèn việc một cách im lặng vào giữa sprint là nguyên nhân phổ biến nhất khiến velocity bị suy giảm.
Khi nào nên tạm bỏ sprint và chuyển sang Kanban?
Khi hình dạng công việc thật sự đã đổi - ví dụ một sự cố chiếm hết thời gian, hoặc một spike khám phá thay cho việc làm tính năng. Hãy pause Scrum, chạy Kanban một hai sprint, rồi resume khi team quay lại được công việc theo plan. Chương chọn phương pháp có nói khi nào nên chuyển. Đừng xin lỗi vì chuyển; chỉ cần nói rõ ra.