Thuật ngữ
Story point là gì? Cách chấm điểm công việc trong Scrum, có ví dụ
Story point là đơn vị đo độ lớn tương đối của một việc, không phải giờ. Giải thích dãy Fibonacci, Planning Poker, ví dụ buổi chấm điểm của đội 5 người và 5 lỗi hay gặp.
Khoảng 6 phút đọc
Trả lời ngắn
Định nghĩaStory point là đơn vị đo độ lớn tương đối của một việc trong Scrum, gộp cả khối lượng, độ phức tạp và độ không chắc chắn. Nó không phải giờ: “việc này 5 điểm” không có nghĩa là 5 giờ, mà là “to hơn việc 3 điểm, nhỏ hơn việc 8 điểm”. Đội tự chấm điểm cho từng việc trước khi đưa vào sprint, rồi dùng tổng điểm làm được mỗi sprint (velocity) để lập kế hoạch.
Cách chấm thường dùng dãy Fibonacci rút gọn 1, 2, 3, 5, 8, 13, và cả đội cùng chấm bằng Planning Poker. Đây là khái niệm gây tranh cãi nhiều nhất khi đội Việt Nam mới chạy Scrum, thường vì bị hiểu thành một cách đo giờ khác.
Vì sao không ước lượng bằng giờ
Con người ước lượng tuyệt đối rất kém nhưng so sánh tương đối khá tốt. Hỏi “tòa nhà kia cao bao nhiêu mét” thì mỗi người một đáp án; hỏi “tòa nào cao hơn” thì mọi người trả lời giống nhau và đúng. Ước lượng giờ là câu hỏi thứ nhất; story point là câu hỏi thứ hai.
Giờ còn có ba rắc rối riêng. Giờ của người giỏi khác giờ của người mới, nên một con số không có nghĩa chung cho cả đội. Giờ hay bị đem ra so với giờ thực tế để hỏi “sao chậm thế”, nên mọi người sẽ khai cao lên cho an toàn. Và giờ đổi khi đổi người làm, còn độ lớn của việc thì không. Điểm tránh được cả ba: nó là con số của đội, không của cá nhân, và chỉ có nghĩa khi so với các việc khác trong cùng đội.
Ba thứ gộp trong một con số
| Thành phần | Câu hỏi | Ví dụ làm điểm tăng |
|---|---|---|
| Khối lượng | Phải làm bao nhiêu thứ? | Thêm một trường vào 12 màn hình thay vì 1 màn hình |
| Độ phức tạp | Có khó nghĩ không, có nhiều trường hợp biên không? | Xếp lịch thi tự động tránh trùng phòng, trùng giám thị |
| Độ không chắc chắn | Đội đã làm việc kiểu này chưa, có phụ thuộc bên ngoài không? | Tích hợp cổng thanh toán chưa từng dùng, tài liệu API thiếu |
Hai việc cùng tốn một ngày có thể khác điểm: một việc dài nhưng dễ (nhiều màn hình giống nhau) và một việc ngắn nhưng chưa ai biết cách làm. Điểm phản ánh cả rủi ro, không chỉ thời gian.
Vì sao dùng dãy 1, 2, 3, 5, 8, 13
Khoảng cách giữa các số tăng dần: 1 và 2 cách nhau một điểm, 8 và 13 cách nhau năm điểm. Đó là chủ ý. Việc càng to thì ước lượng càng mù mờ, nên bắt đội chọn giữa 8 và 9 là giả vờ chính xác. Dãy thưa dần buộc đội nói “việc này cỡ 8” hoặc “cỡ 13” thay vì cãi nhau về 10 hay 11.
Quy ước thường dùng
- 1–3 điểm: việc rõ ràng, một người làm trong vài giờ đến hai ngày. Phần lớn việc trong sprint nên nằm ở đây.
- 5–8 điểm: việc có phần chưa rõ, có thể cần hai người hoặc kéo dài gần một tuần. Cần viết tiêu chí chấp nhận kỹ.
- 13 điểm trở lên: quá to để cam kết trong một sprint. Tách thành nhiều việc nhỏ trước khi đưa vào sprint.
- Không chấm được: tạo một “spike”, tức việc nghiên cứu có giới hạn thời gian (ví dụ một ngày), xong rồi chấm lại.
Cách chấm: việc mốc và Planning Poker
Bước đầu tiên là chọn việc mốc: một việc cả đội đã làm, hiểu rõ, nhỏ nhưng không tầm thường, gán cho nó 1 hoặc 2 điểm. Mọi việc khác chấm bằng cách so với mốc: gấp đôi, gấp ba, gấp năm.
Planning Poker là cách cả đội chấm cùng lúc mà không bị người nói trước dẫn dắt: PM đọc việc, mọi người hỏi cho rõ, mỗi người chọn kín một con số, lật cùng lúc. Người chọn cao nhất và thấp nhất giải thích, rồi chấm lại, tối đa hai, ba vòng. Mục đích thật của buổi chấm không phải con số mà là câu giải thích: đó là lúc cả đội phát hiện việc có phần chưa ai nghĩ tới. Chi tiết từng bước ở chương Ước lượng.
Ví dụ: một buổi chấm điểm của đội 5 người
Ví dụ
Đội 5 người (1 PM, 3 dev, 1 tester) chuẩn bị sprint đầu tiên cho cổng đăng ký học phần. Việc mốc: “Sửa nhãn sai trên màn hình đăng nhập”, cả đội đồng ý 1 điểm.
“Thêm bộ lọc theo khoa ở danh sách học phần”: lật bài 3, 3, 3, 5. Bạn chọn 5 nói cần sửa cả API lẫn giao diện; ba bạn kia bảo API đã có sẵn tham số. Chốt 3. “Xuất bảng điểm ra PDF”: 5, 5, 8, 8. Hai bạn chọn 8 nhớ rằng thư viện PDF hiện tại lỗi phông tiếng Việt. Cả đội thấy đó là rủi ro thật, chốt 8. “Xếp lịch thi tự động”: 13, 13, 21, 13. Ai cũng thấy quá to, PM tách thành ba việc: nhập ràng buộc phòng (5), thuật toán xếp (8), màn hình xem và sửa tay (5).
Kết thúc buổi, 12 việc được chấm tổng 47 điểm. Đội chưa biết velocity nên cam kết dè dặt 25 điểm cho sprint 1. Sau ba sprint làm được 22, 27, 26 điểm, họ biết mình làm khoảng 25 điểm mỗi hai tuần, và backlog 120 điểm còn lại cần chừng 5 sprint.
Điểm chỉ có nghĩa khi đi cùng velocity
Bản thân con số 5 hay 8 không cho biết bao giờ xong. Điểm trở nên hữu ích khi đội đo velocity: tổng điểm của việc đã xong trong mỗi sprint, lấy trung bình ba sprint gần nhất. Velocity trả lời hai câu hỏi PM hay bị hỏi: sprint này nhận được bao nhiêu việc, và phần backlog còn lại mất mấy sprint. Cách đọc velocity ở chương Đo lường; biểu đồ theo ngày trong sprint xem Burndown chart là gì?.
Năm lỗi hay gặp
Đội mới chạy Scrum hay mắc
- Quy đổi 1 điểm = 4 giờ. Vừa quy đổi xong thì điểm thành giờ với mọi rắc rối của giờ. Nếu cần báo thời gian cho khách, dùng velocity để suy ra số sprint, rồi nhân với hai tuần.
- Dùng điểm làm KPI cá nhân. Đếm “bạn A xong 30 điểm, bạn B 12 điểm” thì tháng sau ai cũng chấm cao lên. Điểm là của đội.
- So velocity giữa hai đội. Mỗi đội có việc mốc riêng, 20 điểm của đội này không bằng 20 điểm của đội kia.
- PM chấm hộ. Người không làm thì không biết việc khó ở đâu; và người làm không cam kết với con số người khác đặt.
- Chấm lại việc đang làm để đẹp velocity. Việc hóa ra khó hơn thì để nguyên điểm, ghi nhận ở Retro; đổi điểm giữa chừng làm velocity mất tác dụng dự báo.
Danh sách đầy đủ hơn ở Lỗi thường gặp và cách tránh.
Chấm story point trên Pentara
Mỗi công việc có trường Story point (số nguyên, gợi ý sẵn dãy 1, 2, 3, 5, 8, 13, 21). Khối sprint ở tab Backlog hiện tổng điểm đã xong trên tổng cam kết, ví dụ “12/41 SP”, nên ở buổi Planning kéo việc vào là thấy ngay cam kết đã tới mức velocity chưa.
Khi hoàn thành sprint, Pentara chốt số điểm cam kết và hoàn thành; biểu đồ Velocity ở Chi tiết sprint và tab Báo cáo vẽ từng sprint kèm đường trung bình ba sprint gần nhất. Burndown tự dùng điểm nếu sprint có ít nhất một việc được chấm, không thì đếm số việc. Vì vậy muốn dùng velocity để lập kế hoạch, hãy chấm đủ trước khi bắt đầu sprint. Chưa có dự án để thử? Đăng ký gói Miễn phí rồi đi theo Bắt đầu nhanh.
Hỏi đáp nhanh
- 1 story point bằng bao nhiêu giờ?
- Không có quy đổi cố định, và không nên đặt ra. Điểm chỉ có nghĩa khi so với các việc khác của cùng một đội; 3 điểm của đội này không bằng 3 điểm của đội kia. Nếu cần ước lượng thời gian, dùng velocity: đội làm được khoảng 25 điểm mỗi sprint 2 tuần thì backlog 100 điểm cần chừng 4 sprint.
- Bug có chấm story point không?
- Bug phát hiện trong sprint cho việc đang làm thì không chấm, vì nó thuộc về việc đó. Bug từ bản đã phát hành mà đưa vào sprint như một việc riêng thì chấm như việc thường, để velocity phản ánh đúng chi phí bảo trì. Đội thống nhất một cách và giữ nhất quán.
- Ai chấm điểm: PM hay cả đội?
- Những người trực tiếp làm, tức dev, tester, BA. PM (hoặc Product Owner) đọc việc, trả lời câu hỏi, nhưng không bỏ phiếu: người không làm không thấy chỗ khó, và người làm không cam kết với con số do người khác đặt.
- Đội mới bắt đầu nên chọn việc mốc thế nào?
- Chọn một việc cả đội đã làm gần đây, hiểu rõ, nhỏ nhưng không tầm thường, gán 1 hoặc 2 điểm. Chọn thêm một việc cỡ trung bình gán 5 để có hai mốc so sánh. Sau ba sprint xem lại: việc nào lệch nhiều so với thực tế thì đổi mốc.