Làm thế nào để bạn giải thích cho một đội ngũ nhanh nhẹn của người Viking mà họ vẫn cần lập kế hoạch cho phần mềm họ viết?


50

Tuần này tại nơi làm việc tôi đã trở nên nhanh nhẹn một lần nữa. Trải qua sự nhanh nhẹn tiêu chuẩn, TDD, quyền sở hữu chung, phương pháp phát triển đặc biệt của việc không bao giờ lên kế hoạch cho bất cứ điều gì ngoài một vài câu chuyện của người dùng trên một thẻ, bằng lời nói nhai lại những mánh khóe về kỹ thuật của một quảng cáo tích hợp bên thứ 3 mà không bao giờ thực hiện suy nghĩ hoặc do sự cẩn trọng và kết hợp kiến ​​trúc tất cả các mã sản xuất với thử nghiệm đầu tiên xuất hiện trong đầu của bất kỳ ai trong vài tháng qua, chúng tôi đã kết thúc một chu kỳ phát hành và lo lắng và thấy tính năng chính bên ngoài mà chúng tôi đang phát triển quá chậm sử dụng, lỗi, trở nên phức tạp mê cung và hoàn toàn không linh hoạt.

Trong quá trình này, "gai" đã được thực hiện nhưng chưa bao giờ được ghi lại và không một thiết kế kiến ​​trúc nào được tạo ra (không có FS, vậy thì quái gì, nếu bạn không biết bạn đang phát triển gì, bạn có thể lập kế hoạch hoặc nghiên cứu nó như thế nào ?) - dự án được chuyển từ cặp này sang cặp khác, mỗi người chỉ tập trung vào một câu chuyện người dùng tại một thời điểm và kết quả là không thể tránh khỏi.

Để giải quyết vấn đề này, tôi đã tắt radar, đi thác nước (sợ hãi), lên kế hoạch, mã hóa và về cơ bản không trao đổi cặp và cố gắng làm việc một mình - tập trung vào kiến ​​trúc và thông số kỹ thuật vững chắc thay vì kiểm tra đơn vị sẽ đến sau khi mọi thứ được ghim xuống. Mã bây giờ tốt hơn nhiều và thực sự hoàn toàn có thể sử dụng, linh hoạt và nhanh chóng. Một số người dường như thực sự phẫn nộ với tôi khi làm điều này và đã tìm cách phá hoại những nỗ lực của tôi (có thể là vô thức) vì nó đi ngược lại quá trình linh hoạt của thánh.

Vì vậy, làm thế nào để bạn, với tư cách là một nhà phát triển, giải thích cho nhóm rằng không phải là "không nhanh nhẹn" để lập kế hoạch cho công việc của họ và làm thế nào để bạn phù hợp với việc lập kế hoạch cho quy trình nhanh? . kiến trúc và các mẫu họ nên sử dụng và nơi mã mới sẽ tích hợp vào mã hiện có)


26
Đoạn đầu tiên nghe như một lời ca ngợi chống lại nhanh nhẹn. Phần còn lại vẫn có vẻ như là một lời ca ngợi, chỉ chống lại phần còn lại của đội bạn. Bạn có thể muốn diễn giải.

1
+1 rất quan tâm đến cách mọi người giải quyết vấn đề này một cách thực tế cho phép bạn tận dụng lợi thế của cả thác nước và sự nhanh nhẹn tốt nhất. Nhân tiện: agile không bằng "không thiết kế", nhưng thiết kế có xu hướng là nạn nhân đầu tiên trong chu kỳ chạy nước rút không ngừng ...
Marjan Venema

5
Ở một mức độ nhất định, tôi đã có nó đến tận cổ với "nhanh nhẹn". Ở mọi ngã rẽ, dường như mọi người đều ngăn chặn việc viết một dòng mã đàng hoàng và tất cả bắt đầu với tiền đề nhanh là "chúng tôi không làm tài liệu", hệ quả của "chúng tôi không có kế hoạch". Tôi không muốn ghét nhanh nhẹn, nhưng theo như tôi có thể thấy chừng nào nó còn khuyến khích mọi người không lên kế hoạch cho phần mềm của họ thì nó sẽ phản tác dụng tốt nhất và nguy hiểm nhất.

9
@Marjan Venema - đó là mối quan tâm của tôi. Tôi chắc chắn rằng nhanh nhẹn không bao giờ có nghĩa là "không thiết kế" như "không tối ưu hóa sớm" không có nghĩa là "không viết mã hiệu quả". Nhưng đó dường như là sự giải thích thị trường đại chúng của nó. Cách nhanh nhẹn nhấn mạnh vào giao tiếp là tuyệt vời và một sự thay đổi thực sự mới mẻ, nhưng đối với tôi, trong thế giới nhanh nhẹn, phần mềm tự nó là một suy nghĩ nhiều hơn.

9
Rõ ràng là bạn đang thất vọng với một ứng dụng kém của các nguyên tắc nhanh nhẹn, nhưng điều này có vẻ giống như một câu nói được ngụy trang mỏng manh như một câu hỏi. Để rõ ràng: Agile ủng hộ "phản ứng thay đổi theo kế hoạch", có nghĩa là "trong khi có giá trị trong các mục ở bên phải , chúng tôi đánh giá các mục ở bên trái nhiều hơn". Chắc chắn có thể định giá theo một kế hoạch quá ít , dường như là trường hợp ở đây.
Rein Henrichs

Câu trả lời:


51

Tôi nghĩ (và tôi có thể sẽ đi ra ngoài ở đây) rằng TẤT CẢ các dự án nên có một chút thác nước cổ điển: Giai đoạn phân tích và đặc tả ban đầu là rất cần thiết. Bạn phải biết những gì bạn đang làm, và bạn phải có nó bằng văn bản. Nhận được các yêu cầu bằng văn bản là khó khăn và tốn thời gian, và dễ làm xấu. Đó là lý do tại sao rất nhiều người bỏ qua nó - bất kỳ lý do nào cũng sẽ làm: "Ồ chúng tôi làm nhanh nhẹn nên chúng tôi không cần phải làm điều đó." Ngày xửa ngày xưa, trước khi nhanh nhẹn, đó là "oh tôi thực sự thông minh và biết cách giải quyết vấn đề này, vì vậy chúng tôi không cần phải làm điều đó." Các từ đã thay đổi một chút nhưng bài hát về cơ bản là giống nhau.

Tất nhiên đây là tất cả các con bò đực: Bạn phải biết những gì bạn sẽ làm - và một đặc điểm kỹ thuật là phương tiện mà nhà phát triển và khách hàng có thể truyền đạt những gì được dự định.

Một khi bạn biết những gì bạn phải làm - phác thảo một kiến ​​trúc. Đây là phần "có được bức tranh lớn". Không có giải pháp kỳ diệu nào ở đây, không ai đúng cách và không có phương pháp nào có thể giúp bạn. Kiến trúc là TỔNG HỢP của một giải pháp, và chúng đến từ một thiên tài được truyền cảm hứng một phần, và một phần kiến ​​thức khó giành được.

Ở mỗi bước này sẽ có phép lặp: bạn tìm thấy những thứ sai hoặc thiếu và đi sửa chúng. Đó là gỡ lỗi. Nó chỉ được thực hiện trước khi bất kỳ mã nào được viết.

Một số xem các bước này là nhàm chán, hoặc không cần thiết. Trong thực tế, hai bước này là quan trọng nhất trong tất cả các vấn đề - giải quyết những sai lầm này và mọi thứ sau đây sẽ sai. Những bước này giống như nền móng của một tòa nhà: Nhận sai và bạn có Tháp nghiêng Pisa.

Khi bạn có CÁI GÌ (đó là thông số kỹ thuật của bạn) và CÁCH (đó là kiến ​​trúc - vốn là một thiết kế cấp cao) thì bạn có nhiệm vụ. Thường rất nhiều trong số họ.

Phá vỡ các nhiệm vụ theo cách bạn muốn, phân bổ chúng theo cách bạn muốn. Sử dụng bất kỳ phương pháp nào trong tuần mà bạn thích hoặc phù hợp với bạn. Và hoàn thành những nhiệm vụ đó, biết bạn đang hướng tới đâu và bạn cần hoàn thành những gì.

Trên đường đi sẽ có những con đường mòn sai lầm, sai lầm, vấn đề được tìm thấy với thông số kỹ thuật và kiến ​​trúc. Điều này nhắc nhở những điều như: "Chà tất cả những kế hoạch đó là một sự lãng phí thời gian." Cái nào cũng bò. Nó chỉ có nghĩa là bạn có LESS hôi để giải quyết sau này. Khi bạn tìm thấy vấn đề với các công cụ ngày đầu cấp cao, CỐ ĐỊNH.

(Và về một vấn đề phụ ở đây: Có một sự cám dỗ lớn mà tôi đã gặp nhiều lần để cố gắng đáp ứng một thông số đắt tiền, khó khăn hoặc thậm chí là không thể. Câu trả lời đúng là hỏi: "Việc triển khai của tôi bị hỏng, hay Thông số kỹ thuật có bị hỏng không? "Bởi vì nếu một vấn đề có thể được giải quyết nhanh chóng và rẻ tiền bằng cách thay đổi thông số kỹ thuật, thì đó là điều bạn nên làm. Đôi khi điều này hoạt động với khách hàng, đôi khi không. Nhưng bạn sẽ không biết nếu bạn đừng hỏi.)

Cuối cùng - bạn phải kiểm tra. Bạn có thể sử dụng TDD hoặc bất cứ điều gì bạn thích nhưng điều này không đảm bảo rằng cuối cùng, bạn đã làm những gì bạn nói bạn sẽ làm. Nó giúp, nhưng nó không đảm bảo. Vì vậy, bạn cần phải làm bài kiểm tra cuối cùng. Đó là lý do tại sao những thứ như Xác minh và Xác thực vẫn là mục lớn trong hầu hết các phương pháp tiếp cận quản lý dự án - là phát triển phần mềm hoặc chế tạo máy ủi.

Tóm tắt: Bạn cần tất cả những thứ nhàm chán phía trước. Sử dụng những thứ như Agile làm phương tiện giao hàng, nhưng bạn không thể loại bỏ suy nghĩ lỗi thời, chỉ định và thiết kế kiến ​​trúc.

[Bạn có nghiêm túc mong đợi xây dựng một tòa nhà 25 tầng bằng cách đặt 1000 lao động tại chỗ và bảo họ thành lập các nhóm để làm một vài công việc không? Không có kế hoạch. Nếu không tính toán kết cấu. Không có một thiết kế hoặc tầm nhìn về cách các tòa nhà nên nhìn. Và chỉ biết rằng đó là một khách sạn. Không - không nghĩ vậy.]


11
+1. +10 nếu tôi có thể. Nếu bạn không biết rõ cuối cùng bạn đang xây dựng cái gì - thứ chỉ có thể đến từ một số công việc thiết kế phía trước, ngay cả khi bạn sửa đổi thiết kế đó sau - thì mô hình phát triển mà bạn đang theo đuổi là "ném tào lao ở tường và xem những gì gậy ".
Kiến

5
-1. Tôi không thích thông số kỹ thuật chi tiết bởi vì mọi người / khách hàng luôn thay đổi suy nghĩ của họ, điều này làm cho thông số kỹ thuật và thiết kế phía trước trở nên vô nghĩa, chưa kể lãng phí. Vì vậy, thay vì lãng phí thời gian "thu thập yêu cầu" và không có gì, bạn nên tạo phần mềm hoạt động mà bạn hiển thị cho khách hàng của mình càng sớm càng tốt, để bạn có thể nhận được phản hồi thực sự cho bước tiếp theo. Thay vì đoán và suy đoán. Đối với "thông số kỹ thuật là phương tiện giao tiếp": Tôi thích nói chuyện với khách hàng của mình và làm việc lặp đi lặp lại, nhưng hey, mỗi người tôi tự đoán.
Martin Wickman

6
+1. +10 nếu tôi có thể +1. Tôi là một người hoàn hảo cho phần mềm xây dựng giống như xây dựng một sự tương tự của tòa nhà bởi vì nó là như vậy. Có phần mềm không phải là vật lý, có được thực hiện chính xác, nó có thể được mô đun hóa cao và tách rời. Nhưng làm cho nó có tính mô-đun cao và tách rời là rất khó; đó là những gì mất thời gian và kế hoạch. Tôi nhận ra rằng sẽ luôn có hai phe trong công nghệ phần mềm: những người nghĩ rằng lập kế hoạch là một sự lãng phí thời gian và những người không. Và bạn biết tôi cũng đã nhận ra rằng mọi người không thay đổi trại, thực sự không phải vậy. Tôi đã làm việc trong một môi trường có kế hoạch cao và ...

6
Tôi đồng ý với bạn, nhưng những gì bạn mô tả thực sự nhanh nhẹn. Agile nói "không có thiết kế lớn ở phía trước", không phải "không có thiết kế". Điều này được cho là một phản ứng đối với các dự án quái vật thác nước khổng lồ của doanh nghiệp khổng lồ. Không phải là một cái cớ để không thiết kế và tìm một kiến ​​trúc tốt cho mã của bạn. Vấn đề là không dành hàng tuần hoặc hàng tháng để thực hiện TẤT CẢ thiết kế trước khi bạn bắt đầu viết mã, bởi vì bạn thiết kế SILL sai, và bạn càng chú ý và sửa chữa nó, thì càng tốt. Nhận phản hồi nhanh, lặp lại, cải thiện, v.v.
sara

5
Kai - Tôi thấy Agile được sử dụng một cái cớ để không có đặc điểm kỹ thuật, không có kế hoạch, chỉ cần lặn vào. Và điều đó hoàn toàn sai.
quick_now

36

Tôi vẫn ngạc nhiên khi nhiều người nghĩ rằng TDD có nghĩa là viết bài kiểm tra đơn vị trước tiên. Không, nó có nghĩa là viết bài kiểm tra bạn sẽ cần trước khi bạn viết mã. Bài kiểm tra thực sự có thể là kiểm tra đơn vị, kiểm tra tích hợp, kiểm tra từ đầu đến cuối và tất nhiên là kiểm tra hiệu năng (có lẽ bạn sẽ không viết kiểm tra hiệu năng trước mã được kiểm tra nhưng điều đó không có nghĩa là bạn không nên viết nó). Loại thử nghiệm cần thiết phải được hiển thị từ định nghĩa được thực hiện cho câu chuyện của người dùng. Nếu một trong những tiêu chí chấp nhận cho câu chuyện người dùng nói rằng tính năng đó sẽ cung cấp kết quả trong vòng 500ms với 50 người dùng đồng thời thì câu chuyện người dùng không thể được coi là hoàn thành cho đến khi bạn kiểm tra hiệu suất sẽ chứng minh rằng tiêu chí chấp nhận này được thỏa mãn. Khi bạn có bài kiểm tra tự động, bạn có thể kiểm tra mỗi ngày nó sẽ trôi qua khi bạn thêm các tính năng khác.

Có vẻ như tiêu chí chấp nhận của bạn không được xác định chính xác và do đó bạn không thể kiểm tra hiệu suất của mình. Tuy nhiên, ứng dụng có thể hoạt động kém khi bạn triển khai nó vào môi trường thực và sử dụng nó dưới tải nặng nhưng nó luôn có thể được coi là thất bại của các yêu cầu (nếu yêu cầu không được xác định, nhà phát triển sẽ không lưu ý khi làm việc trên mã) hoặc nhóm phát triển (không đủ thử nghiệm đối với các yêu cầu đã xác định).

Một điều thú vị khác là các nhà phát triển trong nhóm của bạn đang tập trung vào câu chuyện người dùng duy nhất. Agile là về giao tiếp, vì vậy các nhà phát triển nên truyền đạt những câu chuyện của người dùng yêu cầu và cách nó ảnh hưởng đến phần còn lại của ứng dụng - sự hợp tác là điều bắt buộc. Kiểm tra cũng bao gồm điều đó vì vậy nếu một nhà phát triển phá vỡ chức năng cần thiết cho một câu chuyện người dùng khác thì nó sẽ hiển thị trong các kiểm tra tự động. Nếu bạn vẫn cảm thấy rằng điều đó là không đủ hoặc nó không hoạt động, bạn có thể giới thiệu cuộc họp kiến ​​trúc nơi cả nhóm hợp tác và loại bỏ kiến ​​trúc của ứng dụng. Nó thường là đủ để có cuộc họp như vậy một lần một tuần.

Rất nhiều thứ từ quá trình thác nước được thay thế bằng các bài kiểm tra giao tiếp và tự động. Không ai nói rằng bạn không thể viết bất kỳ tài liệu hoặc thiết kế cấp cao nào! Bạn có thể và nhiều đội sử dụng ví dụ Wiki cho điều đó.


7
+1 câu trả lời xuất sắc. Câu chuyện là mục tiêu - đó là phần nổi của tảng băng trôi, một người giữ chỗ cho một cuộc trò chuyện trong tương lai, bước đầu tiên trên hành trình; nó không phải là toàn bộ hành trình Các mô tả thử nghiệm là các yêu cầu, trường hợp sử dụng và tiêu chí chấp nhận kết hợp. Thiết kế không bị bỏ qua, thiết kế được giới hạn phạm vi cho câu chuyện và các bài kiểm tra, nhưng thực hiện nhiều thiết kế như bạn cần . Bất cứ ai cũng bỏ qua thiết kế và cho rằng đó là cách nhanh nhẹn hoặc không hiểu (hãy đọc lại cuốn sách XP), không muốn (viết mã hóa yee-haw!), Hoặc chỉ là lười biếng . Và đặt cho Agile một cái tên xấu.
Steven A. Lowe

16

[sản phẩm của chúng tôi] quá chậm để sử dụng, lỗi, trở nên phức tạp mê cung và hoàn toàn không linh hoạt.

Điều đó không liên quan gì đến nhanh nhẹn, đó là dấu hiệu của các lập trình viên không thực hiện đúng công việc của họ.

Một ý tưởng cơ bản của nhanh nhẹn là nhóm có toàn quyền kiểm soát quy trình. Điều đó có nghĩa là họ phải đồng ý về số lượng lập kế hoạch, tài liệu, thử nghiệm và cách họ đối phó với tái cấu trúc. Tất cả sức mạnh đó là tuyệt vời, nhưng nó cũng đi kèm với trách nhiệm và đây có lẽ là nơi nhóm của bạn thất bại. Họ chấp nhận tự do của họ, nhưng bỏ bê trách nhiệm của họ.

Cuối cùng, vấn đề chỉ là giải thích về chất lượng mã và cố gắng đồng ý về cách tăng và giữ nguyên như vậy. Thực hành lập trình bình thường áp dụng, thực sự.

Mẹo chuyên nghiệp: sử dụng "Định nghĩa hoàn thành" của bạn để thực thi điều này. Hãy chắc chắn rằng mọi người đồng ý với nó và đặt nó hiển thị cho mọi người. Sử dụng nó như một người gác cổng nghiêm ngặt để quyết định xem một câu chuyện đã hoàn thành hay chưa. Thậm chí có thể thêm các yêu cầu phi chức năng (như hiệu suất) vào danh sách đó.


1
"Họ chấp nhận tự do của họ, nhưng bỏ bê trách nhiệm của họ" có lẽ nên là một biểu ngữ trên bức tường nhanh nhẹn "Bạn đã chấp nhận Trách nhiệm của mình cùng với Tự do của bạn chưa?"
Andy Dent

Câu trả lời tuyệt vời, tôi có thể đề nghị thêm rằng khi bạn sử dụng DoD làm hợp đồng theo cách này, nó cũng trở thành trung tâm trong quá trình hồi cứu? DoD này đã giúp hoặc cản trở chúng tôi như thế nào trong việc tăng thêm giá trị cho khách hàng?
Graham Lee

11

Vâng. Đồng đội của bạn là những kẻ ngốc. Dự án của bạn bị hút vì Agile. Cảm thấy tốt hơn? Được rồi, chúng ta hãy tiếp tục. : P

Tôi nghĩ rằng bạn và nhóm của bạn sẽ có thể giao tiếp hiệu quả hơn về những gì đã sai nếu bạn tập trung ít hơn vào tên của Phương pháp vốn M của bạn và nhiều hơn về lý do tại sao phần mềm bạn viết quá chậm và có lỗi. Đừng sử dụng thuật ngữ Agile hoặc thác nước . Họ rõ ràng là cảm xúc trong văn phòng của bạn.

Agile đôi khi làm việc. Nó không làm việc cho nhóm của bạn lần này. Một số người sẽ nói rằng vì bạn đã làm Agile sai. Rốt cuộc, Agile hoạt động, vì vậy nếu bạn đã làm đúng thì nó sẽ hoạt động, phải không? Bất cứ điều gì.

Nghe có vẻ như không ai đồng ý rằng đã có một thất bại, nhưng bạn sẽ không giành được bạn bè, gây ảnh hưởng đến mọi người hoặc làm tốt hơn vào lần tới nếu bạn đổ lỗi cho một phương pháp. Điều đó có lẽ ít liên quan đến những gì thực sự đã sai.

Thay vào đó, tập trung vào việc xác định nguyên nhân trực tiếp nhất của sự thất bại và làm việc với nhóm để đảm bảo chúng không xảy ra lần nữa. Điều này sẽ đòi hỏi kỹ năng của mọi người.

Nói về kỹ năng của mọi người, bạn không nên ngạc nhiên khi nhóm của bạn không đánh giá cao bạn khiến họ trông tệ bằng cách làm tất cả công việc của họ và làm điều đó tốt hơn họ. Bằng cách thực hiện "dưới radar" này, bạn có thể đã làm hỏng một số mối quan hệ mà giờ đây bạn sẽ phải xây dựng lại để trở thành một thành viên hiệu quả của nhóm.

Tôi nghĩ cách tốt nhất để xem xét một tình huống như thế này là xem xét tổng sản lượng dài hạn của toàn đội. Bạn có thể đã tiết kiệm được trong tuần này, nhưng bạn có thể đã làm tốt hơn về lâu dài cho công ty của mình bằng cách xây dựng một nhóm tốt hơn .

Tôi đang nói với bạn tất cả những điều này, nhưng tôi nghĩ có lẽ bạn đã biết hầu hết trong số họ và có thể giải thích chúng cho người khác nếu bạn không quá gần với tình huống này.


9

Nếu bạn muốn thêm một trích dẫn sâu sắc vào các cuộc thảo luận của mình, Eisenhower đã có một câu nói hay:

"Kế hoạch là không có gì, kế hoạch là tất cả."

http://www.brainyquote.com/quotes/quotes/d/dwightdei149111.html

Ông có nghĩa là bạn nên thay đổi kế hoạch của mình và vì vậy đừng đặt quá nhiều giá trị vào kế hoạch khi nó tồn tại, nhưng đồng thời quá trình lập kế hoạch sẽ tập trung mạnh mẽ năng lượng của bạn một cách quan trọng. Bạn phải lập kế hoạch trước khi bạn có thể kiểm tra chúng và tinh chỉnh chúng.


9

+1 Đây là mô tả tốt nhất về doanh nghiệp nhanh nhẹn tôi đã đọc gần đây.

Mọi người hòa đồng đều chỉ ra rằng điều đó không bao giờ có nghĩa là điều này, nhưng một khi mọi người bị cuốn vào các số liệu thì đây chính xác là những gì bạn nhận được từ một nhóm không có niềm đam mê về chất lượng sản phẩm và bị ám ảnh bởi kiểm tra phạm vi bảo hiểm trên tất cả những thứ khác hoặc đáp ứng thời hạn giao hàng hàng tuần của họ bất kể góc nào họ đã vẽ cho mọi người khác bởi vì đó là tất cả những gì làm cho nó lên đến cấp quản lý hàng tuần.

Tôi chưa bao giờ thấy điều này cố định với bất cứ điều gì ít hơn một lần tái xuất. Nếu bạn là một công ty trung cấp không có gì đặc biệt để thu hút những người thực sự đam mê thì thậm chí điều đó sẽ không khắc phục được trừ khi đôi khi quản lý tiếp theo thay đổi phương pháp.

Agile dường như chỉ hoạt động tốt trong các tổ chức, trong đó nhóm phát triển quan tâm đủ để tạo ra một sản phẩm tốt bất chấp công việc phụ, không được công nhận cần thiết. Thực tế, họ phải quan tâm đủ để làm cho nó tốt vào thời gian của riêng họ, đấu tranh để cải thiện (và sẵn sàng đốt cháy nhiều bài kiểm tra làm lại thêm thời gian trong một số trường hợp TDD)

Bạn rõ ràng quan tâm đến việc vận chuyển một sản phẩm tốt, rõ ràng họ quan tâm đến việc trải qua một loạt các chuyển động theo kịch bản và nhận được một mức lương để liên tục dọn dẹp mớ hỗn độn mà họ tạo ra.

Tôi sẽ tìm kiếm việc làm ít khó chịu hơn ở nơi khác có thể nhanh nhẹn hay không.

Nếu bạn hoàn toàn bị bỏng khi nhanh nhẹn, có rất nhiều nơi vẫn làm các phương pháp khác. Hầu như bất cứ điều gì về giá thầu hoặc hợp đồng chẳng hạn.


1
Đó thực sự là định nghĩa tồi tệ nhất của nhanh nhẹn tôi đọc. Các nhà phát triển không cần phải làm thêm và không được công nhận. Ngoài ra, chỉ những kẻ ngốc làm việc trong thời gian riêng của họ. Thời gian dành cho việc kiểm tra mã là thời gian đầu tư tốt.
BЈовић 28/03/18

Không thể đồng ý nhiều hơn, Agile, khi biến thành quái thú mà nó thường trở thành ở cấp độ doanh nghiệp của băng đỏ là sự nhanh nhẹn nhất có thể. Trong một môi trường màu băng phi doanh nghiệp khác, nhóm sẽ chỉ làm những việc đó như là câu chuyện hoặc trước khi bắt đầu câu chuyện. Khi Agile trở thành một chỉ số đo lường của công ty, tính linh hoạt thường là điều đầu tiên phải làm.
Bill

4

Tôi có xu hướng sử dụng một loại lai. Kế hoạch tổng thể là thác nước, nhưng có sự nhanh nhẹn trong việc thực hiện.

Tôi đoán là nếu tình huống tồi tệ như bạn nói, nhóm của bạn không thực sự sử dụng nhanh nhẹn, họ chỉ lười biếng hoặc vô kỷ luật. Agile không phải là không lên kế hoạch, nó chỉ là về sự linh hoạt, và, tốt, nhanh nhẹn.


Tôi có xu hướng nghĩ rằng quá. Tôi chắc chắn rằng nhanh nhẹn thực sự không phải là về kế hoạch, đó chỉ là một cách giải thích của nó.

Có một thế giới khác biệt giữa vốn - "A" Agile và chữ thường- "a" nhanh nhẹn.
Aaronaught

Pssst ... đừng nói với những người nhanh nhẹn rằng, vì đó là cách mà hầu hết mọi người thác nước làm điều đó bởi vì nó hoạt động. Họ vẫn tin rằng TẤT CẢ các nhà phát triển thác nước xây dựng các tài liệu nguyên khối mà không cần viết bất kỳ mã nào cho đến khi kết thúc và ở mỗi bước mọi thứ đều sai vì không có triển khai.
Dunk

4

Chúng tôi có cùng một vấn đề với một số nhân viên.

Về cơ bản "Tôi không biết cho đến khi tôi viết nó" là một tuyên bố yêu thích. Vì vậy, chúng tôi đã đi ngược lại, chúng tôi đã làm việc với khách hàng để xác định các sản phẩm có thể cung cấp với các điểm đăng xuất. Cái cuối cùng là "bây giờ hãy viết mã để làm X".

Nếu chúng ta có "viết thiết kế / thử nghiệm / kế hoạch, v.v." trong cùng một lần chạy nước rút giống như "làm mã thú vị và thú vị" thì phần đầu tiên không bao giờ xảy ra ...

NHƯNG nếu tôi đặt "bạn không được thực hiện bất kỳ mã thú vị và thú vị nào cho đến khi bạn nói những gì bạn sẽ xây dựng và khách hàng đã đăng xuất"

  • trước tiên bạn nhận được sự chấp nhận cằn nhằn, và một vài giọt nước mắt và tôi đã phải làm rất nhiều việc để điền vào chỗ trống và nỗ lực thêm ...
  • sau đó bạn nhận được sự công nhận khi bạn hỏi họ "vậy quá trình như thế nào" rằng tốt hơn là đã thử phiên bản đầu tiên trên giấy
  • sau đó bạn có các trường hợp thử nghiệm mà các nhà phát triển có thể thấy và bạn có thể chỉ ra chính xác kỳ vọng "điều đó có nghĩa là gì".
  • sau đó khách hàng đăng nhập vào sự phát triển có tỷ lệ từ chối ít hơn 80% ...
  • cộng với việc bạn xem tất cả các nhà phát triển đi xung quanh cầm tài liệu thiết kế và nói chuyện với nhau về các thiết kế ... họ bắt đầu thực sự hiểu được nó.
  • Sau đó, bạn tìm ra cách chia nhỏ kế hoạch dự án thành các phần có kích thước cắn và thực hiện một quy trình từ đó.

Phần nhanh nhẹn xuất hiện khi khách hàng sau đó thay đổi so với kế hoạch và bạn có thể điều chỉnh trong vòng 2 tuần KHÔNG bay qua chỗ ngồi của quần và thực hiện theo cách đó.

Trong trường hợp của chúng tôi, "trả trước thiết kế lớn" đã được chia thành 9 giai đoạn (phát hành sản xuất thực tế) với trung bình 5 trạm biến áp. Các nhà thiết kế và nhà phát triển bắt kịp với nhau, các nhà thiết kế đi trước 1-3 nhà phát triển ... quá xa và những khám phá trong quá trình phát triển phá vỡ quá nhiều thiết kế, quá gần và điều chỉnh để thiết kế tốn kém nhiều như họ đã từng đã thực hiện "đặt trong đá" trong quá trình phát triển. Mỗi trạm biến áp là 2-4 lần chạy nước rút có giá trị cho 1 nhà phát triển.

Trong các dự án nhỏ hơn, chúng tôi chỉ có cùng một nhà phát triển thiết kế trước> đăng xuất> hóa đơn> phát triển> đăng xuất> hóa đơn ... theo chu kỳ.

Vấn đề đặt tên thử nghiệm

Thử nghiệm có nhiều mặt, chính thức có khoảng 7 catagories của các thử nghiệm với mỗi phần phụ ... một trong những thử nghiệm sau này là "viết thử nghiệm đơn vị tự động".

Tên xấu của nó là "thử nghiệm phát triển đầu tiên" hoàn toàn là do các nhà phát triển hiểu về "thử nghiệm" nghĩa là gì trong bối cảnh này, họ thấy các thử nghiệm là viết mã thực tế cho thử nghiệm đối với giao diện cho giả định. Khi nó hoàn toàn không thực sự ... bạn có thể làm điều này khi viết mã nhưng nó thực sự "xác nhận thiết kế chống lại các trường hợp sử dụng và câu chuyện người dùng TRƯỚC KHI bắt đầu viết mã" ... thực hiện đúng cách này sẽ loại bỏ nhiều về các vấn đề thường được phát hiện trong quá trình phát triển trong khi nó vẫn ở phiên bản "giấy có thể vứt đi" rẻ hơn nhiều.


3

Một trong những yếu tố chính của Agile là ý tưởng cải tiến liên tục và ý tưởng rằng toàn bộ nhóm sở hữu dự án. Vì vậy, cách tiếp cận đúng sẽ là xem xét các vấn đề với nhóm và để nhóm quyết định cách khắc phục.

Một thành viên trong nhóm tự mình thực hiện, bỏ qua tất cả các nguyên tắc của Agile và thực hiện mọi thứ theo cách riêng của mình có thể dẫn đến một lượng nhỏ mã hoạt động tốt nhưng nó không thực sự thúc đẩy toàn bộ dự án theo hướng tích cực.


Âm thanh với tôi như thúc đẩy dự án là chính xác những gì nó đã làm. "Đánh giá với nhóm" thực sự không phải là một giải pháp, đó chỉ là một cách trì hoãn giải pháp và truyền bá trách nhiệm.
Aaronaught

Nhóm đã chịu trách nhiệm về kết quả. Những gì họ cần là cho ai đó nói, "Chúng ta đang rối tung lên, làm thế nào để chúng ta thay đổi phương pháp của mình?" Sau đó, họ sửa nó.
Dave

2
Tôi có ấn tượng rằng những gì nhóm đặc biệt này cần là cho các thành viên của mình học cách tự suy nghĩ thay vì mù quáng tuân theo quy trình mà họ không hiểu. Nói chuyện sẽ không hoàn thành bất cứ điều gì nếu nó đã là một buồng vang.
Aaronaught

2

Một cách để khiến chúng hoạt động có thể là tạo một Bản đồ T bao gồm tất cả nhật ký chạy nước rút của bạn

Bản đồ

Mỗi đội có một chủ đề, mỗi lần chạy nước rút là một khoảng thời gian. Tất cả đều gắn kết với nhau (đó là nơi nhóm của bạn dường như sụp đổ). Ghim cái này lên một nơi nào đó và lấy nam châm để thể hiện các cặp / chuỗi phụ. Họ thậm chí có thể 'đua'. Nhưng mọi người đều biết họ và các đội khác đang ở đâu. Đặt phụ thuộc lên đây nếu có.

Vấn đề ở đây là bạn truyền đạt toàn bộ quá trình nhưng cũng chia nó thành các lần chạy nước rút. Ngay cả khi chỉ có lần chạy nước rút đầu tiên được đưa vào đó, và các giai đoạn khác đều trống thì đây sẽ là một lộ trình tuyệt vời để hoàn thiện dự án.


1

Bạn có hai vấn đề: không đủ hình dạng theo yêu cầu và kiến ​​trúc kém.

Yêu cầu

Bạn cần cả mục tiêu cuối cùng và lộ trình chi tiết về cách đến đó.

Trong thế giới thác nước, mục tiêu cuối cùng là đặc tả chức năng và lộ trình làm thế nào để đến đó là kế hoạch dự án.

Trong thế giới nhanh, một cách là ghi lại nó trong một câu chuyện người dùng hoành tráng. Sau đó, lộ trình là những câu chuyện người dùng chi tiết xác thịt chi tiết của sử thi.

Tôi chưa bao giờ hoàn toàn hài lòng với câu chuyện đó, bởi vì câu chuyện sử thi không bao giờ thu thập đủ thịt để vượt qua toàn bộ ý tưởng. Vì vậy, những gì tôi có xu hướng sử dụng là một tài liệu yêu cầu hệ thống cấp cao kết hợp với một hoặc hai câu chuyện người dùng sử thi. Sau đó, lộ trình là những câu chuyện người dùng chi tiết.

Điều tuyệt vời khi có một tài liệu yêu cầu hệ thống là sau đó các tiêu chí chấp nhận cho nhiều câu chuyện của người dùng có thể được rút ra.

Hãy nghĩ về tài liệu yêu cầu hệ thống cấp cao như một "tấm cắt" mà tiếp thị có thể sử dụng để bán sản phẩm cho một khách hàng am hiểu về kỹ thuật.

Ngành kiến ​​trúc

Một trong những điều mà "tấm cắt" mang lại cho bạn là nó đặt ranh giới trên hệ thống bạn đang thiết kế. Điều đó cho phép bạn đưa ra quyết định sáng suốt, sớm, về kiến ​​trúc sẽ sử dụng.

Nếu nhóm của bạn đã có một tài liệu như vậy từ sớm, bạn sẽ không phải trải qua nỗi đau của việc tái kiến ​​trúc hệ thống sau này.


Trên thực tế, một vấn đề thứ ba bạn có là giao tiếp kém. Giao tiếp là một con đường hai chiều (hoặc đa chiều giữa nhiều người). Tuy nhiên, đó chỉ là một thất bại của con người và (đôi khi) phải nỗ lực siêu phàm để có được quyền.

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.