- Story point hoàn toàn không đáng tin cậy, gây ra nhầm lẫn và liên tục buộc phải nhắc những người liên quan về ý nghĩa của nó
- Giá trị point thấp thì chính xác hơn, nhưng giá trị point cao giả định độ biến động lớn hơn và thể hiện một khoảng, nên không thể cộng dồn một cách chính xác
- Story point không biểu thị thời gian, nhưng khi kết hợp với metric velocity thì trên thực tế lại mang nghĩa thời gian, khiến ngay từ đầu việc cộng các con số và khoảng trở nên vô lý
- Ước lượng phần mềm là việc khó, và đầu ra của quy trình này nhìn chung không hữu ích tương xứng với đầu vào
- Những nhóm nhỏ ít bị gián đoạn trông có vẻ như đang ước lượng chính xác, nên trong đa số trường hợp tạo cảm giác rằng cách làm hiện tại đang hoạt động tốt
- Khi capacity được sử dụng hết mức, độ biến động của mọi công việc tăng vọt, tác động mạnh đến mọi ước lượng và timeline
- Hàng đợi được đo lường giúp giải quyết các vấn đề ước lượng ngắn hạn và dài hạn, tự nhiên xử lý thay đổi phạm vi, đồng thời loại bỏ bất định và mang lại một thực hành có giá trị hơn nhiều cho các nhóm lớn
- Hàng đợi được đo lường cung cấp một chỉ báo sớm dự đoán vấn đề nhanh hơn 20 lần so với các metric liên quan đến velocity hay cycle time
Story point là gì?
- Theo Atlassian, story point là đơn vị dùng để biểu diễn ước lượng tổng nỗ lực cần thiết để triển khai hoàn chỉnh một hạng mục product backlog hoặc công việc khác
- Point biểu thị độ phức tạp, khối lượng công việc, rủi ro hoặc bất định, và lượng việc
- Việc đo độ phức tạp là một khái niệm tương đối, nên mỗi nhóm có thể đánh giá cùng một công việc theo cách khác nhau
- Do tính tương đối của point, việc so sánh giữa các nhóm là vô nghĩa, và đây là vấn đề thường xảy ra ở cấp quản lý
Độ biến động nội tại
- Story point dựa trên dãy Fibonacci, nên giá trị càng cao thì độ biến động được biểu thị càng lớn
- Cộng các giá trị point có độ biến động cao là vô nghĩa, và việc cộng point trong metric velocity là sai lầm
- Theo luật Goodhart, khi một phép đo trở thành mục tiêu thì phép đo đó không còn là một phép đo tốt nữa
Những vấn đề đã biết
- Các vấn đề của story point đã được biết đến rộng rãi, nhưng nó vẫn được sử dụng vì các kỹ thuật ước lượng thay thế cũng gặp những vấn đề tương tự
- Ron Jeffries, người tạo ra story point, đã phủ nhận nó và chỉ trích việc lạm dụng nó
- Trong Scrum, "Commitment" đã được đổi thành "Forecast" nhưng vẫn tiếp tục bị sử dụng sai
- Thậm chí còn xảy ra tình huống nghịch lý là làm được nhiều hơn mức ước lượng lại bị trách móc
Ưu tiên theo ROI
- Doanh nghiệp ưu tiên công việc để tối ưu hóa tài nguyên (thời gian, tiền bạc, công cụ, con người)
- Ước lượng phát triển là cần thiết để tính chi phí đầu tư, nhưng bản thân việc ước lượng vừa khó vừa tốn kém
- Software Estimation: Demystifying the Black Art là một cuốn sách rất hay bàn về sự khó khăn của việc ước lượng
Đầu ra của quy trình
- Quy trình ước lượng story point tiêu tốn nhiều thời gian nhưng đầu ra lại không có giá trị
- Các buổi grooming định kỳ rất tốn thời gian và được áp dụng rất khác nhau giữa các nhóm, không có tính nhất quán
- Thay vì story point, việc lập ra một danh sách công việc có ý nghĩa sẽ có giá trị hơn
Đề xuất phương án thay thế
- Ước lượng bằng cỡ áo thun có thể là một phương án tốt hơn, nhưng cách này cũng có vấn đề
- Ước lượng theo thời gian cũng gặp các vấn đề tương tự, vì thời gian nhóm thực sự làm việc khác với thời gian mà phía kinh doanh kỳ vọng
- Với nhóm nhỏ, ước lượng theo thời gian có thể hoạt động tốt, nhưng khi nhóm lớn lên thì độ chính xác của ước lượng giảm xuống
- Cuốn sách "The Principles of Product Development Flow" của Donald Reinertsen đưa ra một phương án thay thế
- Trọng tâm là tối ưu hóa luồng công việc bằng cách tập trung vào quản lý hàng đợi (Queue)
- Cần lập kế hoạch năng lực và đảm bảo có vùng đệm năng lực để hấp thụ độ biến động
Giải pháp
- Bắt đầu bằng việc cả nhóm cùng phân tích công việc, chia nhỏ thành các task và loại bỏ bất định
- Danh sách task sẽ trở thành hàng đợi (Queue), và tổng số task biểu thị khối lượng công việc (Job Size)
- Dùng tốc độ hoàn thành task trung bình (Average Task Rate) để ước lượng thay cho story point
- Theo dõi công việc dựa trên tốc độ xử lý trung bình và tính toán tỷ lệ hoàn thành công việc
- Khi cập nhật task theo thông tin mới hoặc phản hồi mới, ước lượng cũng được điều chỉnh một cách tự nhiên
- Nhà phát triển không còn phải chịu áp lực tâm lý về việc ước lượng
Hàng đợi (Queue) là chỉ báo sớm
- Trong khi tốc độ hoàn thành task trung bình, cycle time, velocity... là các chỉ báo trễ, thì Queue là chỉ báo sớm
- Khi kích thước Queue tăng lên, có thể nhận biết trước vấn đề và phản ứng kịp thời
Tóm tắt
- Story point gây nhầm lẫn, không đáng tin cậy và được thiết kế để thất bại
- Thay vào đó, dành thời gian để cả nhóm cùng hiểu vấn đề, loại bỏ bất định, chia nhỏ theo task và quản lý Queue mới là việc có ý nghĩa và giá trị
Ý kiến của GN+
- Cách quản lý hàng đợi được bài viết đề xuất có vẻ là một phương án thay thế thực tế giúp vượt qua khó khăn của việc ước lượng trong phát triển agile
- Tuy nhiên, quá trình chia nhỏ task có thể làm tăng công sức cho các nhà phát triển, và ở giai đoạn đầu của dự án có thể mất nhiều thời gian hơn
- Ngoài ra, quy trình phân tích task đòi hỏi sự tham gia tích cực và việc nêu ý kiến thẳng thắn từ phía các nhà phát triển
- Mặt khác, cũng có thể kỳ vọng vào hiệu ứng tích cực là đội ngũ phát triển hiểu sâu hơn các yêu cầu kinh doanh và cùng nhau suy nghĩ về chúng
2 bình luận
Chẳng phải đó là phương pháp Kanban sao..?
Ý kiến Hacker News
Theo kinh nghiệm cá nhân, con số story point không quan trọng, nhưng quá trình cả nhóm đánh giá độ phức tạp của công việc lại rất hữu ích
Việc trong Scrum Guide từ "Commitment" đổi thành "Forecast" không phải diễn ra vào năm 2011
Việc chia nhỏ gói công việc thành các đơn vị nguyên tử và đo độ dài hàng đợi là một vấn đề ở cấp độ khác
Cũng có trường hợp cách làm waterfall và ước tính theo đơn vị thời gian hoạt động tốt
Story point biểu thị độ phức tạp tương đối và mức độ bất định, chứ không phải đơn vị thời gian
Story point thực chất là một đơn vị thời gian gần đúng
Khi mới dùng Scrum, họ đã dùng Rally
Story point hữu ích khi thảo luận độ phức tạp của công việc, nhưng không phù hợp để đo vận tốc
Việc ước tính các dự án phát triển phần mềm một cách đáng tin cậy là rất khó
Ước tính theo đơn vị thời gian là cách tốt hơn