Vì sao chủ đề quan trọng
Bốn phép kiểm tra trước đều làm trên giấy: ma trận CRUD, ma trận vai trò, đường không vui, truy vết. Chúng bắt được rất nhiều lỗ hổng, nhưng chúng có chung một điểm yếu: tất cả đều do nhóm bạn điền. Nếu nhóm hiểu sai một điều từ đầu, bốn ma trận sẽ cùng sai một cách rất nhất quán.
Phép kiểm tra thứ năm đưa người thật vào. Walkthrough là buổi họp trong đó mọi người cùng "đi bộ" qua những kịch bản thật, từ đầu tới cuối, từng bước một, trên màn hình phác thảo hoặc story map. Mỗi câu người thật nói ra hoặc xác nhận backlog, hoặc lộ ra một lỗ hổng.
Bài này nhận vào toàn bộ đầu ra của bài 2 tới bài 5: tệp kiểm tra đã điền, danh sách câu hỏi mở gom theo người, backlog đã truy vết. Đầu ra là đầu ra của cả khóa: một backlog đã được kiểm tra, truy vết được, có biên bản quyết định, và mỗi story trong đợt chạy thử học kỳ 2 đạt Definition of Ready.
Bức tranh lớn
Walkthrough khác buổi demo ở ba điểm. Demo cho người khác xem cái đã làm; walkthrough cùng nhau kiểm tra cái sắp làm. Demo đi đường vui; walkthrough cố tình rẽ vào đường không vui. Demo kết thúc bằng lời khen; walkthrough kết thúc bằng danh sách quyết định và câu hỏi mở có tên người chịu trách nhiệm.
Người tham dự cho Căng tin số: Chị Lan đại diện Phòng Quản trị – Đời sống, Anh Tuấn quản lý căng tin, Cô Hạnh bếp trưởng quầy cơm, hai lập trình viên sẽ xây hệ thống, và nhóm bạn dẫn dắt. Chọn giờ tránh giờ nấu và giờ trưa, ví dụ 14:00, vì Cô Hạnh nấu theo mẻ từ 10:30 và quầy bận tới 13:00.
flowchart TD
A[Đọc kịch bản bằng tên người thật] --> B[Đi tới bước tiếp theo]
B --> C[Người đóng vai nói mình làm gì]
C --> D{Khớp với story và tiêu chí?}
D -->|Khớp| E[Đánh dấu đã xác nhận]
D -->|Lệch| F{Quyết được ngay?}
F -->|Được| G[Ghi quyết định và người chốt]
F -->|Chưa| H[Ghi câu hỏi mở, người trả lời, hạn]
E --> I{Hết kịch bản?}
G --> I
H --> I
I -->|Chưa| B
I -->|Rồi| J[Kịch bản tiếp theo]Ví dụ chi tiết
Đây là chương trình 60 phút cho buổi walkthrough của Căng tin số. Mỗi kịch bản dùng persona thật từ ghi chép và cố tình đi qua ít nhất một nhánh không vui từ bài 4.
| Thời gian | Nội dung | Người dẫn | Kết quả cần có |
|---|---|---|---|
| Phút 0 tới 5 | Mục tiêu, luật chơi, nhắc rằng đây không phải demo | Nhóm bạn | Mọi người biết sẽ quyết định gì hôm nay |
| Phút 5 tới 17 | Kịch bản Minh Anh: thứ Hai, có lớp 12:45, đặt cơm, trả tiền, món hết | Nhóm bạn, Anh Tuấn đóng vai quầy | Chốt cách xử lý hết món sau khi trả |
| Phút 17 tới 27 | Kịch bản Thảo Vy: dùng suất hỗ trợ, hỏi đậu phộng, thử mua nước | Chị Lan | Xác nhận R4, cách quầy xác nhận kín đáo |
| Phút 27 tới 37 | Kịch bản Cô Hạnh: chốt đơn 10:00, mẻ 10:30, màn hình bếp, hết món lúc 12:30 | Cô Hạnh | Màn hình bếp hiện gì, ai đánh dấu hết món |
| Phút 37 tới 47 | Kịch bản Anh Tuấn: đơn quá hạn R3, duyệt hoàn tiền R6, đối soát cuối ngày, giảng viên đặt món | Anh Tuấn | Chính sách tiền cho đơn quá hạn, cách giảng viên đăng nhập |
| Phút 47 tới 55 | Rà các câu hỏi mở còn lại từ bốn ma trận | Nhóm bạn | Mỗi câu có quyết định hoặc người trả lời và hạn |
| Phút 55 tới 60 | Đọc lại biên bản, xác nhận phạm vi chạy thử | Chị Lan | Mọi người đồng ý cùng một danh sách |
Nhóm bạn đọc: "Thứ Hai, 9 giờ 40. Minh Anh có lớp 12:45. Bạn ấy mở app, chọn cơm phần với hai món mặn và một rau, khung nhận 11:35." Lập trình viên hỏi: "Nếu chọn món mặn thứ ba thì giá tự cộng 10.000đ theo R1, đúng không?" Cô Hạnh xác nhận. Đã khớp.
"Minh Anh trả bằng chuyển khoản." Anh Tuấn hỏi: "Tiền chưa về thì đơn có vào danh sách nấu không?" Đây là tình huống chuyển khoản treo ở bài 4. Nếu nhóm đã ghi nó là câu hỏi mở cho Anh Tuấn, đây là lúc chốt. Ghi quyết định và tên anh vào biên bản.
"11:35, Minh Anh tới quầy. Món mặn đã chọn hết." Đây là câu Minh Anh từng lo: "lỡ ra tới nơi hết món thì sao." Hãy dừng lại và hỏi cả phòng. Rất có thể Cô Hạnh và Anh Tuấn trả lời khác nhau: một người cho rằng phần đặt trước đã được để riêng nên không thể hết, người kia nhớ những hôm mẻ nấu ra ít hơn dự tính. Đây là chỗ walkthrough đáng giá nhất: hai người hiểu nghiệp vụ nhất có thể không đồng ý với nhau, và nhóm bạn được nghe điều đó trước khi có dòng code nào. Kết quả có thể là một quyết định ("quầy được đổi món cùng giá không cần duyệt, hoàn tiền vẫn theo R6") hoặc một câu hỏi mở có hạn trả lời.
Mọi thứ được ghi vào biên bản theo một khuôn cố định:
Mã / Loại / Nội dung / Người chốt hoặc người trả lời / Hạn / Story bị ảnh hưởng
QD-01 / Quyết định / Đơn chuyển khoản treo chưa vào danh sách nấu / Anh Tuấn / Đã chốt / Thanh toán, Màn hình bếp
QD-02 / Quyết định / Quầy được đổi món cùng giá khi hết món đã trả / Anh Tuấn / Đã chốt / Nhận món
CH-01 / Câu hỏi mở / Tiền của đơn quá hạn theo R3 xử lý thế nào / Anh Tuấn và Chị Lan / Thứ Sáu / Đặt trước, Thanh toán
CH-02 / Câu hỏi mở / Giảng viên đăng nhập bằng gì, giải C2 / Chị Lan / Thứ Sáu / Đăng nhập
Hai quyết định trong khuôn trên là ví dụ minh hoạ cách ghi; nội dung thật là thứ chính Anh Tuấn chốt trong phòng họp, không phải thứ nhóm bạn viết sẵn.
Sau walkthrough, mỗi story đi qua một cổng kiểm tra trước khi được giao cho lập trình viên. Cổng này gọi là Definition of Ready, tức điều kiện để một story được coi là sẵn sàng bắt đầu làm. Cách tách story cho vừa cỡ đã có trong khóa AI viết & tách User Story; ở đây chỉ cần các điều kiện kiểm tra độ đầy đủ:
- Story trỏ về ít nhất một bằng chứng, theo bài 5.
- Vai trò trong story là một trong sáu vai trò, và quyền hạn liên quan đã được ghi, theo bài 3.
- Đối tượng mà story chạm vào đã có ma trận CRUD không còn ô "Chưa ai" liên quan, theo bài 2.
- Tiêu chí chấp nhận phủ cả đường vui và các nhánh không vui đã liệt kê, theo bài 4.
- Không còn câu hỏi mở nào chặn story này, hoặc câu hỏi đó đã có quyết định trong biên bản.
- Kịch bản chứa story đã được đi qua trong walkthrough với người dùng thật của nó.
flowchart TD
A[Story ứng viên cho đợt chạy thử] --> B{Có bằng chứng?}
B -->|Không| X[Trả về backlog]
B -->|Có| C{Vai trò và quyền hạn rõ?}
C -->|Không| X
C -->|Có| D{Có tiêu chí cho nhánh không vui?}
D -->|Không| X
D -->|Có| E{Còn câu hỏi mở chặn?}
E -->|Còn| X
E -->|Hết| F[Sẵn sàng cho kỹ thuật]Sẵn sàng cho kỹ thuật ở đợt chạy thử học kỳ 2 nghĩa là gì? Chị Lan nói: "Học kỳ 2 phải chạy thử được ở một quầy." Một quầy nghĩa là phạm vi hẹp, và sẵn sàng được đo trên phạm vi đó, không phải trên toàn bộ ý tưởng. Cụ thể: mọi story trong lát cắt chạy thử đạt Definition of Ready; ba mâu thuẫn C1, C2, C3 đã có quyết định ghi trong biên bản, vì cả ba đều chạm vào luồng đặt và trả; bếp của quầy đó có story màn hình đọc được khi tay đang nấu; Anh Tuấn có story đối soát cho quầy đó; và yêu cầu mất mạng ở quầy đã có phương án. Story ngoài lát cắt, như P8 nếu để sau, vẫn nằm trong backlog kèm lý do.
Lộ trình từng bước
- Chọn ba tới năm kịch bản, mỗi kịch bản dựa trên một persona và đi qua ít nhất một nhánh không vui.
- Gom câu hỏi mở từ bốn ma trận, xếp theo người có quyền trả lời, gắn mỗi câu vào kịch bản sẽ làm lộ ra nó.
- Gửi chương trình 60 phút cho người tham dự trước hai ngày, kèm danh sách quyết định cần chốt.
- Trong buổi họp, một người dẫn, một người ghi biên bản theo khuôn cố định. Không sửa backlog tại chỗ.
- Cuối buổi, đọc lại toàn bộ quyết định và câu hỏi mở. Ai không đồng ý thì nói ngay.
- Trong 24 giờ, cập nhật backlog, bốn ma trận và trang Truy vết theo biên bản.
- Cho từng story của lát cắt chạy thử qua Definition of Ready. Story trượt quay lại backlog kèm lý do.
Thói quen & kỷ luật
| Thói quen | Tần suất | Kết quả mong đợi |
|---|---|---|
| Gửi biên bản cho mọi người tham dự | Trong 24 giờ sau mỗi buổi | Quyết định không bị nhớ mỗi người một kiểu |
| Mời lập trình viên vào walkthrough | Mỗi buổi | Câu hỏi kỹ thuật lộ ra khi còn rẻ |
| Kiểm tra Definition of Ready trước khi giao story | Mỗi story | Không story nửa vời nào vào sprint |
| Theo dõi hạn của câu hỏi mở | Hai lần mỗi tuần | Câu hỏi không bị treo tới lúc code |
Cần luyện tập
Drill một: Viết kịch bản walkthrough cho Quốc Bảo, sinh viên năm 4 tới căng tin khoảng 12:40. Kịch bản phải đi qua ít nhất hai nhánh không vui. Gợi ý: hết món mặn, và thời điểm 12:40 so với giới hạn 30 phút của R3.
Drill hai: Lấy năm story bất kỳ trong backlog Căng tin số của nhóm. Cho từng story qua Definition of Ready. Ghi điều kiện nào làm nó trượt.
Drill ba: Tập dẫn một walkthrough 15 phút với bạn cùng lớp đóng vai Anh Tuấn. Người đóng vai phải phản bác ít nhất hai lần. Sau đó đọc lại biên bản: có quyết định nào thiếu tên người chốt không?
Checklist hành động tuần này
- [ ] Viết bốn kịch bản theo chương trình 60 phút
- [ ] Gắn mọi câu hỏi mở vào kịch bản tương ứng
- [ ] Tổ chức walkthrough với Chị Lan, Anh Tuấn, Cô Hạnh và lập trình viên
- [ ] Cập nhật backlog và bốn ma trận theo biên bản trong 24 giờ
- [ ] Cho mọi story của lát cắt chạy thử qua Definition of Ready
Chỉ số cho cách làm
Các con số dưới đây đo cách nhóm làm bước này, không đo app có thành công hay không. Câu hỏi app có hiệu quả không, và làm gì tiếp, là việc của khóa Đo lường thành công.
| Loại chỉ số | Ví dụ | Vai trò |
|---|---|---|
| North Star | Tỉ lệ story trong lát cắt chạy thử đạt Definition of Ready | Đo mức sẵn sàng thật cho kỹ thuật |
| Chỉ số dẫn dắt | Số quyết định được chốt trong mỗi buổi walkthrough | Hiệu quả của buổi họp |
| Chỉ số dẫn dắt | Số câu hỏi mở quá hạn | Rủi ro trễ khi bắt đầu code |
| Chỉ số kết quả | Số câu hỏi nghiệp vụ lập trình viên phải hỏi lại trong sprint đầu | Xác nhận khám phá đã đủ |
Dấu hiệu bạn đã thành thạo
- Bạn dẫn được một buổi walkthrough mà không biến nó thành buổi demo.
- Khi hai stakeholder bất đồng, bạn ghi lại thay vì chọn giúp họ.
- Bạn nói được vì sao một story chưa sẵn sàng, bằng đúng điều kiện nó trượt.
- Lập trình viên của nhóm hỏi ít câu hỏi nghiệp vụ trong sprint đầu hơn hẳn trước đây.
Cạm bẫy thường gặp
| Cạm bẫy | Biểu hiện | Cách tránh |
|---|---|---|
| Biến walkthrough thành demo | Chỉ đi đường vui, nhận lời khen | Mỗi kịch bản phải có nhánh không vui |
| Không mời lập trình viên | Họ đọc biên bản mà không hiểu ngữ cảnh | Lập trình viên ngồi trong phòng, được hỏi |
| Quyết định không có người chốt | "Cả nhóm thống nhất là…" | Mỗi quyết định ghi một tên |
| Coi Definition of Ready là thủ tục | Tích cho đủ rồi giao | Story trượt phải quay lại, kể cả khi đang gấp |
Chốt lại
Walkthrough là phép kiểm tra cuối cùng, và là phép duy nhất dùng người thật. Với chương trình 60 phút, bốn kịch bản bằng tên thật và một biên bản có người chốt, nhóm bạn biến bốn ma trận thành quyết định. Definition of Ready là cổng cuối: story nào qua được thì mới sang tay kỹ thuật. Với đợt chạy thử ở một quầy trong học kỳ 2, "sẵn sàng" nghĩa là lát cắt đó không còn câu hỏi nào chặn, và mỗi dòng trong backlog trả lời được "vì sao" và "nếu hỏng thì sao". Khóa Dự án cuối: Phòng học nhóm thư viện cho bạn tự làm cả chuỗi trên một case mới.