Tôi có nên sử dụng scrum cho các dự án lớn? [đóng cửa]


8

Tôi đã làm việc như một lập trình viên cho một dự án được thiết kế cho phần mềm chung cho các trạm xăng (sẽ được phân phối lại cho nhiều khách hàng) trong 18 tháng. Dự án lớn. Hôm nay chúng tôi có khoảng 150 bàn. Chúng tôi đã không sử dụng một chương trình cụ thể, nó không được quản lý tốt.

Bảng người có ngày hôm nay khoảng 70 cột, nhưng 15 tháng trước nó có khoảng 30 cột. Những lĩnh vực mới này đã xuất hiện để tích hợp với các mô-đun khác như bán hàng, tài chính và kế toán. Ngoài ra nhiều lĩnh vực đã được tạo ra sau đó bị xóa.

Kết quả là, chúng tôi đã có nhiều lần tái cấu trúc và làm lại. Dự án không bao giờ sẵn sàng vì luôn có những yêu cầu mới xuất hiện.

Đây là nghi ngờ của tôi: nếu chúng tôi đã sử dụng một cách tiếp cận thông số kỹ thuật thông thường, chúng tôi sẽ có các cuộc phỏng vấn, một tài liệu yêu cầu, hoạt động, trình tự và sơ đồ lớp, vì vậy chúng tôi sẽ biết rằng từ đầu bảng "người" sẽ cần 70 trường, sau đó chúng tôi đã tránh được rất nhiều tái cấu trúc.

Scrum có thể giúp đỡ trong dự án này? Tôi có cảm giác rằng trong trường hợp này, scrum cũng sẽ có rất nhiều cấu trúc lại.

Tôi chỉ là một lập trình viên, không phải là người quản lý dự án. Tôi đang tự hỏi làm thế nào nó nên được thực hiện: với scrum hoặc với thiết kế lớn lên phía trước.

Biên tập

Chỉ để bổ sung cho kết thúc của câu chuyện này. Tám tháng sau tôi đã hỏi câu hỏi này, sau khi đưa dự án vào sản xuất trong một số "chi phí thử nghiệm", chính thức dự án đã thất bại. Chủ sở hữu sản phẩm quyết định từ bỏ dự án. Thật khó để sửa chữa các vấn đề và rất nhiều vấn đề về nước hoa xảy ra.


8
Trong Scrum, giả định và chấp nhận rằng bạn không thể biết mọi thứ trực tiếp và dù sao bạn cũng sẽ thực hiện nhiều thao tác tái cấu trúc.
Bart van Ingen Schenau

2
Tái cấu trúc thường được coi là một phần cốt lõi của bất kỳ quy trình nhanh nào, do đó, có khả năng Scrum sẽ dẫn đến cùng một lượng tái cấu trúc trở lên. Tôi cho rằng câu hỏi sau đó là, tại sao bạn nghĩ rằng đây là một vấn đề? Điều nhanh nhẹn cố gắng giải quyết là việc nắm bắt và thiết kế các yêu cầu phía trước là thiếu sót, và bạn sẽ cung cấp giá trị tốt hơn cho khách hàng dần dần để khám phá các yêu cầu thực sự. Nếu bạn có thể đảm bảo một kế hoạch hoàn hảo trước mắt, bạn có thể thực hiện theo cách đó và vẫn cung cấp giá trị tăng dần. Nhưng liệu yêu cầu ban đầu có được hoàn hảo?
Robin

3
Tôi không chắc tiêu đề phản ánh câu hỏi bạn đang hỏi.
gbjbaanb

6
@LightnessRacesinOrbit: rõ ràng anh ta đang nói về một loại ứng dụng cơ sở dữ liệu đường phố, với lược đồ DB với 150 bảng. Một số người dường như cho rằng không có loại phần mềm nào khác. Tôi khuyên họ nên đọc Five Worlds của Joel Spolsky .
Doc Brown

2
@Murilo "Một số thay đổi ảnh hưởng đến những thứ đang hoạt động." Đây là một vấn đề phổ biến và được mong đợi với bất kỳ thay đổi nào trong hệ thống phần mềm, để giúp giảm thiểu vấn đề này Các bài kiểm tra đơn vị có thể được phát triển (cùng với sự phát triển chính) để hiểu rõ hơn về hiệu ứng tái cấu trúc trên các hệ thống hiện có.
YoungJohn

Câu trả lời:


18

Có vẻ như bạn đã bắt đầu con đường của mình trong một quá trình phát triển không được kiểm soát để tạo ra một hệ thống phát triển không bao giờ kết thúc. Điều này xảy ra trong các hệ thống nhanh.

Vấn đề gốc là thiếu các yêu cầu và trong khi giải pháp của bạn có vẻ là sử dụng một phương pháp nhanh để khắc phục điều này (vì agile được thiết kế xung quanh các yêu cầu thay đổi), nó sẽ không giải quyết được vấn đề.

Ngay cả các phương pháp nhanh cũng yêu cầu một điểm khởi đầu khá vững chắc. Chúng đáp ứng tốt với các yêu cầu thay đổi, nhưng chúng cũng vô dụng như mọi phương pháp khác nếu bạn bắt đầu không có yêu cầu. Bạn vẫn phải có một kế hoạch mà bạn đang hướng tới trước khi bắt đầu. Agile giúp khi mục tiêu đó trôi đi, nó không giúp bạn xác định mục tiêu đó.

Bây giờ sự thật là một thiết kế phía trước cố định quá cứng nhắc nếu bạn không biết chính xác những gì bạn đang xây dựng.

Vì vậy, tôi nghĩ rằng bạn sẽ phải chuyển từ phương pháp 'hỗn loạn' hiện tại của mình sang một thứ có tổ chức hơn và sẽ phải thực hiện một số lượng lớn thiết kế và lập kế hoạch. Bạn có thể thử làm điều này trong một lần với một phương pháp nặng, hoặc bạn có thể linh hoạt hơn với một phương pháp nhanh nhẹn. Những gì bạn không thể làm là mong đợi bất kỳ phương pháp nào để khắc phục sự thiếu kế hoạch ban đầu của bạn.

Ngẫu nhiên, Kanban âm thanh phù hợp hơn cho nhu cầu của bạn. Scrum hoạt động tốt nhất với các nhóm và dự án nhỏ. Kanban có thể làm việc với các dự án lớn hơn nhưng nó cũng hoạt động với phương pháp tiếp cận công việc, vì vậy các thay đổi thiết kế là liên tục và không bị cắt xén thành nước rút. Tôi nghĩ rằng bạn sẽ có nhiều thành công hơn với điều đó.


Bạn đã làm một số báo cáo rất tốt. Đây thực sự là một sự hỗn loạn. Tôi không đủ rõ ràng: Tôi không muốn sửa nó, vì tôi chỉ là nhà phát triển dự án, vì vậy tôi không có cách nào để thay đổi nó bây giờ, nhưng tôi đã tự hỏi làm thế nào nó sẽ được thực hiện chính xác. Cảm ơn bạn rất nhiều vì câu trả lời tốt của bạn. Ps.Chúng tôi sử dụng bảng Kanban ở đây để thử giúp đỡ.
Murilo

2
Câu trả lời của bạn không tệ, nhưng "Vấn đề gốc là thiếu yêu cầu" ??? Thành thật mà nói, đối với tôi nó hoàn toàn ngược lại. OP đã yêu cầu nhiều hơn trên bàn so với việc anh ấy xử lý và quản lý nghiêm túc.
Doc Brown

@DocBrown Vâng, đủ công bằng - không thiếu các yêu cầu mà là một trong những yêu cầu được quản lý và / hoặc được thiết kế hợp lý - tức là quá nhiều "chỉ cần làm điều này" và không đủ "đây là thông số suy nghĩ của bạn" - điều này sẽ làm giảm việc tái cấu trúc đã nói về. Có lẽ tôi đã sai và giải thích câu hỏi không hay.
gbjbaanb

@Murilo Dựa trên kinh nghiệm của tôi, nếu bạn đang tự hỏi "làm thế nào để thực hiện chính xác", câu trả lời có rất ít liên quan đến các kỹ thuật được áp dụng và mọi thứ phải làm với những người thực hiện các kỹ thuật và quản lý dự án.
Cort Ammon

2
"Agile giúp khi mục tiêu đó trôi đi, nó không giúp bạn xác định mục tiêu đó." : Đây là một tổng kết tuyệt vời của nhanh nhẹn:
Bryan Oakley

12

18 tháng, 150 bàn mà vẫn không sản xuất? Âm thanh giống như một cuộc diễu hành tử thần đối với tôi. Cách duy nhất bạn có thể khắc phục điều này, nếu có bất kỳ cơ hội nào để lưu nó ngay bây giờ, là thu hẹp đáng kể phạm vi dự án của bạn - ít nhất là cho bản phát hành sản xuất đầu tiên của bạn. Những gì bạn cần là lập kế hoạch phát hành phù hợp, các mục tiêu nhỏ, có thể tiếp cận và đưa hệ thống đến người dùng cuối càng sớm càng tốt.

Và khi bạn có bản phát hành đầu tiên trong sản xuất, chỉ với một phần mười yêu cầu được thực hiện, bạn sẽ phải mở rộng từng bước theo khối yêu cầu tiếp theo, điều này sẽ gây ra "tái cấu trúc". Bạn cũng sẽ nhận được thông tin phản hồi, có nghĩa là yêu cầu sửa lỗi và thay đổi, điều này cũng sẽ gây ra tái cấu trúc.

Bây giờ cho bạn câu hỏi - Scrum sẽ giúp đỡ? Co le không. Scrum là một công cụ để hỗ trợ phát triển lặp lại và thay đổi các yêu cầu, và tập trung vào những điều quan trọng trước tiên. Các phương thức "Agile" khác cũng làm điều này và một quy trình không chính thức cũng có thể xử lý điều đó. Nhưng miễn là bạn cố gắng đưa một con quái vật như thế này trong một "vụ nổ lớn" vào sản xuất, không có vấn đề gì nếu bạn sử dụng phát triển "nhanh nhẹn" hoặc "trả trước", cả hai sẽ thất bại.

Vì vậy, trước khi nghĩ về Scrum, trước tiên hãy suy nghĩ lại về mục tiêu và chiến lược phát hành của bạn, sau đó kiểm tra xem Scrum có phải là công cụ phù hợp cho điều đó không, ngược lại.


1
Tôi sẽ cho rằng "mang một con quái vật như thế này cùng một lúc vào sản xuất" hoàn toàn không nhanh nhẹn. Kể từ khi OP tuyên bố sẽ sử dụng kanban , việc tập trung vào một sản phẩm khả thi tối thiểu dường như đã bị mất hoàn toàn ngay từ khi bắt đầu dự án.

@MichaelT: Tôi đồng ý, thật đáng tranh luận nếu cái gọi là "phát triển nhanh" mà không cung cấp thứ gì đó có thể sử dụng có thể thực sự được gọi là "nhanh nhẹn":
Doc Brown

Tôi đồng ý với câu trả lời này. Bạn phải bắt đầu ở đâu đó, bắt đầu xuất bản nhỏ mã của bạn, nhận phản hồi, xây dựng dựa trên phản hồi, đó chỉ là một chu kỳ không bao giờ kết thúc. Ít nhất tại thời điểm đó bạn có ai đó sử dụng công cụ này.
JonH

1
@MichaelT nơi tôi làm việc, các nhóm dự án rất nhanh nhẹn, nhưng cơ sở hạ tầng hỗ trợ chắc chắn là không. Vì vậy, chúng tôi với tư cách là một nhóm cung cấp thứ gì đó có thể được sử dụng vài tuần một lần, nhưng chúng tôi chỉ có một triển khai sản xuất cứ sau 3-4 tháng, đó là trạng thái sẵn sàng để sản xuất tại thời điểm đó. Tổ chức trong thông lượng, hy vọng. Mất 3 tháng để cho chúng tôi một máy chủ thử nghiệm chẳng hạn. Vì vậy, chúng ta chỉ cần thực hiện làm với một máy tính xách tay như một dự án máy chủ thử nghiệm nội bộ cho đến thời điểm đó ...
jwenting

8

Nếu bạn không thể quản lý các yêu cầu và không có người có khả năng thực hiện các yêu cầu đúng cách, SCRUM sẽ không giúp bạn (nhiều) và đó dường như là vấn đề thực sự bạn gặp phải.
SCRUM có thể giúp bạn giải quyết tốt hơn các yêu cầu thay đổi so với các hệ thống quản lý dự án tĩnh hơn, nhưng đó không phải là chén thánh sẽ làm cho mọi thứ hoạt động một cách kỳ diệu. Trên thực tế, trừ khi người của bạn ở trên tàu, sẵn sàng và có khả năng làm việc với SCRUM, và phần còn lại của tổ chức, điều đó có thể khiến mọi thứ trở nên tồi tệ hơn.

Nếu bạn có một bảng được phát triển rất nhiều để phù hợp với các công cụ để liên kết với các hệ thống khác, thì tôi cho rằng thiết kế cơ sở dữ liệu của bạn là thiếu sót nghiêm trọng chẳng hạn. Không có số lượng SCRUM sẽ cải thiện thiết kế cơ sở dữ liệu của bạn mà không có bạn, kể cả những người giỏi thiết kế cơ sở dữ liệu trong nhóm của bạn và không sợ những thay đổi thiết kế đó và những thay đổi mà chúng sẽ gây ra cho phần còn lại của hệ thống.


2

Xin lưu ý rằng khi tôi viết câu trả lời này, tôi đã không nhận ra rằng hệ thống này chưa được sản xuất.

Theo cách bạn mô tả sản phẩm của bạn, tôi không nghĩ rằng vấn đề trước mắt của bạn là vấn đề quản lý, cũng không phải quá trình phát triển của bạn. Đó là kiến ​​trúc hệ thống của bạn.

Bạn đã quản lý để tạo ra một tảng đá nguyên khối - và một cái khá lớn ở đó. 150 bảng là rất nhiều cho một hệ thống *. Cụ thể, bạn đề cập rằng bạn có 40 lĩnh vực mới trong 15 tháng qua chỉ để tích hợp với các hệ thống bên ngoài. Tôi sẽ xem xét nghiêm túc việc chia hệ thống của bạn thành một số dịch vụ tự trị, có thể bắt đầu bằng các dịch vụ để tích hợp với các hệ thống bên ngoài - nhưng sau đó xác định các lĩnh vực kinh doanh riêng biệt được triển khai trong bạn, và sau đó có thể chia các mối quan tâm đó thành các dịch vụ riêng biệt.

Nếu bạn quản lý để tách khối nguyên khối này thành các cơ sở mã có thể duy trì riêng biệt, bạn cũng có thể chia các nhà phát triển của mình thành các nhóm nhỏ hơn với các trách nhiệm được xác định rõ trong các lĩnh vực cụ thể của doanh nghiệp của bạn và bạn có thể có nhiều nhóm nhanh nhẹn hơn duy trì cơ sở mã riêng của họ, thay vì tất cả các hack trong cùng một cơ sở mã.

Về lý do tại sao bạn đã đến một kiến ​​trúc như vậy, nguyên nhân gốc rễ cho vấn đề của bạn, có thể có nhiều câu trả lời. Có thể nó bắt nguồn từ quá trình phát triển của bạn, có thể tất cả các nhà phát triển của bạn chỉ có kinh nghiệm với phần mềm nhất quán giao dịch hoặc có thể đó là hậu quả của cách tổ chức của bạn được cấu trúc (bạn là nạn nhân của Luật Conway ). Tôi nghĩ có một cơ hội tốt đó là sự kết hợp của hai cái sau.

Tôi không nghĩ rằng việc thực hiện scrum, hoặc trở nên tốt hơn trong việc quản lý các yêu cầu sẽ giúp giải quyết vấn đề tức thời của bạn, cũng không phải là nguyên nhân gốc rễ. Điều chỉnh kiến ​​trúc cho sự phức tạp của hệ thống của bạn sẽ và giải quyết nguyên nhân gốc rễ tại sao bạn xây dựng một hệ thống như vậy.

* Một số người có thể sẽ lập luận rằng họ có thể duy trì một hệ thống với 150 bảng - hoặc họ đã duy trì các hệ thống lớn hơn nhiều, nhưng tôi tin rằng hầu hết các nhà phát triển sẽ coi đây là một số lượng lớn các bảng cho một hệ thống.


1
Điều này đối với tôi giống như một gợi ý kỹ thuật cho một vấn đề tổ chức - mà theo kinh nghiệm của tôi hiếm khi hoạt động. Một kiến ​​trúc hệ thống với 150 bảng cho một hệ thống có thể ổn - vấn đề bắt đầu là khi bạn cố gắng phát triển và triển khai một hệ thống như vậy trong một "vụ nổ lớn".
Doc Brown

@DocBrown - Tôi đồng ý với bạn. Vào thời điểm tôi viết câu trả lời này, không rõ dự án chưa được sản xuất. Sau đó tôi đoán không chính xác.
Pete
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.