Làm thế nào nhanh nhẹn có thể được áp dụng cho các ứng dụng liên quan đến xử lý phức tạp?


12

Hầu hết các tài liệu về agile dường như thiên về các ứng dụng kinh doanh kiểu CRUD nơi người dùng nhận thức được khá nhiều về những gì đang diễn ra đằng sau hậu trường. (Điều đó tốt bởi vì hầu hết các mã được viết có lẽ thuộc về lớp này.)

Đối với loại ứng dụng này, mối quan hệ giữa các câu chuyện của người dùng (yêu cầu) và các tác vụ phát triển chủ yếu là đơn giản: Chỉ cần chia câu chuyện của người dùng thành một vài nhiệm vụ.

Nhưng có một loại ứng dụng khác mà hầu hết các mã phải xử lý việc xử lý phức tạp mà người dùng không thể nhìn thấy trực tiếp. Ví dụ sẽ là:

  • Trình biên dịch
  • Hệ thống phân tích hình ảnh của xe tự lái
  • Hệ thống mô phỏng dòng chất lỏng

Ở đây có thể thực sự khó khăn để liên quan đến các nhiệm vụ và câu chuyện người dùng. Có những kỹ thuật để khắc phục vấn đề này hay nó chỉ là thứ chúng ta phải chấp nhận và tận dụng nó một cách tốt nhất?


6
Không phải downvoter, nhưng tôi sẽ cho rằng đó là vì câu hỏi dựa trên tiền đề sai. IMO hệ thống phức tạp thậm chí còn phù hợp hơn cho một sự phát triển phong cách Agile nhờ thực tế là họ đang phức tạp hơn. Hệ thống càng phức tạp, càng có nhiều khả năng có các yêu cầu mới nổi. Agile SwDev được tạo ra để xử lý tốt hơn các yêu cầu mới nổi.
RubberDuck

4
@RubberDuck: "Tôi sẽ cho rằng đó là vì câu hỏi dựa trên tiền đề sai.": IMO, điều này sẽ thúc đẩy một câu trả lời trong đó tiền đề sai được giải thích, không phải là một downvote.
Giorgio

Việc sử dụng có hiểu logic hay không hoàn toàn không liên quan đến quy trình nhanh. Tùy thuộc vào nhóm để ánh xạ một câu chuyện của người dùng đến một triển khai VÀ để ước tính thời gian đó sẽ kéo dài bao lâu. Nếu nó phức tạp và / hoặc nhiều công việc, nhóm có thể chia câu chuyện thành những câu chuyện nhỏ hơn. Loại logic không quan trọng.
Martin Maat

2
"Hầu hết các tài liệu về agile dường như thiên về các ứng dụng kinh doanh kiểu CRUD" - Và hầu hết các tài liệu về Java dường như thiên về việc in chuỗi "Hello World" trên bảng điều khiển (hoặc tính toán thay thế số Fibonacci thứ n). Điều đó không có nghĩa đó là điều duy nhất Java tốt cho. Lý do là giống nhau trong cả hai trường hợp: thật khó để giải thích các ví dụ thực tế trong một bài đăng trên blog hoặc hướng dẫn. [Lưu ý: đây là một bình luận cường điệu cố gắng minh họa cơ sở cho tiền đề sai.]
Jörg W Mittag

1
Agile không yêu cầu các tác vụ và câu chuyện của người dùng. Bạn có thể sử dụng bất kỳ hình thức đặc điểm kỹ thuật nào bạn muốn. Điểm chung là sự linh hoạt.
Frank Hileman

Câu trả lời:


9

Điều này hóa ra dài hơn tôi dự định (nó đã bắt đầu như một bình luận), nhưng tôi hy vọng độ dài / chi tiết bổ sung là hữu ích và bạn thấy chúng hợp lý.

Agile không dành riêng cho ứng dụng CRUD

Hầu hết các tài liệu về agile dường như thiên về các ứng dụng kinh doanh kiểu CRUD nơi người dùng nhận thức được khá nhiều về những gì đang diễn ra đằng sau hậu trường. (Điều đó tốt bởi vì hầu hết các mã được viết có lẽ thuộc về lớp này.)

Tôi nghĩ điều này là bởi vì việc tạo ra các ví dụ dễ theo dõi kiểu này dễ dàng hơn, không thực sự vì phương pháp này nhắm vào các loại hệ thống đó. Nếu bạn tạo một ví dụ không dễ theo dõi, bạn có nguy cơ khiến người đọc bị mắc kẹt khi cố gắng hiểu ví dụ khi quan điểm của bạn được cho là dạy cho người đọc về các khái niệm nhanh.

Câu chuyện của người dùng! = Yêu cầu

Đối với loại ứng dụng này, mối quan hệ giữa các câu chuyện của người dùng (yêu cầu) và các tác vụ phát triển chủ yếu là đơn giản: Chỉ cần chia câu chuyện của người dùng thành một vài nhiệm vụ.

Một câu chuyện người dùng không giống như một yêu cầu. Đúng, có thể có một số trùng lặp tùy thuộc vào mức độ 'yêu cầu cấp cao', nhưng nhìn chung không giống nhau. Tôi có ấn tượng rằng bạn đang gặp phải một cạm bẫy rất nhiều người quản lý cũ của tôi đã rơi vào: nghĩ về những câu chuyện của người dùng chỉ đơn giản là từ đồng nghĩa với "yêu cầu", tương tự như khi người dùng SVN cố gắng chuyển sang Git, nhưng vẫn giữ suy nghĩ về SVN. (Sau đó, họ gặp vấn đề do các giả định bắt đầu tồi.)

IMHO, một điểm khác biệt chính giữa các yêu cầu và câu chuyện của người dùng là các yêu cầu chỉ định cụ thể, cách thức các thành phần hệ thống nhất định phải hành xử; chúng là các thông số kỹ thuật bao gồm đầu vào, đầu ra, giả định / điều kiện trước, các trường hợp ngoại lệ có thể xảy ra, v.v ... Chúng tập trung vào những gì hệ thống làm.

OTOH, các câu chuyện của người dùng tập trung vào kết quả mong đợi cho người dùng cuối mà không cố gắng tạo ra một đặc tả hành vi chi tiết cho các thành phần hệ thống. Họ tập trung vào trải nghiệm người dùng mong đợi .

Những gì tôi đã từng làm, và đây là một thực tế mà nhóm của tôi đã áp dụng, là chia nhỏ các câu chuyện của người dùng thành các nhiệm vụ. Nhiệm vụ của bạn có thể cụ thể hoặc mơ hồ như bạn muốn / cần chúng, nhưng chúng có nghĩa là các chỉ số tiến bộ của bạn cho công việc thực tế được thực hiện để đưa câu chuyện đến trạng thái hoàn thành.

Thí dụ

Tôi đại khái nhớ lại một nước Mỹ tôi đã làm việc cách đây nhiều năm, nơi người dùng cần tự gán các trường hợp thử nghiệm để mọi người trong nhóm nhận thức được những TC họ đang làm việc để tránh những nỗ lực trùng lặp; UI là một ứng dụng web (n nội bộ). Người dùng chỉ thấy một nút, nhưng câu chuyện được chia thành một số nhiệm vụ bao gồm một số chi tiết triển khai kỹ thuật, v.v.

Tầm nhìn của người dùng

Nhưng có một loại ứng dụng khác mà hầu hết các mã phải xử lý việc xử lý phức tạp mà người dùng không thể nhìn thấy trực tiếp.

Có thể làm cho nó hiển thị cho người dùng theo một cách nào đó?

Hãy xem xét một GPS. Khi bạn bỏ lỡ lượt của mình, bạn sẽ không thấy quy trình tính toán lại tuyến đường thực tế, nhưng người dùng sẽ nhận được một số phản hồi hữu ích (ví dụ: "Tính toán lại ...").

Trình biên dịch có thể hiển thị các cảnh báo hoặc lỗi hoặc bao gồm các cài đặt / tùy chọn mới trong GUI để người dùng thấy rằng một cái gì đó mới đã được thêm vào. Tôi nghĩ người dùng cho trình biên dịch sẽ là lập trình viên, phải không? Họ sẽ không thấy hỗ trợ cho một tiêu chuẩn mới được thêm vào chứ?

Mặc dù hỗ trợ một tiêu chuẩn mới có thể sẽ ở cấp tính năng và cần được chia thành các câu chuyện của người dùng, bạn có chắc chắn rằng, ít nhất là trong một số trường hợp, bạn không cố gắng sử dụng các câu chuyện khi bạn nên sử dụng các tính năng thay thế ?

Phân tích hình ảnh trong một chiếc xe hơi có thể được thực hiện theo cách cho phép người dùng biết rằng cơ hội kết thúc trong một vụ tai nạn xe hơi đã giảm. Ví dụ:

Là một hành khách trong một chiếc xe tự lái, tôi cần xác suất chiếc xe gây ra tai nạn bằng cách đâm vào một vật thể không được nhận dạng để càng gần 0 càng tốt, để tôi có thể đi lại an toàn hơn.

Ở Mỹ, ở cấp độ cao, những thứ bạn thường phải chỉ định bằng cách sử dụng kết hợp các yêu cầu chức năng và phi chức năng - bao gồm bảo mật, an toàn, v.v.

Tuy nhiên, một yêu cầu có thể là nhiều hơn về hệ thống; ví dụ:

Hàm abctrong thành phần Aphải giảm giá trị ngưỡng dung sai trong thuật toán so sánh ảnh để phát hiện tốt hơn các đối tượng di chuyển chậm.

Đối với tôi, đây sẽ dễ dàng là một nhiệm vụ trong câu chuyện người dùng mà tôi đã đề cập ở trên, có tiêu đề như: Giảm dung sai trong chức năngA.abc và sau đó bao gồm các chi tiết có liên quan khác trong đó.

Đối với một hệ thống mô phỏng chất lỏng, bạn thậm chí có thể có một thanh tiến trình cung cấp phản hồi về các tác vụ nền mà hệ thống đang thực hiện, nếu điều này có ý nghĩa. (Luôn có cách để thông báo cho người dùng về một cái gì đó, mặc dù bạn có thể muốn tránh bị spam.)

Tôi không biết đủ về các tên miền cụ thể mà bạn đã đề cập để đưa ra các ví dụ tốt hơn và / hoặc thực tế hơn, nhưng nếu có một sự loại bỏ ở đây là bạn có thể sử dụng các cách khác nhau để cung cấp phản hồi của người dùng về thứ gì đó ít nhìn thấy hơn hệ thống có thể đang hoạt động, tức là có thể có những cách để làm cho những thứ vô hình trở nên rõ ràng hơn một chút. (Ngay cả khi nó tập trung vào việc viết một tập các ghi chú phát hành, tài liệu cho thấy hiệu suất của hệ thống nhanh hơn bao nhiêu do nỗ lực của bạn, v.v.)

Mối quan hệ giữa Câu chuyện và Nhiệm vụ

Ở đây có thể thực sự khó khăn để liên quan đến các nhiệm vụ và câu chuyện người dùng.

Cách tiếp cận của chúng tôi là để giữ cho câu chuyện người sử dụng tập trung vào những gì được yêu cầu là, tại sao nó đã được thực hiện, và những điều cần thiết để được thực sự để xem xét Mỹ "thực hiện". Cách thức luôn được đưa ra khỏi Hoa Kỳ và để lại cho (các) nhà phát triển.

(Các) nhà phát triển sẽ chia nhỏ vấn đề được mô tả ở Hoa Kỳ thành một tập hợp các nhiệm vụ mà họ sẽ làm việc.

Tôi đang nói điều này như một người, phần lớn, đã lập trình phía máy chủ phía sau, có lẽ là "vô hình" như bạn có thể nhận được cho người dùng cuối.

Tùy thuộc vào những gì tôi cần làm, đôi khi tôi sử dụng AJAX để hiển thị hình động / gif "tải ..." đơn giản để người dùng biết rằng họ cần đợi một chút để hoàn thành một cái gì đó khác mà không gây ấn tượng sai. Đôi khi nó đơn giản như thế này. Một nhiệm vụ cho việc này sẽ là phù hợp.

Mô hình, thực hành và kinh nghiệm khác nhau

Có những kỹ thuật để khắc phục vấn đề này hay nó chỉ là thứ chúng ta phải chấp nhận và tận dụng nó một cách tốt nhất?

Ngoài việc chấp nhận thay đổi mô hình, thực hành và tích lũy kinh nghiệm, có lẽ không còn nhiều điều để nói. Tôi thường thấy mọi người cố gắng thực hiện các phím tắt trong suốt quá trình. Tôi khuyên bạn nên chống lại điều đó, đặc biệt nếu bạn đang bắt đầu. Khi bạn có thêm kinh nghiệm, bạn có thể cho phép một số linh hoạt, nhưng tránh làm suy yếu chính mình.

Theo cách diễn đạt trước đó của bạn, bạn vẫn nghĩ về những câu chuyện như thể chúng là "yêu cầu được đổi tên", mà tôi nghĩ là một giả định sai. Tôi nghĩ rằng đây là một triệu chứng của một vấn đề sâu sắc hơn về sự khác biệt cơ bản giữa các phương pháp Agile và không Agile.

Thứ hai, tôi nghĩ bạn nên chấp nhận rằng nhanh nhẹn là một sự thay đổi mô hình so với thác nước, điều đó có nghĩa là, trong khi quá trình có các mục tiêu tương tự, họ đi về nó theo những cách rất khác nhau. (Hãy nghĩ SVN vs Git, nếu điều đó có ích.)

Cố gắng cải thiện sự hiểu biết hiện tại của bạn về sự khác biệt về khái niệm giữa các yêu cầu và câu chuyện của người dùng và chấp nhận chúng không giống nhau.

Học hỏi từ Sprints của bạn - Hồi tưởng

Điều tôi không thể nhấn mạnh đủ là sự hồi tưởng giữa Scrum Master và Nhà phát triển ở cuối mỗi lần chạy nước rút. Đó là nơi họ thảo luận về những điều mà "diễn ra tốt đẹp" hoặc "không suôn sẻ" một cách trung thực / minh bạch, và những gì có thể làm được những thay đổi sẽ được thực hiện cho chạy nước rút tiếp theo để giải quyết "không suôn sẻ" điểm .

Điều đó cho phép chúng tôi thích nghi và thậm chí học hỏi kinh nghiệm của nhau, và trước khi chúng tôi biết điều đó, chúng tôi đã cải thiện đáng kể khi được đo bằng sự thống nhất chung về vận tốc của đội chúng tôi.


"Câu chuyện của người dùng! = Yêu cầu": Tôi không có ý nói rằng hai từ này là từ đồng nghĩa. Không phải mọi yêu cầu là một câu chuyện người dùng. Nhưng tôi nghĩ rằng tất cả các câu chuyện của người dùng là yêu cầu. Tôi xem các yêu cầu như một cấu trúc phân cấp trong đó các câu chuyện của người dùng là một mức độ chi tiết cụ thể. Bạn có đồng ý không
Frank Puffer

@FrankPuffer Tôi nghĩ rằng việc xem các câu chuyện của người dùng như thể chúng là một cấp độ khác nhau trong hệ thống phân cấp các yêu cầu về cơ bản là trộn lẫn các khái niệm khác nhau. Về phía Agile, một hệ thống phân cấp trông giống như: Chủ đề >> Sử thi >> Tính năng >> Câu chuyện của người dùng >> Nhiệm vụ . Các yêu cầu thường được chia thành các yêu cầu chức năng và phi chức năng theo cách tiếp cận Thác truyền thống hơn, nhưng tôi không bắt gặp một hệ thống phân cấp thực tế; những gì đã nói, tôi sẽ không ngạc nhiên nếu ai đó một cách đệ quy phá vỡ một yêu cầu vào -requirements "phụ" nhỏ hơn. Trong mọi trường hợp, bạn đang trộn các khái niệm khác nhau.
code_dredd

Các hệ thống quản lý yêu cầu như PTC Integrity coi các yêu cầu như một hệ thống phân cấp. Điều này có thể là một lợi thế khi ánh xạ các yêu cầu đến một tài liệu đặc tả.
Frank Puffer

@FrankPuffer Vâng, đó là lý do tại sao tôi nói tôi sẽ không ngạc nhiên. Điều đó nói rằng, tôi tự hỏi câu trả lời của tôi đã làm rõ bất cứ điều gì cho bạn. Sự tương tự SVN vs Git có hữu ích không? (Giả sử bạn quen thuộc với cả hai hệ thống, có vẻ hợp lý trong bối cảnh phát triển phần mềm.)
code_dredd

Ok, tôi đã đọc sai "sẽ" như "sẽ". Và vâng, tôi thấy câu trả lời của bạn rất hữu ích và có thể sẽ chấp nhận nó. Tôi có lẽ chỉ cần một chút thời gian để làm quen với ý tưởng không xem các câu chuyện của người dùng là yêu cầu.
Frank Puffer

4

Nguyên tắc Agile chắc chắn có thể được áp dụng trong những trường hợp này. Làm sao?

  • Trình biên dịch có thể có các tính năng ngôn ngữ mới được thêm vào sau trong các câu chuyện người dùng riêng biệt
  • Hệ thống phân tích hình ảnh có thể có các tính năng mới được thêm vào dưới dạng phân loại hình ảnh khác nhau
  • Các hệ thống mô phỏng dòng chất lỏng có thể tính đến các khía cạnh mô hình khác nhau trong các mô phỏng của chúng

Bạn không cần phải ăn toàn bộ con voi trong một miếng. Agile chỉ yêu cầu bạn cho thấy bạn đã làm sạch đĩa của mình trước khi phục vụ voi tiếp theo.


Tuy nhiên, tôi nghĩ rằng một hoặc nhiều câu chuyện của người dùng sẽ vẫn yêu cầu nhiều chức năng cơ bản. Họ thường sẽ không phù hợp với một lần chạy nước rút. Làm thế nào điều này nên được xử lý?
Frank Puffer

1
Bạn đo lường sự thành công với các ứng dụng có thể chạy được mà khách hàng có thể kiểm tra, xem hoặc chạm vào. Nếu đó là trường hợp, cung cấp cho họ một món đồ chơi tạo ra cảm giác tiến bộ theo cách đó. Chẳng hạn, có lẽ bạn không thể phát hành một chiếc xe tự lái trong lần chạy nước rút đầu tiên, nhưng bạn có thể tạo một bản demo về cách mà thuật toán của bạn làm người khác. Sau đó, làm thế nào nó điều chỉnh tín hiệu và động vật. Sau này, nó đo khoảng cách, kích cỡ, v.v ... Chiếc xe tự lái ở rất xa, rất xa trong một cuộc đua nước rút từ xa mà ai biết nếu nó sẽ xảy ra.
Laiv

2
@Laiv: Điều đó sẽ rất tuyệt nhưng tôi không chắc nó có hoạt động không. Trong parctice, sau vài lần chạy nước rút đầu tiên, phần mềm sẽ không thể làm bất cứ điều gì khách hàng có thể liên quan. Bạn sẽ có tiến bộ kỹ thuật nhưng sẽ rất khó, nếu không nói là không thể, để truyền đạt nó tới khách hàng.
Frank Puffer

2
Tại sao? Bởi vì nó được viết trên Stone bởi một người nước ngoài cho dự án của bạn? Tôi mong Agile tự thích nghi với nhu cầu của mình chứ không phải khác. Nếu tôi nói tôi có thể dạy bạn trượt băng trong 4 tuần và một lần vào ngày 5 bạn vẫn không đứng vững, điều đó có nghĩa là bạn không học trượt băng? Hay chỉ là nó sẽ đưa bạn lâu hơn một chút? Bản tuyên ngôn Agile không được viết trên đá cũng như các quy tắc của Scrum là các Điều răn.
Laiv

2
Điểm của các lần chạy nước rút là làm cho khách hàng của bạn trở thành một phần của các bước lặp của bạn. Để giao tiếp với họ bằng cách sử dụng mã được giao. Không kế hoạch và lời hứa. Nó đòi hỏi bạn phải tập trung vào việc phá vỡ vấn đề. Nó không yêu cầu rằng điều đầu tiên bạn cung cấp được đặt trong đá. Nó yêu cầu bạn chứng minh rằng bạn đáng để trả tiền cho mỗi lần chạy nước rút.
candied_orange

1

Tôi thấy rằng những người tuân thủ nghiêm ngặt các câu chuyện của người dùng sẽ chỉ tham gia vào một bài tập rất ngớ ngẩn khi đưa ra những cách thức rất xa trong đó những thay đổi kỹ thuật ở phía sau tác động đến người dùng (dĩ nhiên không biết đến người dùng vì họ chỉ là một người ngây thơ người dùng và bạn đang nói về những thay đổi phức tạp trong đường ống phân tích dữ liệu của bạn hoặc một cái gì đó thuộc loại đó) hoặc họ sẽ hoàn toàn mất mát vì "làm thế nào chúng ta có thể tổ chức công việc này!?!"

Tôi nghĩ rằng giải pháp rõ ràng là phải thực dụng hơn. Nếu bản chất công việc rất kỹ thuật và không có tác động đặc biệt đáng chú ý đến người dùng, thì đừng mất ngủ khi cố gắng giải thích nó hoạt động như thế nào. Chỉ cần chọn một cách rõ ràng và đơn giản trong đó nó có thể mang lại lợi ích cho người dùng và sau đó định hướng câu chuyện xung quanh các chi tiết cần thiết cho các nhà phát triển để thực hiện công việc của họ. Tôi thấy vô cùng bực bội khi một PO khăng khăng không có thông tin kỹ thuật trong câu chuyện khi nó thực sự cần thiết. Nó chỉ không phải là một quan điểm rất toàn vẹn về những gì mà tạo tác (câu chuyện) thực sự là. Giống như họ nghĩ rằng nó tồn tại chỉ dành cho họ, trong hầu hết các trường hợp, điều đó cũng quan trọng đối với các kỹ sư.

Đối với hầu hết các nhiệm vụ kỹ thuật này, có một số trái cây treo thấp liên quan đến tác động của người dùng, cho dù đó là cải thiện hiệu quả để việc giao hàng trong tương lai sẽ nhanh hơn, cải thiện hiệu suất, độ tin cậy. Chúng không thực sự là những gì mọi người có xu hướng nghĩ khi họ nghĩ về 'câu chuyện của người dùng' nhưng nếu doanh nghiệp muốn hiểu lý do tại sao bạn lại mắc nợ kỹ thuật hoặc một cái gì đó cho hiệu quả đó, thì những giải thích này thường là đơn giản nhất để cung cấp.

tl; dr đừng để một cựu sinh viên làm cho cuộc sống của bạn thêm khó khăn đơn giản chỉ vì chúng quá nhiều hình vuông để thích nghi. Rốt cuộc là một khái niệm cốt lõi của nhanh nhẹn. Tuân thủ nghiêm ngặt Scrum hoặc Agile thường bay vào mặt hoặc thực dụng và thực tế (những gì thực sự hoạt động tốt nhất).


Tôi hoàn toàn linh hoạt, nhưng thật lòng mà nói, người dùng không đặc biệt quan tâm đến các chi tiết kỹ thuật, miễn là câu chuyện của họ được thỏa mãn. Bạn không cần phải "nhanh nhẹn" để có những yêu cầu tốt; và theo các yêu cầu tốt, ý tôi là các yêu cầu được kèm theo một bài kiểm tra chấp nhận rõ ràng chứng minh yêu cầu được thỏa mãn. Những người "tham gia vào các bài tập rất ngớ ngẩn" rõ ràng đang làm sai, nhưng điều đó không có nghĩa là họ đang theo một số khái niệm về "scrum nghiêm ngặt".
Robert Harvey

@RobertHarvey Tôi đồng ý các chi tiết kỹ thuật không liên quan đến người dùng nhưng quan điểm của tôi là các tạo phẩm chứa các câu chuyện của người dùng có mục đích rộng hơn là chỉ truyền đạt cách mọi thứ hoạt động cho người dùng (hoặc ít nhất là chúng nên). Làm thế nào để thực thi các yêu cầu liên quan đến kiến ​​trúc, khả năng mở rộng, hiệu suất và như vậy nếu họ viết các câu chuyện thuần túy của người dùng? Thực hiện phương pháp 'câu chuyện người dùng' thuần túy khuyến khích các nhà phát triển viết mã chất lượng kém. Và không phải người dùng đang đọc 'câu chuyện của người dùng', đó là các nhà phát triển và qa, thật ngu ngốc khi cố tình loại trừ thông tin có liên quan vì đó là kỹ thuật.
evanmcdonnal

0

Tôi nghĩ vấn đề là ở chỗ mang đến cho người dùng những câu chuyện mà họ không có. Scrum sử dụng thuật ngữ PBI hoặc Product Backlog Item, mà tôi nghĩ là tốt hơn nhiều. PBI thường sẽ theo định dạng câu chuyện của người dùng, ví dụ: bạn có thể có PBI như "Người đăng ký sẽ có thể xem chi tiết đăng ký của họ", nhưng bạn cũng có thể dễ dàng có PBI như "Tạo thủ tục được lưu trữ để lấy chi tiết người đăng ký ".

Câu chuyện của người dùng là một công cụ . Chúng giúp bạn hình thành các mô tả tính năng và yêu cầu dựa trên việc đặt mình vào vị trí của người dùng. Nhưng, giống như cờ lê là vô dụng khi bạn cần treo ảnh, có những lúc bạn có thể không cần câu chuyện của người dùng.

Điều đó nói rằng, nhiều đội thực sự chỉ chơi nhanh và lỏng lẻo với phần "người dùng". Họ có thể có "câu chuyện người dùng" như "Là một nhà phát triển, tôi cần có thể gọi một thủ tục được lưu trữ để có được thông tin chi tiết về người đăng ký", về cơ bản là "câu chuyện của nhà phát triển". Đây là một tùy chọn hợp lệ như nhau, nhưng cá nhân tôi, miễn là bạn có thể mô tả những gì cần phải làm và đưa ra một bộ tiêu chí chấp nhận, hầu như không có vấn đề gì nếu bạn có câu chuyện người dùng thực sự đằng sau nó hay không.


1
Tôi không đồng ý với điều này trừ những trường hợp rất lạ và hiếm. Trong Scrum, CÁCH là mục đích của nhóm phát triển, không phải chủ sở hữu sản phẩm. Tuy nhiên, chủ sở hữu sản phẩm phải chịu trách nhiệm về PBIs. Vì vậy, một PBI như "tạo một thủ tục được lưu trữ" sẽ lấy đi quyền của nhóm phát triển để chọn CÁCH. PBI, cho dù câu chuyện của người dùng hay không, nên giải thích giá trị doanh nghiệp là gì khi thực hiện PBI. Tạo một thủ tục được lưu trữ không phải là về giá trị doanh nghiệp, đó là về chi tiết triển khai.
RibaldEddie

Đó không phải là vấn đề. Đó chỉ là một ví dụ. Bạn chỉ có thể thay đổi "thủ tục được lưu trữ" thành một cái gì đó chung chung như "một cách". Vấn đề là nó không nhất thiết phải là một câu chuyện của người dùng.
Chris Pratt

toàn bộ quan điểm của một ví dụ là trở thành một tấm gương. Nếu ví dụ của bạn "không phải là điểm" thì điểm của ví dụ là gì ??
RibaldEddie

-3

Những loại ứng dụng này chính xác là những ứng dụng có chuyên môn khác nhau và sẽ phát triển hơn nữa. Các thành viên trong nhóm sẽ có do giáo dục khác nhau, các dự án sở thích khác nhau và kinh nghiệm làm việc trong quá khứ khác nhau về các kỹ năng khác nhau. Hơn nữa, nếu ai đó phát triển một đoạn mã cụ thể, nhà phát triển có thể được kỳ vọng là người hiểu mã tốt nhất. Vì vậy, sẽ có ý nghĩa khi giao các nhiệm vụ phát triển hơn nữa liên quan đến cùng một đoạn mã cho cùng một nhà phát triển.

Trong quy trình nhanh nhẹn phổ biến nhất, Scrum, có kế hoạch chơi bài trong đó mỗi nhiệm vụ được chỉ định một mức độ khó. Mức độ khó không phụ thuộc vào người đang thực hiện nhiệm vụ đó theo quy trình. Sau đó, trong giai đoạn nước rút, mọi người được coi là đồng nhất để mỗi người được mong đợi có thể chọn từng nhiệm vụ và thực hiện nó. Trong CRUD đơn giản như các dự án, giả định này được giữ vững. Nhưng trong các dự án rất phức tạp và khó khăn, chắc chắn là không.

Tôi sẽ không sử dụng một quy trình nhanh cho các loại dự án này. Sự lựa chọn tốt nhất của bạn là tránh mọi quy trình chính thức và chỉ cần sử dụng quản lý dự án tốt. Khi quyết định ai thực hiện một tính năng cụ thể, hãy xem xét ai có kỹ năng tốt nhất cần thiết cho tính năng này và kiến ​​thức tốt nhất về mã hiện có. Không có quá trình là cần thiết cho việc này. Bạn có thể sẽ muốn viết tài liệu thiết kế tốt cho tất cả các tính năng và cập nhật chúng. Lưu ý rằng tôi không quảng cáo một mô hình giống như thác nước ở đây: các tài liệu thiết kế sẽ không được viết khi bắt đầu dự án; thay vào đó bạn sẽ viết các tài liệu thiết kế mới vì các tính năng mới là cần thiết.


5
Không thực sự liên quan đến câu hỏi của tôi, nhưng luôn để người có kỹ năng tốt nhất thực hiện một tính năng có thể gây nguy hiểm. Nó cản trở sự lan truyền kiến ​​thức trong đội. Nếu bảo trì là cần thiết và chuyên gia đã rời khỏi nhóm hoặc tạm thời không có, bạn sẽ gặp rắc rối.
Frank Puffer

@FrankPuffer Đối với một số loại hệ thống bạn đã liệt kê, ví dụ: ô tô tự lái, nếu chuyên gia rời khỏi đội bạn đang gặp rắc rối. Giai đoạn = Stage. Mặc dù có lẽ không phải là trường hợp mã hóa nên được tập trung hóa, nhưng cũng hoàn toàn không hợp lý khi giả định một "sự truyền bá kiến ​​thức" đầy đủ để cho phép sự thay thế của chuyên gia trong bất kỳ quy mô thời gian ngắn hợp lý nào. Đây là những người sẽ dành hơn một thập kỷ để nghiên cứu vấn đề và có lẽ đang ở gần đầu lĩnh vực của họ về vấn đề này. Bạn có thể sẽ cần nhiều người như thế này với các kỹ năng khác nhau. Những dự án như vậy vốn đã có rủi ro.
Derek Elkins rời SE
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.