Definition of Done(DoD)
Danh sách điều kiện mà mọi hạng mục phải thỏa mãn thì mới được coi là xong. Áp dụng cho tất cả item trong sản phẩm, và là cam kết đi kèm artifact Increment trong Scrum.
Định nghĩa
Câu hỏi kinh điển ở mọi buổi họp cuối sprint: "cái này xong chưa?" Dev bảo xong rồi, code đã push. QC bảo chưa, chưa test regression. BA bảo chưa, tài liệu chưa cập nhật. Ai cũng đúng theo tiêu chuẩn riêng của mình. Definition of Done sinh ra để dẹp cuộc tranh cãi đó bằng một danh sách viết sẵn, thống nhất một lần cho tất cả.
Trong Scrum Guide 2020, DoD là cam kết đi kèm artifact Increment. Item chưa đạt DoD thì không được coi là Increment, không được demo ở Sprint Review, và quay lại Product Backlog.
Chỉ cần một item lọt qua mà chưa đạt DoD, cả khái niệm "xong" trong team mất giá trị từ sprint đó trở đi.
Ai lập và lập ở mức nào
Nếu tổ chức đã có DoD chuẩn thì mọi Scrum Team phải tuân thủ tối thiểu mức đó. Team được phép siết chặt hơn, không được nới lỏng. Nếu tổ chức chưa có, Scrum Team tự lập DoD phù hợp với sản phẩm của mình.
DoD nên tiến hóa dần. Team mới hình thành mà đặt DoD gồm 15 mục với độ phủ unit test 90% thì chỉ dẫn tới việc cả team giả vờ. Bắt đầu bằng 5 đến 6 mục làm được thật, siết dần sau mỗi vài sprint.
Một DoD thật, dùng được
Của một team 7 người làm ứng dụng web quản lý bảo hiểm, sprint 2 tuần:
- Code đã được ít nhất một người khác review và merge vào nhánh develop.
- Unit test cho phần logic nghiệp vụ mới đã viết và chạy xanh trên CI.
- Toàn bộ acceptance criteria của story đã được QC kiểm và đạt.
- Không còn bug mức Critical hoặc High liên quan tới story.
- Đã chạy trên môi trường staging với dữ liệu gần giống thật.
- Kiểm tra được trên Chrome, Safari và trình duyệt điện thoại.
- Tài liệu API trên Confluence đã cập nhật nếu có thay đổi endpoint.
- Có ghi chú release cho phần thay đổi nhìn thấy được với người dùng.
Tám dòng, dán ngay cạnh bảng công việc. Không cần dài hơn.
Phân biệt DoD, DoR và Acceptance Criteria
Đây là bộ ba bị lẫn lộn nhiều nhất trong nghề.
| Tiêu chí | Definition of Ready | Acceptance Criteria | Definition of Done |
|---|---|---|---|
| Trả lời câu | Item đủ rõ để bắt tay làm chưa | Story này chạy đúng nghĩa là thế nào | Item đã đủ chất lượng để giao chưa |
| Phạm vi | Chung cho mọi item | Riêng từng story | Chung cho mọi item |
| Thời điểm dùng | Trước Sprint Planning | Khi viết story và khi test | Trước khi đóng item |
| Ai giữ | Scrum Team, thường PO chủ trì | BA hoặc PO viết, team góp ý | Cả Scrum Team, hoặc chuẩn tổ chức |
| Có trong Scrum Guide | Không | Không | Có |
Acceptance criteria trả lời "đúng chưa", DoD trả lời "đủ chưa". Một story có thể chạy đúng hết acceptance criteria nhưng vẫn chưa Done vì chưa ai review code và chưa lên staging.
Ví dụ thực tế
Đến kỳ release của một cổng thông tin nội bộ — công ty sản xuất, 870 nhân viên — cả 9 item của Sprint 5 đều đã được báo là xong từ hai tuần trước. Hoá ra 4 trong số đó mới chỉ chạy trên máy dev, chưa lên staging bao giờ.
Team mất trọn 6 ngày của sprint kế tiếp để dọn: sửa lỗi cấu hình môi trường, viết lại phần import dữ liệu, test lại từ đầu. Velocity của sprint 6 tụt từ 38 xuống 21 điểm, và không ai hiểu vì sao cho tới khi nhìn lại.
Sau đó team thêm hai dòng vào DoD: bắt buộc lên staging và bắt buộc có người thứ hai xác nhận. Sprint 7 chỉ báo xong 6 item, ít hơn hẳn về số lượng, nhưng đó là 6 item thật.
Lỗi hay gặp
- DoD nằm trong một trang Confluence từ hồi khởi động dự án. Dán nó lên chỗ team nhìn thấy mỗi ngày, hoặc ghim thẳng vào mô tả cột Done trên bảng.
- Nhét acceptance criteria của một story cụ thể vào DoD. DoD phải áp dụng được cho mọi item.
- DoD toàn tiêu chí không kiểm được: "code sạch", "hiệu năng tốt". Viết thành thứ đo được: thời gian phản hồi dưới 2 giây với 100 người dùng đồng thời.
- Cho nợ DoD vì gấp. Lần đầu thì hợp lý, lần thứ ba thì DoD chỉ còn là văn bản trang trí.
- Sản phẩm đã lên production mà DoD vẫn không có mục nào về bảo mật hay dữ liệu cá nhân. Với hệ thống xử lý thông tin khách hàng ở Việt Nam, đây là chỗ nên bổ sung sớm.
