Product Management
Đăng nhập
ESC

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

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

User story: Tám cách tách story thường dùng

Đã đọc 0/11 mục · còn khoảng 9 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Vì sao chủ đề quan trọng

Bài 3 kết thúc với vài story bị đánh dấu trượt chữ S trong INVEST: quá to để xong trong một vòng lặp. Story to nhất trên lát 1 của Căng tin số là Đặt món trước. Một story to như vậy, gọi là sử thi (epic), có ba vấn đề. Không ai ước lượng được nó. Nó chỉ cho ra giá trị khi xong hết, nên hai tuần đầu đội không có gì để cho Cô Hạnh xem. Và nó giấu rủi ro: phần khó nhất, như tích hợp đăng nhập của trường, thường bị dồn tới cuối.

Tách story là kỹ năng cắt một epic thành các story nhỏ mà mỗi story vẫn có giá trị riêng cho người dùng. Đây là chỗ nhiều nhóm làm sai: họ cắt theo tầng kỹ thuật thành giao diện, API, cơ sở dữ liệu. Ba mảnh đó không mảnh nào dùng được một mình. Tách đúng là cắt dọc, mỗi lát xuyên qua mọi tầng nhưng hẹp về phạm vi.

Bài này dạy tám cách tách thường dùng, áp từng cách lên epic Đặt món trước. Đầu vào là story từ bài 3 cùng quy tắc nghiệp vụ R1–R6 của khóa Hiểu nghiệp vụ trước khi xây. Đầu ra là một danh sách story nhỏ, mỗi cái đạt INVEST, sẵn sàng nhận tiêu chí nghiệm thu ở bài 5.

Bức tranh lớn

Epic gốc:

Là Người chạy lịch, tôi muốn đặt trước suất trưa,
để có phần chờ sẵn khi tan lớp 11:30 và kịp vào lớp 12:45.

Tám cách tách, mỗi cách là một câu hỏi bạn đặt cho epic:

Cách táchCâu hỏi gợi ýStory nhỏ rút ra từ Đặt món trước
Theo bước quy trìnhEpic gồm những bước nào nối nhauChọn suất, chọn khung giờ nhận, xem lại đơn, hủy đơn trước 10:00
Theo quy tắc nghiệp vụQuy tắc nào có thể làm sauSuất một món mặn trước, thêm món mặn thứ hai, rồi món mặn thứ ba cộng 10.000đ theo R1
Theo biến thể dữ liệuCó những loại dữ liệu khác nhau nàoCơm phần có lựa chọn món, suất chay cố định, đồ uống kèm
Theo vai tròAi khác cũng làm việc nàySinh viên đặt, giảng viên đặt, Anh Tuấn ghi đơn nhóm 20–30 suất
Đường suôn rồi đường lỗiKhi mọi thứ trơn tru thì sao, khi hỏng thì saoĐặt và trả thành công trước; chuyển khoản lỗi, quá giờ chốt, không tới lấy sau
Theo nền tảngCó cần mọi thiết bị ngay khôngWeb trên điện thoại trước, ứng dụng cài đặt sau
Hoãn hiệu năngCó thể đúng trước, nhanh sau khôngChạy đúng với 50 đơn mỗi ngày trước, chịu tải 600 suất sau
SpikePhần nào chưa biết đủ để ước lượngHai ngày tìm hiểu đăng nhập qua hệ thống của trường
flowchart TD
    E[Epic Đặt món trước] --> W[Theo bước quy trình]
    E --> R[Theo quy tắc R1]
    E --> D[Theo biến thể dữ liệu]
    E --> V[Theo vai trò]
    E --> H[Đường suôn rồi đường lỗi]
    E --> N[Theo nền tảng]
    E --> P[Hoãn hiệu năng]
    E --> S[Spike]
    W --> W1[Chọn khung giờ nhận]
    R --> R1[Suất một món mặn]
    H --> H1[Hủy khi quá 10 giờ]
    S --> S1[Thử đăng nhập trường 2 ngày]

Bạn không dùng cả tám cách cho một epic. Bạn thử từng cách, giữ cách nào cho ra các mảnh có giá trị riêng và có kích thước gần đều nhau.

Ví dụ chi tiết

Đi qua từng cách trên epic Đặt món trước, với lý do vì sao chọn hay bỏ.

1. Theo bước quy trình. Đặt món gồm: chọn suất → chọn khung giờ nhận → xem lại và xác nhận → hủy nếu cần. Mỗi bước là một story. Nhưng cẩn thận: "chọn suất" mà không xác nhận được thì chưa có giá trị. Cách làm đúng là gộp bước tối thiểu thành story đầu tiên ("chọn một suất, một khung giờ, xác nhận") rồi tách phần thêm như hủy đơn thành story riêng.

2. Theo quy tắc nghiệp vụ. Cô Hạnh nói: "Cơm phần là một chén cơm, tối đa hai món mặn, một món rau. Thêm món mặn thứ ba là cộng mười nghìn." Đó là R1, và nó có ba nấc. Story A: đặt suất có một món mặn và một rau. Story B: được chọn món mặn thứ hai. Story C: món mặn thứ ba, cộng 10.000đ vào tổng tiền. Story A đã đủ để Minh Anh có bữa trưa. Story C có thể chờ tới lát 2 mà không ai thiệt.

3. Theo biến thể dữ liệu. Đợt chạy thử chỉ ở quầy cơm, nhưng quầy cơm có món chay và đồ uống bán kèm. Cơm phần có lựa chọn, suất chay ở quầy chay thì cố định. Tách: cơm phần trước vì chiếm khoảng 600 trên 1.500 suất mỗi trưa; các loại khác sau.

4. Theo vai trò. Sinh viên đăng nhập bằng mã số sinh viên, theo yêu cầu Chị Lan. Anh Tuấn thì nhắc: "Giảng viên với nhân viên trường cũng ăn ở đây, không có mã số sinh viên đâu." Đó là mâu thuẫn C2, và nó đáng một story riêng. Thêm một vai trò nữa: Anh Tuấn ghi đơn nhóm cho câu lạc bộ, giải P8. Sinh viên làm trước; hai vai trò kia sau.

5. Đường suôn rồi đường lỗi. Đường suôn (happy path): đặt, trả, nhận. Đường lỗi (unhappy path) mới là chỗ nghiệp vụ dày: chuyển khoản không tới, đặt sau 10:00, món hết sau khi đã đặt, không tới lấy quá 30 phút theo R3, cần hoàn tiền mà chỉ quản lý duyệt theo R6. Mỗi đường lỗi là một story. Đừng bỏ chúng; chỉ xếp chúng sau. Lát 1 vẫn cần ít nhất cách xử lý thô cho đơn quá giờ chốt, nếu không bếp sẽ nhận đơn không kịp nấu.

6. Theo nền tảng. Sinh viên dùng cả Android lẫn iPhone. Một trang web chạy tốt trên trình duyệt điện thoại phục vụ cả hai mà chỉ làm một lần. Ứng dụng cài đặt để sau, khi đợt chạy thử đã chứng minh có người dùng.

7. Hoãn hiệu năng. Lát 1 có thể chỉ cần chịu vài chục đơn mỗi ngày. Story "chịu được lượng truy cập cao điểm của cả quầy cơm" tách riêng. Hoãn không có nghĩa là quên: bài 6 sẽ viết nó thành yêu cầu phi chức năng có con số, và đội phải đạt trước khi mở rộng.

8. Spike. Không ai trong nhóm biết hệ thống đăng nhập của trường hoạt động thế nào. Ước lượng story đăng nhập lúc này là đoán. Một spike là một việc nghiên cứu có giới hạn thời gian, ví dụ hai ngày, kết quả là kiến thức chứ không phải tính năng. Sau spike, story đăng nhập mới ước lượng được. Spike không có giá trị người dùng trực tiếp, nên chỉ dùng khi thật sự thiếu thông tin.

Kết quả sau khi tách, đây là phần của epic nằm trong lát 1:

S1 Đặt một suất cơm phần một món mặn một rau, chọn khung giờ, xác nhận
S2 Trả trước bằng chuyển khoản QR
S3 Từ chối đơn mới sau 10:00 và báo rõ lý do
S4 Đăng nhập bằng mã số sinh viên, sau spike hai ngày

Phần còn lại, gồm món mặn thứ hai và thứ ba, hủy đơn, giảng viên đặt, đơn nhóm, hoàn tiền, tự giải phóng phần sau 30 phút, đi vào lát 2 và 3 trên story map của bài 2.

flowchart TD
    A[Story quá to] --> B{Có nhiều bước nối nhau}
    B -->|Có| B1[Tách theo bước]
    B -->|Không| C{Có quy tắc nhiều nấc}
    C -->|Có| C1[Tách theo quy tắc]
    C -->|Không| D{Có đường lỗi phức tạp}
    D -->|Có| D1[Đường suôn trước]
    D -->|Không| E{Còn điều chưa biết}
    E -->|Có| E1[Spike có hạn giờ]
    E -->|Không| F[Thử vai trò, dữ liệu, nền tảng]

Muốn luyện tách story với trợ lý AI, xem khóa AI viết & tách User Story.

Lộ trình từng bước

  • Viết epic ở dạng Là, tôi muốn, để.
  • Thử lần lượt tám câu hỏi, ghi mọi cách tách có thể.
  • Loại cách nào cho ra mảnh không có giá trị riêng, như cắt theo tầng kỹ thuật.
  • Chọn cách cho ra các mảnh gần đều nhau và có một mảnh nhỏ nhất vẫn dùng được.
  • Đặt mảnh nhỏ nhất vào lát 1; xếp các mảnh còn lại vào lát sau trên story map.
  • Chấm lại INVEST cho từng mảnh.
  • Với mỗi spike, ghi rõ câu hỏi cần trả lời và giới hạn ngày.

Thói quen & kỷ luật

Thói quenTần suấtKết quả mong đợi
Thử ít nhất ba cách tách cho mỗi epicMỗi epic mớiChọn được cách tách tốt, không phải cách đầu tiên
Hỏi mảnh này một mình có ai dùng đượcMỗi story sau khi táchKhông còn lát cắt ngang theo tầng kỹ thuật
Ghi đường lỗi vào backlog ngay khi nghĩ raMỗi buổi chuẩn bị backlogĐường lỗi không bị quên tới lúc chạy thật
Đóng spike đúng hạnMỗi spikeSpike không biến thành việc kéo dài vô hạn

Cần luyện tập

Drill một: Tách epic "Là Người ăn cẩn trọng nhận suất hỗ trợ, tôi muốn dùng suất hỗ trợ khi đặt trước" theo quy tắc R4: tối đa 1 suất mỗi ngày, chỉ ngày thường, không áp dụng đồ uống. Viết ít nhất ba story, mỗi cái gắn với một phần của quy tắc.

Drill hai: Lấy một tính năng trong đồ án của bạn mà nhóm đã chia thành giao diện, API, cơ sở dữ liệu. Chia lại theo chiều dọc bằng hai trong tám cách.

Drill ba: Với epic "Là Anh Tuấn, tôi muốn đối soát cuối ngày nhanh hơn", liệt kê các đường lỗi: chuyển khoản tới trễ, sinh viên trả thiếu, đơn được hoàn tiền. Mỗi đường lỗi thành một story.

Checklist hành động tuần này

  • [ ] Viết epic Đặt món trước ở dạng đầy đủ
  • [ ] Thử đủ tám câu hỏi tách và ghi kết quả
  • [ ] Chọn ra bốn story nhỏ nhất cho lát 1
  • [ ] Liệt kê ít nhất năm đường lỗi của Đặt món trước
  • [ ] Viết một spike có câu hỏi và hạn ngày rõ ràng

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 StarSố story xong trong một vòng lặp mà vẫn cho người dùng thứ gì đó dùng đượcĐo việc tách có thật sự tạo giá trị sớm
Chỉ số kích thướcĐộ chênh giữa story lớn nhất và nhỏ nhất trong lát 1Báo epic chưa tách đủ
Chỉ số bao phủSố đường lỗi đã có story so với số đã liệt kêĐảm bảo không bỏ quên đường lỗi
Chỉ số cảnh báoSố story chỉ chạm một tầng kỹ thuậtPhát hiện cắt ngang

Dấu hiệu bạn đã thành thạo

Nhìn epic Đặt món trước, bạn thấy ngay R1 có ba nấc và đường lỗi dày hơn đường suôn. Bạn từ chối cắt ngang theo tầng mà giải thích được vì sao. Bạn biết khi nào cần spike và khi nào chỉ là ngại hỏi Anh Tuấn. Và mảnh nhỏ nhất bạn tách ra vẫn cho Minh Anh ăn được bữa trưa.

Cạm bẫy thường gặp

Cạm bẫyBiểu hiệnCách tránh
Cắt ngang theo tầngStory giao diện, story API, story dữ liệuMỗi story phải xuyên mọi tầng
Tách quá vụnStory chỉ là đổi một nhãn chữGộp lại tới khi có giá trị riêng
Quên đường lỗiChỉ có story đặt thành côngLiệt kê đường lỗi trước khi tách
Hoãn hiệu năng rồi quênKhông có yêu cầu tải cho cao điểmViết ngay yêu cầu phi chức năng ở bài 6
Spike không hạnNghiên cứu đăng nhập kéo dài hai tuầnGhi câu hỏi và số ngày trước khi bắt đầu

Chốt lại

Tách story là cắt dọc, không cắt ngang. Tám cách thường dùng là theo bước, theo quy tắc, theo biến thể dữ liệu, theo vai trò, đường suôn rồi đường lỗi, theo nền tảng, hoãn hiệu năng, và spike. Trên epic Đặt món trước, R1 cho ba nấc, C2 cho một story vai trò, R3 và R6 cho các đường lỗi. Đầu ra là bốn story nhỏ cho lát 1 và phần còn lại xếp vào lát sau. Bài 5 sẽ viết cho mỗi story các tiêu chí nghiệm thu dạng Given/When/Then.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi