Nhiều câu chuyện của người dùng chia sẻ cùng một nhiệm vụ kỹ thuật: phải làm gì?


8

Giới thiệu một chút về trường hợp của tôi:

Là một phần của sản phẩm lớn hơn, nhóm của tôi được yêu cầu hiện thực hóa một IDE nhỏ cho DSL. Người dùng sản phẩm này sẽ có thể thực hiện các cuộc gọi chức năng trong mã và chúng tôi cũng được yêu cầu cung cấp một số thư viện chức năng hữu ích. Nhóm, cùng với PO, đưa lên tường một số câu chuyện người dùng nhất định liên quan đến các thư viện khác nhau cho người dùng IDE. Khi ước tính câu chuyện đầu tiên, nhóm đã quyết định rằng cơ chế gọi hàm sẽ là một nhiệm vụ hấp dẫn nhưng không hoàn toàn rõ ràng, vì vậy ước tính cho câu chuyện người dùng đó đã tăng từ 3 đơn giản lên 5 nguy hiểm hơn.

Đến với vấn đề:

Sau đó, nhóm chuyển sang các câu chuyện của người dùng liên quan đến các thư viện khác, thực tế là 10 câu chuyện và thêm 2 điểm " cơ chế gọi chức năng " vào mỗi câu chuyện của người dùng đó. Điều này ngay lập tức nâng tổng số điểm cho sản phẩm 20 điểm! Mọi người trong nhóm đều biết rằng mỗi câu chuyện của người dùng có thể được PO chọn cho lần lặp tiếp theo bất cứ lúc nào, vì vậy chúng tôi không nên cách ly phần đó trong một câu chuyện của người dùng, nhưng 20 điểm đó cảm thấy vô cùng phi thực tế!

Tôi đã đề xuất một giải pháp, nhưng tôi hoàn toàn không hài lòng:

Chúng tôi đã tạo ra một "Câu chuyện thiết kế" và đặt 2 điểm khó chịu lên trên nó. Tuy nhiên, khi chúng tôi nhận ra và chứng minh điều đó với khách hàng của mình, chúng tôi không thể hiển thị điều gì đó thực sự có giá trị cho họ về câu chuyện đó!

Vấn đề ở đây là liệu chúng ta có nên bỏ qua nguyên tắc có các câu chuyện người dùng bị cô lập (không có bất kỳ sự phụ thuộc nào giữa chúng).

Bạn sẽ làm gì, hoặc thậm chí tốt hơn những gì bạn đã làm, trong những tình huống như thế này?


(một ghi chú nhỏ: theo gợi ý tôi đã chuyển câu hỏi này từ stackoverflow)


Theo IDE, bạn có nghĩa là API? Nếu không, tôi gặp khó khăn để tìm ra những gì bạn đang nói.
Steven Evers

Đó là một IDE ( en.wikipedia.org/wiki/Integrated_development_en môi trường ) nơi người dùng có thể nhập mã, biên dịch mã và gỡ lỗi. Một tính năng quan trọng của ngôn ngữ là khả năng gọi các chức năng do chúng tôi cung cấp (như "v = sin (x)").
Marco Ciambrone

Câu trả lời:


6

Nếu bạn cần ước tính một số câu chuyện của người dùng có một số yếu tố chung, nhưng bạn chưa biết những câu chuyện này sẽ được thực hiện theo thứ tự nào, thì tôi sẽ chia các nhiệm vụ tạo thành mỗi câu chuyện thành ba nhóm:

  1. Các tác vụ thông thường, cần một lần : Các tác vụ xảy ra cho nhiều câu chuyện, nhưng chỉ thực sự được thực hiện một lần cho câu chuyện đầu tiên. Các cơ chế gọi chức năng được đề cập có thể sẽ nằm trong thể loại này.
  2. Các tác vụ phổ biến, lặp đi lặp lại : Các tác vụ xảy ra trong nhiều câu chuyện và phải được thực hiện một lần nữa cho mỗi câu chuyện.
  3. Nhiệm vụ cụ thể : Nhiệm vụ cụ thể cho một câu chuyện cụ thể.

Sau đó, bạn ước tính từng nhiệm vụ, trong đó các nhiệm vụ chung chỉ nên được ước tính một lần.

Trong phần trình bày cho khách hàng / PO, tôi sẽ đưa ra hai ước tính cho mỗi câu chuyện: Một với tất cả các nhiệm vụ "chung, cần một lần" được bao gồm và một với chúng bị loại trừ.
Chỉ cần giữ một kế toán chi tiết của các nhiệm vụ, phân loại và ước tính của họ trong tay nếu khách hàng muốn thông tin chi tiết hơn về sự khác biệt giữa các ước tính. Bản thân các nhiệm vụ không thể thương lượng, nhưng biết về chúng có thể giúp khách hàng / PO, đặc biệt nếu tập hợp các nhiệm vụ chung không giống nhau cho mỗi câu chuyện.


1
+1: Tại thời điểm hồi cứu, bạn sẽ ước tính lại tất cả các câu chuyện vì mã chung đã được triển khai.
S.Lott

Tôi nghĩ rằng tôi đã nắm bắt được quan điểm của bạn, tuy nhiên trong trường hợp này, chúng tôi đã quyết định tránh phân tích sâu hơn và ủng hộ việc ước tính nhanh hơn các câu chuyện, mà không trích xuất tất cả các nhiệm vụ. Chúng tôi thực sự đã làm một cái gì đó tương tự như đề xuất của bạn, bằng cách trích xuất từ ​​những câu chuyện một "câu chuyện chung", giống như một nhóm "nhiệm vụ chung, cần một lần". Câu trả lời của bạn thực sự đi xa hơn nữa và sẽ rất hữu ích, tuy nhiên tôi vẫn thích một ước lượng sơ bộ, bất cứ khi nào có thể, thay vì phân tách nhiệm vụ, tôi sẽ để lại cho kế hoạch lặp. - @ S.Lott: cách tiếp cận này sẽ để lại 20 điểm "khó chịu" đó ..
Marco Ciambrone

@ d3prok: 20 điểm "gây phiền nhiễu" là một yếu tố tạm thời của phương pháp bạn đã chọn. Chúng không thực sự tồn tại và chúng biến mất một khi nhiệm vụ chung được thực hiện.
S.Lott

4

Tại sao phần mềm là khó.

Chúng tôi đã tạo ra một "Câu chuyện thiết kế" và đặt 2 điểm khó chịu lên trên nó. Tuy nhiên, khi chúng tôi nhận ra và chứng minh điều đó với khách hàng của mình, chúng tôi không thể hiển thị điều gì đó thực sự có giá trị cho họ về câu chuyện đó!

Chính xác. Câu chuyện người dùng đơn giản SCRUM là đơn giản. Đôi khi, phần mềm thực sự đủ phức tạp để phương pháp đơn giản không hoạt động. Điều này không nên đến như bất kỳ loại bất ngờ.

Vấn đề ở đây là liệu chúng ta có nên bỏ qua nguyên tắc có các câu chuyện người dùng bị cô lập (không có bất kỳ sự phụ thuộc nào giữa chúng).

Lựa chọn của bạn là gì? Quá giá mỗi câu chuyện người dùng vì mỗi người có một chi phí một lần ẩn? Điều đó cũng ngớ ngẩn không kém.

Đúng. Bạn phải bước ra khỏi sự đơn giản.

Bạn sẽ làm gì, hoặc thậm chí tốt hơn những gì bạn đã làm, trong những tình huống như thế này?

Bước ra khỏi sự đơn giản. Có những khoản đầu tư một lần làm cho một nhóm các câu chuyện ít tốn kém hơn. Bạn phải thực sự nói chuyện với mọi người về kiến ​​trúc thay vì giả vờ rằng sự tương tác duy nhất của bạn là một danh sách các câu chuyện sẽ được xây dựng.

Agile có nghĩa là bạn phải thực sự nói chuyện với PO và khách hàng.

Agile có nghĩa là một quy trình đơn giản không thể - và sẽ không - hoạt động.


Vì vậy, những gì chúng ta nên làm là chỉ cho khách hàng PO + của mình rằng trên đường hoàn thành mỗi 20 câu chuyện của người dùng đó (giá trị thực / tiền cho họ) đã có một bước kỹ thuật cần khắc phục. Điều này sẽ giúp họ nhận ra tầm quan trọng của một "câu chuyện thiết kế" như vậy và do đó đặt họ vào vị trí tốt hơn để ưu tiên công việc đó. Tôi đã hiểu rõ chưa?
Marco Ciambrone

@ d3prok: "để họ nhận ra tầm quan trọng của một" câu chuyện thiết kế "như vậy và do đó đặt họ vào vị trí tốt hơn để ưu tiên công việc đó" Có. Các phương thức nhanh như Scrum yêu cầu bạn nói chuyện với PO và khách hàng. Cuộc trò chuyện. Thảo luận. Tương tác. Một quy trình chính thức không suy nghĩ về 'ước tính câu chuyện-ưu tiên xây dựng' là điều chính xác mà bạn cần phải tránh làm.
S.Lott

Đây là một câu trả lời rất hữu ích, tôi muốn cho bạn một điểm nhưng tiếc là danh tiếng của tôi quá thấp ở đây đối với các lập trình viên ... Cảm ơn S.Lott!
Marco Ciambrone

1

Bạn biết rằng bạn chỉ phải thực hiện công việc làm thêm một lần, do đó, việc đưa cùng một công việc làm thêm vào 5 câu chuyện không có ý nghĩa gì. Nếu bạn không muốn một câu chuyện thiết kế mà người dùng không thể nhìn thấy, thì điều tốt nhất nên làm là tiếp tục, ngay bây giờ và chọn một trong những điều phụ thuộc vào công việc thiết kế đó và nói rằng đó phải là đầu tiên và thêm những điểm đó vào đó. Ghi chú về những câu chuyện khác mà chúng phải đến sau, và nếu vì lý do nào đó, bạn thay đổi suy nghĩ, bạn luôn có thể di chuyển các điểm xung quanh.


1
Tôi sẽ cảnh báo không thêm tác vụ được chia sẻ vào một tính năng mà bạn chọn (ngẫu nhiên hoặc không) là nhiệm vụ "đầu tiên". Điều này có thể khiến PO / khách hàng quyết định bỏ / giảm giá trị tính năng (đắt hơn), có lợi cho các tính năng khác (bây giờ rẻ hơn nhiều). Điều này bây giờ sẽ không phải là một cái gì đó bạn có thể sống theo. Thay vào đó, tôi khuyên bạn nên làm theo câu trả lời từ @Bart van Ingen Schenau và S.Lott ở trên.
Svend Hansen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.