Có sai khi sử dụng Agile khi yêu cầu của khách hàng không thay đổi gì không?


12

Tôi đã thấy rất nhiều bài đăng gần đây nói rằng một trong những lý do chính tại sao Agile được sử dụng là vì khách hàng thường thay đổi các yêu cầu.

Tuy nhiên, giả sử khách hàng không thay đổi yêu cầu thường xuyên . Trên thực tế, các khách hàng có các yêu cầu vững chắc mặc dù có thể hơi mơ hồ (nhưng không có gì mơ hồ một cách vô lý), nhưng dù sao tôi cũng sử dụng Agile.

Lý do tại sao tôi sử dụng Agile là vì phần mềm đủ phức tạp để có những chi tiết, vấn đề mà tôi sẽ không nhận ra cho đến khi tôi thực sự phải đối mặt với chúng. Tôi có thể thực hiện một phương pháp lập kế hoạch nặng quy mô đầy đủ như thác nước, nhưng sau đó sẽ mất vài tháng để hoàn thiện tất cả các thiết kế cấp cao và chữ ký mã hóa cấp thấp. Có một thiết kế kiến ​​trúc cố định rất cụ thể cho hệ thống mặc dù.

Câu hỏi của tôi là: Điều này sẽ được coi là xấu, mã hóa cao bồi, chống mẫu, vv ..? Chúng ta phải sử dụng thác nước và lập kế hoạch càng nhiều càng tốt chi tiết trước khi chúng ta bắt đầu viết mã khi các yêu cầu ổn định thay vì điều này 'hãy làm điều đó' trong Agile?

EDIT: Điểm chính ở đây là: chúng tôi KHÔNG THỂ đổ lỗi cho khách hàng thay đổi yêu cầu. Giả sử khách hàng chỉ cho chúng tôi một vấn đề rất cụ thể, cung cấp cho chúng tôi danh sách mong muốn với các chi tiết rất hợp lý và để chúng tôi yên (ví dụ: khách hàng có những việc hữu ích của riêng họ để làm, đừng làm phiền họ nữa. kết thúc khi bạn có một nguyên mẫu làm việc tối thiểu). Sẽ là sai khi sử dụng Agile trong kịch bản này?


2
@randomA: thực sự, IMHO bạn không bao giờ nên thử thác nước thuần túy nếu bạn muốn tạo ra một sản phẩm hoạt động cần nhiều nỗ lực hơn một tuần.
Doc Brown

10
Vui lòng cho tôi khách hàng của bạn
razethestray 16/07/14

7
Tôi sẽ cung cấp gấp 2 lần cho khách hàng của bạn so với @razethestray
Euphoric 16/07/14

2
Nếu khách hàng của bạn không muốn "bị làm phiền hàng ngày", hãy học cách giao tiếp hiệu quả với anh ấy. Ví dụ, thay vì đưa ra các giả định (có thể sai) về các điểm không rõ ràng, hãy thu thập các câu hỏi trong danh sách và gửi cho khách hàng của bạn danh sách theo định kỳ. Thậm chí tốt hơn: sắp xếp một cuộc họp để thảo luận về các điểm. Nếu các yêu cầu rõ ràng đến mức danh sách vẫn trống: không có cuộc họp (nhưng tôi đoán nó sẽ không). Nếu bạn bắt đầu thực hiện các giả định sai trong phần mềm của mình, bạn sẽ phải nỗ lực nhiều hơn để thay đổi điều đó sau này.
Doc Brown

3
@randomA: bạn có thể giữ cho khách hàng của mình hạnh phúc trong một thời gian bằng cách không hỏi bất cứ điều gì, và sau đó, khi bạn cung cấp điều cuối cùng, làm cho anh ta rất không hài lòng vì hóa ra bạn đã bỏ lỡ các yêu cầu đến mức bạn có thể vứt bỏ chương trình của mình và bắt đầu ngay từ đầu (mà khách hàng sẽ không sẵn sàng trả). Hoặc bạn làm cho anh ta một chút nhưng không vui chút nào đó bằng cách yêu cầu anh ta đủ để xây dựng chương trình chính xác, nhưng cuối cùng rất vui khi chương trình sẽ thực sự làm những gì anh ta muốn và anh ta đã nhận được những gì anh ta đã trả. Chọn sự lựa chọn của bạn.
Doc Brown

Câu trả lời:


16

Điều này sẽ được coi là xấu, mã hóa cao bồi, chống mẫu.

Câu trả lời ngắn gọn: không. Làm "nhanh nhẹn" một cách chính xác không có nghĩa là "không có kế hoạch", nó có nghĩa là không bao quát mọi thứ.

một trong những lý do chính tại sao Agile được sử dụng là vì khách hàng thường thay đổi các yêu cầu.

Đó là một tuyên bố đơn giản. "Thay đổi yêu cầu" cũng là về cách hiểu của nhóm về các yêu cầu thay đổi. Và đó là về cách các ưu tiên của khách hàng về yêu cầu thay đổi khi anh ta thực sự thấy một vài bản phát hành phần mềm.

Trên thực tế, "nhanh nhẹn" hoạt động IMHO chính xác nhất trong tình huống bạn mô tả - khách hàng có kiến ​​thức tốt về các yêu cầu chung của anh ấy, bạn có thể viết một kế hoạch chung từ đó, điền vào hồ sơ tồn đọng của bạn với nhiều "câu chuyện người dùng", và đã đủ thông tin để chọn kiến ​​trúc hệ thống phù hợp. Việc lặp lại một chiến lược phát triển nhanh sau đó sẽ giúp làm cho "các yêu cầu mơ hồ" chính xác hơn, với rất nhiều phản hồi nếu bạn vẫn đang đi đúng hướng. Nó cũng sẽ cung cấp cho bạn thông tin phản hồi sớm về nỗ lực và chi phí thực sự (đó là điều bạn vẫn có thể thất bại trong cách tiếp cận thác nước, ngay cả khi bạn biết chi tiết từng yêu cầu).


3
Làm "thác nước" một cách chính xác không có nghĩa là "lập kế hoạch cho tất cả mọi thứ", nó có nghĩa là không nhấn mạnh mọi thứ.
Giorgio

1
@Giorgio: thực hiện "thác nước" một cách chính xác có nghĩa là không áp dụng nó khi các yêu cầu "hơi mơ hồ" và "phần mềm đủ phức tạp để có những chi tiết, vấn đề mà tôi sẽ không nhận ra cho đến khi tôi thực sự phải đối mặt với chúng" (trích dẫn từ câu hỏi gốc).
Doc Brown

6

Sử dụng nhanh nhẹn trong tình huống này vẫn là một ý tưởng rất tốt. Có nhiều lợi ích cho nhanh nhẹn, chỉ một trong số đó là phản hồi thường xuyên từ khách hàng và khả năng đáp ứng các yêu cầu thay đổi như bạn đề cập.

Một trong những lý do chính khiến các dự án thác nước nổi tiếng là thất bại là vấn đề 'gần như đã hoàn thành' - thử nghiệm đã tạo ra hàng đống lỗi, để lại một sản phẩm không đáng tin cậy và không biết liệu có cần thêm hai hay hai năm nữa để khắc phục các lỗi còn tồn tại hay không. Agile loại bỏ hoàn toàn rủi ro này. Nếu một dự án nhanh đang chạy quá mức, bạn vẫn có thể cung cấp một phiên bản hoạt động:

A) Cung cấp cho khách hàng mà bạn thực sự ở gần đó thông qua bản demo ("Tất cả những câu chuyện này đã được thực hiện, chúng tôi có thể thực hiện vài lần cuối nếu bạn muốn") và một thời gian nữa sẽ có được chính xác những gì họ muốn.

B) Dù sao cũng đủ tốt để họ hạnh phúc và giải thoát.

Đối với tôi, loại bỏ nguy cơ thất bại hoàn toàn này là lý do đủ để một doanh nghiệp chuyển sang quy trình phát triển nhanh, khả năng xây dựng phần mềm tốt hơn so với kế hoạch ban đầu là đóng băng. Như đã đề cập trong các câu trả lời khác, những yêu cầu 'cụ thể' đó thường vẫn dễ uốn nắn một cách đáng ngạc nhiên.


Tôi không hiểu theo cách nào A) giải quyết vấn đề bạn đã đề cập ở đầu câu trả lời của bạn: làm thế nào để bạn biết nếu một vài câu chuyện cuối cùng sẽ mất vài ngày hoặc hai năm? Bạn chỉ thực sự biết khi bạn thực sự làm chúng, phải không?
Giorgio

1
Bạn nói đúng, nhưng điểm khác biệt là bạn có một sản phẩm đáng tin cậy ở trạng thái hiện tại, thay vì một phần mềm lỗi hoàn thành 90% không thể phát hành. Bạn cũng có bằng chứng thực nghiệm về việc bạn mất bao lâu để cung cấp các tính năng có thể tin cậy được và ước tính của bạn về công việc còn lại có khả năng cung cấp thêm niềm tin rằng không có bằng chứng nào cho thấy mọi việc bạn đã làm thực sự hoạt động.
SpoonerNZ

Nó phụ thuộc: nếu tất cả các tính năng được lên kế hoạch là cần thiết, thì một sản phẩm có 90% tính năng là không thể sử dụng / không thể tin cậy: nó chỉ có thể được sử dụng để đưa ra bản demo về những gì đã có. Theo kinh nghiệm của tôi, agile không thích hợp hơn trong mọi tình huống: có những dự án mà agile phù hợp hơn (yêu cầu thay đổi, tính năng nhỏ, khép kín và độc lập) và các dự án không (yêu cầu ổn định, phức tạp và / hoặc nhiệm vụ quan trọng đặc trưng).
Giorgio

Tôi đồng ý - việc phân phối dưới mức không tốt trong cả hai trường hợp, nhưng với tư cách là một bên liên quan, bạn sẽ tin tưởng nhóm sản xuất phiên bản phần mềm đầy đủ của bạn để chơi với mọi thứ hoạt động nhưng thiếu một số tính năng hoặc nhóm cung cấp cho bạn lỗi câu đố mã nguồn mà về lý thuyết có tất cả các tính năng của bạn nhưng gặp sự cố rất nhiều và có nhiều hành vi bất ngờ? Tôi biết tôi sẽ tin tưởng hơn.
SpoonerNZ

Tất nhiên tôi sẽ tin tưởng nhóm đầu tiên, nhưng tôi không đồng ý rằng sử dụng phương pháp không nhanh nhẹn, bạn luôn kết thúc với "một lỗi mã nguồn bị lỗi mà về mặt lý thuyết có tất cả các tính năng của bạn nhưng gặp sự cố rất nhiều và có nhiều hành vi bất ngờ" . Ít nhất, đây không phải là kinh nghiệm của tôi cho đến nay.
Giorgio

3

Agile là lý tưởng nếu bạn cần một vòng phản hồi thường xuyên với khách hàng. Điều này có thể là do các yêu cầu thay đổi thường xuyên, nhưng cũng có thể vì những lý do khác.

Mặt khác, Agile có thể hoạt động tốt như nhau nếu các yêu cầu hoàn toàn ổn định và khách hàng chỉ mong đợi một lần giao hàng lớn, nhưng bạn có thể phải điều chỉnh mọi thứ một chút cho lượng khách hàng tham gia trong thời gian dự án. Điều này có nghĩa là vai trò Chủ sở hữu sản phẩm phải được điền từ bên trong tổ chức của bạn và người đó phải có đủ sự ủy nhiệm từ khách hàng để đưa ra quyết định.


1
Tôi thường tự hỏi nếu khách hàng không muốn tham gia quá nhiều có nhu cầu kinh doanh thực sự. Tôi thường thấy điều này xảy ra trong các dự án nơi một ứng dụng hiện có được "dịch" sang một công nghệ mới. Bạn có thể kiểm tra mã nếu bạn có câu hỏi là những gì họ đang nói với bạn. Không ai chờ đợi để làm lại.
199561

@ user99561: bạn đúng, nhưng trong những tình huống như vậy, các yêu cầu hầu như không mơ hồ, chúng rất rõ ràng - miễn là chương trình mới sẽ hoạt động chính xác như cũ. Trong tình huống như vậy, một cách tiếp cận "nhanh nhẹn" thực sự không cần thiết. Một cách tiếp cận dựa trên cơ sở lặp đi lặp lại (không có nhiều tương tác của khách hàng) sẽ thực sự đủ.
Doc Brown

Tinh thể rõ ràng? Chúc may mắn tìm ra hành vi chính xác là gì và ngoại lệ là gì. Hầu hết thời gian, ngay cả những người kinh doanh cũng không hiểu những gì xảy ra trong ứng dụng. Lời khuyên của tôi: chạy trốn nhanh nhất có thể từ các dự án này. Bởi vì bạn biết khi nào dự án bắt đầu, nhưng bạn không biết khi nào lỗi cuối cùng được đăng bởi vì các ứng dụng hoạt động khác nhau sẽ được sửa.
199561

0

Bạn luôn có thể chia bản phát hành lớn thành các bản phát hành nhỏ hơn (chạy nước rút) và yêu cầu khách hàng phản hồi. Bằng cách này, bạn chắc chắn rằng mình đang làm đúng và khách hàng có thể theo dõi tiến trình của bạn.

Nếu có điều gì đó sai, bạn có thể cung cấp cho khách hàng của bạn cơ hội để sửa chữa bạn sớm hơn, điều này là rất tốt. Tốt hơn hết là sửa lỗi của bạn càng sớm càng tốt, thay vì chỉ cho anh ta một điều nhảm nhí ở cuối và cố gắng sửa nó khi bạn thậm chí không biết bắt đầu từ đâu.


Tôi vừa thêm một chỉnh sửa để làm rõ. Các khách hàng cho thấy một vấn đề với đủ chi tiết và danh sách mong muốn rõ ràng và muốn không gặp rắc rối hơn nữa. Vì vậy, giả sử, không có phản hồi của khách hàng cho đến gần cuối khi bạn có thể demo một nguyên mẫu hoạt động.
Được thông báo vào
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.