Menu
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Đang tải...

Bài 39 — Anti-patterns trong Scrum

Kiến Thức Cơ Bản Scrum Product Owner Bài 39/60

Mở đầu — vì sao bài này quan trọng

Nếu bạn đã đi qua gần 40 bài học, hẳn bạn đã nắm khá vững "Scrum nên trông như thế nào": vai trò rõ ràng, các sự kiện (event) có mục đích, các artifact minh bạch. Nhưng có một sự thật phũ phàng mà ít ai nói thẳng với học viên: đa số tổ chức không làm Scrum sai vì không biết lý thuyết — họ làm sai vì đã trượt vào những thói quen xấu mà không hề nhận ra. Những thói quen đó được gọi là anti-patterns.

Anti-pattern là những "giải pháp" trông có vẻ hợp lý, thậm chí phổ biến, nhưng thực chất lại tạo ra nhiều vấn đề hơn là giải quyết. Chúng nguy hiểm hơn lỗi rõ ràng, bởi vì chúng thường được ngụy trang dưới dạng "chúng tôi vẫn họp Daily Scrum đều mà", "team vẫn có sprint mà", "vẫn có Product Owner mà". Mọi nghi thức (ceremony) vẫn diễn ra, nhưng tinh thần Agile đã chết từ lâu.

Là một Product Owner (PO), bạn đứng ở vị trí dễ tổn thương nhất trước anti-patterns, vì bạn là cầu nối giữa business và team phát triển. Khi tổ chức vận hành lệch chuẩn, PO thường là người đầu tiên bị "biến dạng" vai trò. Bài học này giúp bạn nhận diện các anti-patterns phổ biến nhất, hiểu vì sao chúng hình thành, và quan trọng nhất là biết cách gọi tên và bắt đầu khắc phục. Nhận diện được bệnh đã là một nửa của việc chữa bệnh.

Khái niệm cốt lõi

Anti-pattern là gì và khác gì với "lỗi"?

Một lỗi (bug) là khi bạn làm sai một bước cụ thể. Một anti-pattern là một khuôn mẫu hành vi lặp đi lặp lại, được nhiều người chấp nhận như chuyện bình thường, nhưng dẫn đến kết quả xấu một cách có hệ thống. Đặc điểm nhận dạng của anti-pattern:

  • trông giống thực hành đúng (vẫn có sprint, vẫn có họp).
  • Nó được biện minh bằng lý do nghe hợp lý ("để kiểm soát tốt hơn", "cho nhanh").
  • Hậu quả của nó đến chậm và gián tiếp, nên khó truy ngược nguyên nhân.
Để dễ nhớ, ta chia anti-patterns theo nhóm: anti-patterns về vai trò (role), về sự kiện (event), và về artifact.

Nhóm 1 — Anti-patterns về vai trò

Đây là nhóm nguy hiểm nhất với PO. Ba biến thể thường gặp:

Proxy Product Owner (PO bù nhìn). Đây là tình huống bạn được trao danh xưng PO nhưng không có quyền quyết định thực sự. Bạn chỉ là người chuyển tiếp yêu cầu: sếp hoặc một "ông trùm" giấu mặt nào đó mới là người ra quyết định cuối cùng về backlog, về ưu tiên, về phạm vi. Hậu quả: team hỏi bạn "cái này ưu tiên hơn cái kia không?" và bạn phải trả lời "để tôi hỏi lại đã". Mỗi câu hỏi trở thành một vòng lặp chờ đợi nhiều ngày. Team bị block, niềm tin vào PO sụt giảm, và quyết định bị tách rời khỏi ngữ cảnh thực thi. Đây chính là anti-pattern mà ghi chú gốc của bài đề cập, và nó đáng được đặt lên hàng đầu.

PO vắng mặt (Absent PO). PO quá bận, ôm 4-5 team cùng lúc, không tham gia refinement, không trả lời câu hỏi kịp thời. Team buộc phải tự "đoán" yêu cầu, dẫn đến làm sai và phải làm lại.

PO độc tài / Micromanaging PO. Ngược lại với hai cái trên: PO ôm luôn cả việc của Developers, quyết định cả cách làm (how) chứ không chỉ cái gìvì sao (what & why). Điều này giết chết tính tự quản (self-management) của team.

Nhóm 2 — Anti-patterns về sự kiện

Daily Scrum biến thành báo cáo cho sếp. Thay vì là cuộc họp của Developers để đồng bộ tiến độ hướng tới Sprint Goal, nó trở thành buổi "trình diện" trước Scrum Master hoặc manager. Mọi người nói với sếp thay vì nói với nhau.

Sprint Planning kiểu giao việc. Manager hoặc PO áp khối lượng công việc xuống thay vì để team tự cam kết dựa trên năng lực (capacity). Đây là dấu hiệu của "scrum-fall" — vỏ Scrum, ruột waterfall.

Retrospective vô hồn. Họp cho có, nêu vấn đề năm này qua năm khác mà không có action item nào được thực hiện. Team mất niềm tin rằng cải tiến là có thật.

Nhóm 3 — Anti-patterns về artifact

Backlog là một bãi rác (dumping ground). Hàng trăm item không bao giờ được dọn, không ưu tiên, không xóa. Backlog trở thành nơi để quên chứ không phải công cụ ra quyết định.

Definition of Done linh hoạt tùy hứng. "Lần này coi như xong dù chưa test, sprint sau làm nốt." DoD bị nới lỏng để báo cáo đẹp, tạo ra nợ kỹ thuật (technical debt) tích lũy.

Velocity bị dùng làm KPI. Khi velocity trở thành thước đo để đánh giá/so sánh team, team sẽ lập tức "thổi phồng" story point (point inflation) và mọi con số mất ý nghĩa.

Tình huống thực tế

Tình huống 1 — Proxy PO tại một fintech ở TP.HCM

Một công ty fintech tại Quận 1, TP.HCM (gọi là "PayViet") có một sản phẩm ví điện tử. Họ tuyển một bạn tên Linh làm Product Owner cho team 7 người. Trên giấy tờ, Linh là PO. Nhưng thực tế, mọi quyết định ưu tiên đều do anh Tâm — Giám đốc Kinh doanh — quyết. Linh chỉ ghi lại yêu cầu của anh Tâm vào Jira rồi đọc lại cho team.

Vấn đề bùng nổ ở Sprint thứ 5. Team đang làm tính năng "rút tiền về ngân hàng", thì giữa sprint anh Tâm yêu cầu chuyển sang làm "tích điểm thưởng" vì có một đối tác lớn vừa ký hợp đồng. Developers hỏi Linh: "Tính năng rút tiền đang dở dang 70%, bỏ ngang có chắc không chị?" Linh không dám trả lời, phải nhắn tin chờ anh Tâm — người đang đi công tác — suốt hai ngày. Team đứng hình, velocity sprint đó rớt 40%.

Diễn giải: Vì quyền quyết định nằm ngoài tầm với của Linh, mọi thay đổi đều tạo ra độ trễ và sự hỗn loạn. Tệ hơn, người ra quyết định (anh Tâm) lại không thấy được hệ quả kỹ thuật của việc đổi hướng giữa sprint, vì anh không ngồi cùng team.

Bài học: Một PO thực thụ cần được trao quyền quyết định trong phạm vi sản phẩm. Giải pháp ở PayViet về sau là: anh Tâm vẫn đặt mục tiêu chiến lược (strategy), nhưng ủy quyền cho Linh ra quyết định chiến thuật về backlog. Trước mỗi Sprint Planning, hai người thống nhất Sprint Goal trong 30 phút; trong sprint, Linh toàn quyền. Sau ba sprint, độ trễ quyết định giảm từ vài ngày xuống còn vài giờ.

Tình huống 2 — Velocity trở thành vũ khí tại một công ty outsourcing ở Hà Nội

Một công ty gia công phần mềm ở Cầu Giấy, Hà Nội (gọi là "TechBridge") có ba team Scrum làm cho khách hàng Nhật. Vị giám đốc sản xuất muốn "đo hiệu suất khách quan", nên ông treo bảng so sánh velocity ba team lên màn hình ở văn phòng, mỗi sprint cập nhật một lần. Team nào velocity cao được khen, team nào thấp bị nhắc nhở.

Chỉ sau hai tháng, chuyện kỳ lạ xảy ra: cả ba team đều có velocity "tăng trưởng đẹp như mơ", nhưng số bug khách hàng báo về lại tăng vọt, và tính năng giao chậm hơn. Hóa ra các team đã ngầm điều chỉnh: một story trước đây ước lượng 3 điểm giờ thành 5 điểm. Con số đẹp lên nhưng giá trị thực không đổi — thậm chí giảm vì team cắt bớt việc test để "chạy số".

Diễn giải: Đây là minh họa kinh điển cho định luật Goodhart: "Khi một thước đo trở thành mục tiêu, nó không còn là thước đo tốt nữa." Velocity vốn là công cụ dự báo nội bộ của một team, không phải KPI để so sánh giữa các team — vì mỗi team định nghĩa story point theo thang riêng.

Bài học: PO và Scrum Master cần bảo vệ velocity khỏi bị "vũ khí hóa". Ở TechBridge, sau khi nhận ra, họ gỡ bảng so sánh, chuyển sang đo các chỉ số hướng kết quả như số tính năng đến tay người dùng và mức độ hài lòng của khách hàng Nhật. Velocity quay về đúng vai trò công cụ planning nội bộ.

Tình huống 3 — Daily Scrum thành phiên báo cáo tại một startup e-commerce

Một startup thương mại điện tử ở Đà Nẵng có team 6 người. Vị Trưởng phòng Kỹ thuật (cũng kiêm vai trò gần giống manager) tham gia Daily Scrum mỗi sáng và ngồi ở đầu bàn. Dần dần, buổi standup biến thành nghi thức: mỗi developer lần lượt quay sang sếp đọc "hôm qua em làm gì, hôm nay em làm gì", giọng như đang trình bày để được duyệt. Không ai nói chuyện với nhau, không ai nêu khó khăn thật vì sợ bị đánh giá là yếu.

Kết quả: một bạn dev bị kẹt một vấn đề tích hợp cổng thanh toán suốt bốn ngày mà không dám nói, vì trong standup chỉ toàn báo cáo "mọi thứ ổn". Đến Sprint Review thì lộ ra, cả Sprint Goal đổ bể.

Diễn giải: Daily Scrum là cuộc họp của Developers, cho Developers, để họ tự đồng bộ và lên kế hoạch 24 giờ tới hướng về Sprint Goal. Khi nó biến thành báo cáo cho sếp, yếu tố tâm lý an toàn (psychological safety) bị phá hủy, và mục đích phơi bày impediment sớm cũng mất theo.

Bài học: Giải pháp là vị sếp thôi không tham dự với tư cách người được báo cáo. Anh chỉ vào nghe khi được mời, đứng quan sát chứ không "chủ trì". Scrum Master nhắc team hướng phát biểu về phía nhau. Sau hai tuần, một bạn dev đã chủ động nêu blocker ngay trong standup, và được đồng đội hỗ trợ giải quyết trong buổi sáng.

Hướng dẫn từng bước

Khi nghi ngờ team mình đang mắc anti-pattern, hãy đi theo quy trình sau:

Bước 1 — Quan sát triệu chứng, đừng vội kết luận. Anti-pattern lộ ra qua "mùi" (smell): quyết định bị trì hoãn, team hay nói "để hỏi lại sếp", retrospective không có action, backlog phình to mãi. Ghi lại 2-3 triệu chứng cụ thể kèm ví dụ thật.

Bước 2 — Truy về nguyên nhân gốc. Dùng kỹ thuật "5 Whys" (hỏi "tại sao" liên tiếp 5 lần). Ví dụ: "Tại sao team bị block? — Vì chờ quyết định. — Tại sao chờ? — Vì PO không có quyền. — Tại sao PO không có quyền? — Vì cấp trên chưa ủy quyền..." Cứ thế cho đến gốc rễ thật sự, thường là vấn đề về quyền lực, niềm tin, hoặc cấu trúc tổ chức.

Bước 3 — Gọi tên anti-pattern một cách trung lập. Đưa nó ra Retrospective. Dùng ngôn ngữ phi đổ lỗi: "Em quan sát thấy tuần qua có 3 quyết định bị trễ trung bình 2 ngày" thay vì "Anh Tâm cứ ôm hết quyền". Mô tả hành vi và dữ liệu, không công kích con người.

Bước 4 — Đề xuất một thử nghiệm nhỏ. Đừng đòi cải tổ toàn bộ. Hãy thử một thay đổi nhỏ trong một sprint: "Sprint tới, hãy thử cho PO toàn quyền quyết định trong phạm vi Sprint Goal đã thống nhất, xem độ trễ có giảm không."

Bước 5 — Đo lường và lặp lại. Sau sprint, nhìn lại dữ liệu. Có cải thiện thì giữ và mở rộng; không thì điều chỉnh. Anti-pattern hiếm khi biến mất sau một lần — đây là quá trình cải tiến liên tục.

Lỗi thường gặp & mẹo

Lỗi 1: Tưởng "làm đủ ceremony" nghĩa là làm đúng Scrum. Vẫn họp đủ, vẫn có sprint, nhưng tinh thần đã chết. Mẹo: Sau mỗi sự kiện, tự hỏi "Sự kiện này có đạt được mục đích của nó không?" — chứ không phải "Mình có tổ chức nó không?".

Lỗi 2: Đổ lỗi cho cá nhân thay vì hệ thống. Proxy PO không phải vì Linh kém, mà vì tổ chức không trao quyền. Mẹo: Khi gặp anti-pattern, luôn hỏi "Cấu trúc nào khiến hành vi này trở nên hợp lý?" Sửa hệ thống, đừng trách người.

Lỗi 3: Cố diệt mọi anti-pattern cùng lúc. Bạn sẽ kiệt sức và gây phản kháng. Mẹo: Mỗi sprint chọn một anti-pattern gây đau nhất để giải quyết.

Lỗi 4: PO ngại đối thoại về quyền lực với cấp trên. Đây là gốc của Proxy PO. Mẹo: Đừng đòi "quyền" một cách trừu tượng. Hãy dùng dữ liệu chi phí: "Hai tuần qua việc chờ quyết định khiến team mất 16 giờ làm việc." Lãnh đạo phản ứng với con số nhanh hơn với cảm xúc.

Lỗi 5: Nhầm tự quản với vô tổ chức. Khi gỡ bỏ micromanagement, đừng buông luôn cả định hướng. Mẹo: PO vẫn giữ chặt whatwhy (Sprint Goal, ưu tiên), chỉ trả lại how cho Developers.

Bài tập thực hành

  • Tự kiểm anti-pattern (audit). Lập danh sách 12 anti-pattern trong bài (3 vai trò, 3 sự kiện, 3 artifact và các biến thể). Với team hiện tại của bạn — hoặc một team bạn từng làm — chấm mỗi mục theo thang 0–3 (0 = không có, 3 = nghiêm trọng). Khoanh tròn mục điểm cao nhất.
  • Thực hành 5 Whys. Lấy anti-pattern điểm cao nhất ở bài 1, viết ra chuỗi 5 câu hỏi "tại sao" để truy về nguyên nhân gốc. Viết ra nguyên nhân gốc cuối cùng bằng một câu.
  • Soạn kịch bản đối thoại. Giả sử bạn là Linh trong Tình huống 1. Hãy viết một đoạn hội thoại 5–7 câu mà bạn sẽ nói với anh Tâm để xin được ủy quyền quyết định chiến thuật — nhớ dùng dữ liệu chi phí và ngôn ngữ phi đổ lỗi.
  • Thiết kế một thử nghiệm. Chọn một anti-pattern và viết ra: thử nghiệm nhỏ trong 1 sprint, chỉ số đo lường, và tiêu chí "thành công/thất bại" rõ ràng.

Tóm tắt

Anti-pattern không phải là lỗi vụng về của người mới — chúng là những thói quen trông hợp lý mà ngay cả tổ chức làm Scrum lâu năm cũng dễ mắc. Chúng tôi đã đi qua ba nhóm chính: anti-patterns về vai trò (nguy hiểm nhất với PO, đặc biệt là Proxy PO — người mang danh nhưng không có quyền), về sự kiện (Daily thành báo cáo, Planning thành giao việc, Retro vô hồn), và về artifact (backlog bãi rác, DoD tùy hứng, velocity bị dùng làm KPI).

Ba tình huống thực tế — fintech PayViet, công ty outsourcing TechBridge, startup e-commerce Đà Nẵng — cho thấy cùng một bài học: anti-pattern không sinh ra từ con người tồi, mà từ cấu trúc khiến hành vi xấu trở nên hợp lý. Vì vậy, cách khắc phục không phải là trách móc, mà là quan sát triệu chứng, truy nguyên nhân gốc bằng 5 Whys, gọi tên trung lập trong Retrospective, và thử nghiệm thay đổi nhỏ rồi đo lường.

Là một Product Owner, vũ khí lớn nhất của bạn trước anti-pattern là khả năng nhận diện và gọi tên chúng bằng dữ liệu, một cách bình tĩnh và không đổ lỗi. Khi bạn làm được điều đó, bạn không chỉ cứu một team khỏi rối loạn — bạn đang xây dựng văn hóa cải tiến liên tục, thứ tài sản quý giá nhất của bất kỳ tổ chức Agile nào.