Menu
ESC

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

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

Đang tải...

Bài 37 — Backlog Refinement & Definition of Ready

Chương Trình Chứng Chỉ Business Analyst Hoàn Chỉnh Bài 37/60

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

Hãy tưởng tượng một buổi Sprint Planning sáng thứ Hai. Team đã ngồi vào phòng họp, cà phê đã rót, nhưng nửa số story trong backlog vẫn còn là những dòng mơ hồ kiểu "Làm chức năng thanh toán" mà không ai rõ là thanh toán bằng phương thức gì, có hoàn tiền không, xử lý lỗi mạng ra sao. Kết quả là buổi planning kéo dài ba tiếng, dev hỏi tới hỏi lui, BA phải gọi điện cho stakeholder ngay giữa cuộc họp, và cuối cùng team commit một cách miễn cưỡng những thứ họ chưa thực sự hiểu. Đến giữa sprint, story bị "stuck" vì thiếu thông tin, velocity tụt, và mọi người đổ lỗi cho nhau.

Đó chính xác là cái giá phải trả khi bỏ qua Backlog Refinement (còn gọi là Grooming) và không có Definition of Ready (DoR). Đây là hai cơ chế phòng ngừa mạnh nhất mà một BA trong môi trường Agile có trong tay để biến những ý tưởng thô (raw idea) thành những story sẵn sàng để team thực thi một cách tự tin.

Trong bài này, chúng ta sẽ đào sâu vào nghệ thuật làm cho backlog luôn "sẵn sàng" trước khi sprint bắt đầu. Đây không phải là một sự kiện hành chính, mà là một kỷ luật liên tục quyết định trực tiếp đến chất lượng của mọi sprint phía sau. Một BA giỏi không phải là người viết được nhiều story, mà là người đảm bảo story nào vào sprint cũng đã "chín".

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

Backlog Refinement là gì

Backlog Refinement là hoạt động liên tục mà Product Owner cùng team (trong đó BA thường đóng vai trò trung tâm về mặt phân tích) cùng nhau xem xét, làm rõ, ước lượng và sắp xếp lại các Product Backlog Item (PBI). Mục tiêu cuối cùng rất rõ ràng: biến raw idea thành refined story sẵn sàng vào sprint.

Theo Scrum Guide, Refinement không phải là một sự kiện chính thức (official event) như Sprint Planning hay Daily Scrum, mà là một hoạt động diễn ra xuyên suốt. Tuy nhiên trong thực tế, hầu hết team đều dành một buổi cố định mỗi tuần (thường 1–2 tiếng, tức khoảng 5–10% capacity của team) để làm việc này một cách có tổ chức.

Nguyên tắc vàng cần nhớ: luôn refine trước 2–3 sprint. Nghĩa là khi đang chạy Sprint 5, backlog cho Sprint 6 và Sprint 7 đã phải được làm rõ kha khá. Tại sao? Vì refinement cần thời gian để stakeholder phản hồi, để team đặt câu hỏi, để BA đi tìm câu trả lời. Nếu bạn chỉ refine ngay trước Sprint Planning thì bạn đã thua ngay từ đầu — không kịp giải quyết các điểm mù.

Trong một buổi Refinement, chúng ta làm gì

Một buổi refinement điển hình bao gồm các hoạt động sau, và BA thường là người dẫn dắt phần lớn:

  • Làm rõ (clarify): Diễn giải story sao cho mọi người hiểu giống nhau. BA bổ sung mô tả, business rule, mockup, dữ liệu mẫu.
  • Bổ sung Acceptance Criteria (AC): Viết hoặc hoàn thiện tiêu chí chấp nhận — phần này sẽ nói kỹ ở Bài về DoR.
  • Tách story (split): Một story quá lớn (epic-level) được tách thành các story nhỏ vừa với một sprint.
  • Ước lượng (estimate): Team gán Story Point bằng Planning Poker hoặc kỹ thuật tương tự.
  • Xác định dependency: Story này có phụ thuộc API của team khác, vào quyết định pháp lý, vào dữ liệu nào không.
  • Sắp xếp lại thứ tự (re-prioritize): PO điều chỉnh thứ tự ưu tiên dựa trên thông tin mới.

Definition of Ready (DoR) là gì

Nếu Refinement là quá trình, thì Definition of Ready là tiêu chuẩn đầu ra của quá trình đó. DoR là một danh sách (checklist) các điều kiện mà một story BẮT BUỘC phải thỏa mãn trước khi nó được phép kéo (pull) vào sprint.

Hãy hiểu nó như một "cửa chất lượng" (quality gate) ở đầu vào của sprint. Nguyên tắc cốt lõi: Story chỉ được pull vào sprint khi đã đạt DoR. Nếu chưa đạt, nó phải quay lại refinement.

Một DoR phổ biến cho team có BA thường gồm các tiêu chí dạng INVEST mở rộng:

  • Story được viết theo định dạng chuẩn (As a... I want... so that...).
  • Acceptance Criteria rõ ràng, đo lường được (thường viết theo Given-When-Then).
  • Đã được ước lượng (có Story Point).
  • Đủ nhỏ để hoàn thành trong một sprint.
  • Không còn dependency chặn (hoặc dependency đã được lên kế hoạch xử lý).
  • mockup/wireframe nếu là story liên quan UI.
  • Các business rule và edge case đã được làm rõ.
  • Team đã hiểu và không còn câu hỏi lớn nào.
Lưu ý quan trọng: DoR khác với Definition of Done (DoD). DoR là điều kiện ở đầu vào sprint (story đủ tốt để bắt đầu làm chưa); DoD là điều kiện ở đầu ra (story đã thực sự hoàn thành chưa). Đừng nhầm lẫn hai khái niệm này — đây là câu hỏi rất hay gặp trong phỏng vấn BA Agile.

DoR là thỏa thuận, không phải luật áp đặt

Một điểm tinh tế mà BA mới hay bỏ qua: DoR phải là thỏa thuận của cả team, được viết ra và đồng thuận, chứ không phải một bộ luật do BA hay PO áp đặt. Khi cả team cùng tạo ra DoR, họ sẽ tự giác tuân thủ. Và DoR cũng cần được điều chỉnh linh hoạt — một DoR quá khắt khe sẽ làm backlog tắc nghẽn, không có story nào "đủ chuẩn" để vào sprint.

Tình huống thực tế

Tình huống 1 — Sàn TMĐĐ Tiki: cái giá của việc không refine trước

Một team phát triển tính năng "Đổi trả hàng" tại một sàn thương mại điện tử lớn ở Việt Nam (giả định mô phỏng bối cảnh Tiki). Trong giai đoạn đầu, team không có buổi refinement riêng — họ refine ngay trong Sprint Planning. Story "Cho phép khách hàng yêu cầu đổi trả" được kéo vào Sprint 12 với mô tả vỏn vẹn hai dòng.

Đến ngày thứ ba của sprint, dev mới phát hiện: hàng FMCG (đồ tươi) không được đổi trả, hàng điện tử có chính sách 7 ngày, hàng từ seller bên thứ ba lại theo chính sách riêng. Không story nào đề cập những điều này. Dev phải dừng lại chờ BA xác nhận với bộ phận vận hành, mất 4 ngày. Story không hoàn thành, velocity sprint đó tụt 30%.

Sau retrospective, team thiết lập một buổi refinement cố định 90 phút mỗi thứ Tư, refine trước 2 sprint, và xây DoR yêu cầu mọi story đổi trả phải liệt kê đầy đủ ma trận chính sách theo loại hàng. Sprint tiếp theo, các story tương tự được hoàn thành đúng hạn.

Bài học: Phần lớn các story "stuck giữa sprint" không phải do dev yếu, mà do story chưa được làm chín. Refinement trước 2–3 sprint giúp bạn phát hiện những điểm mù khi còn dư thời gian xử lý.

Tình huống 2 — Ví điện tử MoMo: DoR cứu sprint khỏi rủi ro pháp lý

Một team tại một công ty fintech ví điện tử (mô phỏng bối cảnh MoMo) xây tính năng "Nạp tiền từ thẻ tín dụng quốc tế". Trong buổi refinement, khi rà soát theo DoR, một tiêu chí bắt buộc là: "Mọi story liên quan đến luồng tiền phải được xác nhận đã tuân thủ quy định của Ngân hàng Nhà nước và có review từ bộ phận Compliance."

Khi áp tiêu chí này, BA phát hiện luồng nạp tiền từ thẻ quốc tế còn vướng quy định về hạn mức ngoại tệ và yêu cầu eKYC nâng cao. Story chưa đạt DoR vì còn dependency vào quyết định của Compliance. Nhờ vậy, story KHÔNG được kéo vào sprint — và team tránh được việc viết code cho một luồng có thể bị yêu cầu sửa lại toàn bộ sau khi pháp lý vào cuộc.

Nếu không có dòng DoR đó, team có thể đã build xong tính năng trong một sprint, rồi phải đập đi làm lại — lãng phí 8 story point và đẩy lùi roadmap nửa tháng.

Bài học: DoR không chỉ kiểm tra story "đủ rõ chưa", mà còn là tấm khiên chắn rủi ro. Với các ngành regulated (ngân hàng, bảo hiểm, fintech), một tiêu chí DoR về tuân thủ pháp lý có giá trị bằng vàng.

Tình huống 3 — Startup giao đồ ăn: DoR quá khắt khe gây tắc nghẽn

Một startup giao đồ ăn ở TP.HCM (đội ngũ khoảng 8 người) học theo "best practice" và dựng một DoR rất chi tiết với 14 tiêu chí, trong đó yêu cầu mọi story phải có wireframe Figma hoàn chỉnh, có test case viết sẵn, và phải được PO ký duyệt bằng văn bản.

Kết quả ngược đời: sau ba tuần, backlog của họ gần như cạn story "Ready". Designer không kịp làm wireframe cho mọi story nhỏ, PO bận gọi vốn nên không kịp duyệt. Sprint Planning thiếu story, dev phải lấy đại những việc chưa thực sự ưu tiên ra làm cho đủ.

Họ phải họp lại và "nới" DoR: chỉ story liên quan UI mới cần wireframe, bỏ yêu cầu ký duyệt văn bản (thay bằng PO xác nhận miệng trong refinement), và test case chỉ cần ý tưởng chính chứ không cần viết đầy đủ trước. Backlog "thở" được trở lại.

Bài học: DoR là công cụ, không phải mục tiêu. Một DoR phù hợp với team 8 người khác hẳn DoR của một dự án ngân hàng 50 người. Hãy bắt đầu nhẹ và siết dần khi cần, đừng làm ngược lại.

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

Dưới đây là quy trình thực hành để bạn vận hành refinement và DoR một cách bài bản.

Bước 1 — Chuẩn bị trước buổi refinement. Trước buổi họp 1–2 ngày, với vai trò BA, hãy duyệt qua backlog và chọn ra các story cho 2–3 sprint tới. Tự mình làm rõ tối đa có thể: viết mô tả, phác AC nháp, đánh dấu các câu hỏi cần team thảo luận. Đừng để buổi họp trở thành nơi bạn đọc story lần đầu — như vậy rất phí thời gian của cả team.

Bước 2 — Đặt agenda và giới hạn thời gian. Chỉ mang vào buổi họp số story vừa đủ (thường 5–8 story cho buổi 90 phút). Gán timebox cho mỗi story, ví dụ 10 phút. Khi một story tốn quá nhiều thời gian tranh luận, đó là tín hiệu nó cần BA điều tra thêm ngoài buổi họp — đừng cố giải quyết tại chỗ.

Bước 3 — Làm rõ và đặt câu hỏi. Với mỗi story, đọc to, để team đặt câu hỏi. Kỹ thuật hữu ích là dùng "3 Amigos" (BA/PO, Developer, Tester) cùng nhìn story từ ba góc độ: nghiệp vụ, kỹ thuật, và chất lượng. Tester thường là người phát hiện edge case mà BA bỏ sót.

Bước 4 — Tách story khi cần. Nếu story ước lượng quá lớn (ví dụ vượt 8 hoặc 13 point tùy thang của team), hãy tách. Các pattern tách phổ biến: theo bước nghiệp vụ (workflow steps), theo loại dữ liệu, theo happy-path vs edge-case, theo CRUD. (Kỹ thuật split story chi tiết được học sâu hơn ở bài về User Stories.)

Bước 5 — Ước lượng. Dùng Planning Poker để team gán Story Point. Sự bất đồng lớn về điểm số (một người ra 2, người khác ra 13) chính là dấu hiệu story chưa được hiểu thống nhất — hãy quay lại Bước 3.

Bước 6 — Kiểm tra theo DoR. Đối chiếu story với checklist DoR. Nếu đạt hết, đánh dấu "Ready" (thường là một label hoặc cột riêng trên Jira). Nếu chưa, ghi rõ còn thiếu gì, ai chịu trách nhiệm bổ sung, hạn chót khi nào.

Bước 7 — Cập nhật và theo dõi. Sau buổi họp, cập nhật backlog trên công cụ. BA chủ động đi giải quyết các "câu hỏi treo" với stakeholder trước buổi refinement kế tiếp, đảm bảo luôn có đủ story "Ready" cho 1–2 sprint phía trước.

Một DoR mẫu bạn có thể bắt đầu (rồi tùy biến theo team):

Definition of Ready — Story chỉ vào sprint khi:
[ ] Viết theo định dạng User Story chuẩn
[ ] Có Acceptance Criteria rõ ràng (Given-When-Then)
[ ] Đã được team ước lượng (có Story Point)
[ ] Đủ nhỏ để hoàn thành trong 1 sprint
[ ] Không còn dependency chặn
[ ] Có mockup/wireframe (nếu liên quan UI)
[ ] Business rule và edge case đã được làm rõ
[ ] Team không còn câu hỏi lớn nào

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

Lỗi 1 — Biến refinement thành buổi viết story từ đầu. Nếu BA mang story trắng vào họp rồi cả team ngồi nghĩ, đó là lãng phí capacity của dev. Mẹo: BA luôn chuẩn bị bản nháp trước, buổi họp chỉ để hoàn thiện và đồng thuận.

Lỗi 2 — Refine quá gần sprint. Chỉ refine cho sprint ngay sau khiến bạn không có thời gian xử lý các điểm mù. Mẹo: duy trì "đường ống" refinement luôn đi trước 2–3 sprint.

Lỗi 3 — DoR quá khắt khe hoặc quá lỏng. Quá khắt khe gây tắc backlog (như startup giao đồ ăn ở trên); quá lỏng thì story rỗng vẫn lọt vào sprint. Mẹo: bắt đầu với 5–6 tiêu chí cốt lõi, điều chỉnh sau mỗi vài sprint dựa trên retrospective.

Lỗi 4 — Coi DoR và DoD là một. Nhiều BA mới nhầm lẫn. Nhớ: DoR ở đầu vào (sẵn sàng để bắt đầu), DoD ở đầu ra (đã thực sự xong).

Lỗi 5 — DoR do một người áp đặt. Nếu team không đồng thuận, họ sẽ tìm cách lách. Mẹo: cùng nhau viết DoR trong một buổi workshop, dán nó công khai (trên tường hoặc trang Confluence), và review định kỳ.

Lỗi 6 — Không ai sở hữu việc giải quyết "câu hỏi treo". Sau refinement còn nhiều thứ chưa rõ là bình thường, nhưng nếu không ai đi tìm câu trả lời thì story sẽ mãi không "Ready". Mẹo: mỗi mục còn thiếu phải có người chịu trách nhiệm và deadline cụ thể.

Mẹo nâng cao — Đo lường sức khỏe backlog. Theo dõi chỉ số "Ready backlog runway": bạn đang có bao nhiêu sprint story đã Ready? Nếu dưới 1 sprint, đó là cảnh báo đỏ — refinement đang chậm hơn tốc độ tiêu thụ của team.

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

  • Viết DoR cho team của bạn. Giả định bạn là BA của một team 6 người làm app đặt vé xem phim. Hãy soạn một Definition of Ready gồm 6–8 tiêu chí phù hợp. Giải thích vì sao bạn chọn (hoặc loại bỏ) tiêu chí "phải có wireframe".
  • Refine một raw idea. Cho raw idea: "Khách hàng muốn lưu phương thức thanh toán để lần sau không phải nhập lại." Hãy biến nó thành một story đạt DoR: viết theo định dạng chuẩn, thêm ít nhất 4 Acceptance Criteria (gồm cả edge case như thẻ hết hạn, xóa thẻ), và liệt kê các dependency có thể có.
  • Phát hiện story chưa Ready. Cho story: "Là người dùng, tôi muốn nhận thông báo khuyến mãi." Hãy chỉ ra ít nhất 5 câu hỏi bạn sẽ đặt trong buổi refinement để story này đạt DoR (gợi ý: kênh thông báo nào, tần suất, opt-out, ngôn ngữ, nội dung do ai duyệt).
  • Mô phỏng tách story. Lấy epic "Quản lý tài khoản người dùng" và tách thành ít nhất 4 story đủ nhỏ để mỗi story vừa với một sprint. Ghi rõ tiêu chí bạn dùng để tách.

Tóm tắt

Backlog Refinement là hoạt động liên tục biến raw idea thành refined story sẵn sàng vào sprint, và nguyên tắc vàng là luôn refine trước 2–3 sprint để có thời gian xử lý điểm mù. Definition of Ready là tiêu chuẩn đầu ra của quá trình đó — một checklist quyết định story nào đủ điều kiện được kéo vào sprint, hoạt động như một quality gate ở đầu vào.

Ba điều cốt lõi cần khắc ghi: thứ nhất, DoR khác DoD (đầu vào vs đầu ra) — đừng nhầm lẫn. Thứ hai, DoR phải là thỏa thuận của cả team và đủ linh hoạt, không quá khắt khe khiến backlog tắc nghẽn cũng không quá lỏng khiến story rỗng lọt qua. Thứ ba, BA là người chủ động giữ cho "đường ống" refinement luôn đi trước, đảm bảo mỗi Sprint Planning đều có sẵn story đã chín.

Khi bạn làm tốt hai việc này, mỗi sprint sẽ bắt đầu một cách bình tĩnh và tự tin — không còn những buổi planning ba tiếng đầy câu hỏi, không còn story stuck giữa sprint. Đó là dấu hiệu của một BA thực sự làm chủ vai trò của mình trong môi trường Agile.