Vai trò của nhà phát triển chính trong một nhóm nhanh nhẹn là gì?


42

Trong một nhóm phát triển không nhanh nhẹn, một nhà phát triển chính nói chung :

  • Đặt tiêu chuẩn (mã hóa và cách khác)
  • Nghiên cứu các công nghệ mới cho nhóm
  • Đặt hướng kỹ thuật cho đội
  • Có tiếng nói cuối cùng về các vấn đề
  • Thiết kế kiến ​​trúc của một hệ thống

Tuy nhiên, một nhóm nhanh nhẹn làm việc khác nhau:

  • Một nhóm nhanh nhẹn sẽ dựa vào thiết kế mới nổi, thay vì lên phía trước
  • Một nhóm nhanh nhẹn thiết kế cùng nhau, thay vì thiết kế bị chỉ định bởi một người
  • Một nhóm nhanh nhẹn quyết định theo hướng kỹ thuật của riêng họ, tốt nhất là giao dự án

Trường hợp này để lại một nhà phát triển chính trong một nhóm nhanh nhẹn? Có thể có một nhà phát triển chính trong một nhóm nhanh nhẹn? Có một đội ngũ nhanh nhẹn đòi hỏi trách nhiệm khác nhau từ một người lãnh đạo?


Trả lời Matts bình luận cuối cùng tôi sẽ nói thêm rằng nhà phát triển chính phải là người đưa ra quyết định kiến ​​trúc quan trọng ảnh hưởng đến nhiều thành phần của hệ thống. Ngoài ra anh ấy là một trong những người mang khả năng đáp ứng này và nên thay đổi suy nghĩ của mình nếu mọi thứ đang đi sai.
dùng2236631

Câu trả lời:


46

Không có gì thay đổi nhanh chóng như thế nào nhà phát triển chính nên hoạt động. Họ nên liên quan đến phần còn lại của nhóm với các quyết định kiến ​​trúc hệ thống và định hướng kỹ thuật cho dù mô hình phát triển nào đang được tuân theo.

Đưa ra quyết định bằng sắc lệnh là một cách khủng khiếp cho bất kỳ nhóm phát triển nào. Agile chỉ làm cho việc mua từ phần còn lại của nhóm trở thành một quy trình rõ ràng hơn và một nhà phát triển chính nên đã làm điều đó bằng mọi cách.

Chỉ vì không có vai trò nhà phát triển chính được thiết lập trong phương pháp scrum không có nghĩa là các ý kiến ​​lập trình viên có kinh nghiệm hơn không được tôn trọng nhất. Agile không để mọi người tự phát triển và sau đó cố gắng gắn kết tất cả lại với nhau, vẫn còn một tầm nhìn và hướng thống nhất cần được đặt ra.


Bạn có thể thêm một số làm rõ cho những gì bạn có nghĩa là, "Đưa ra quyết định bằng sắc lệnh là một cách khủng khiếp cho bất kỳ nhóm phát triển nào để chạy"? Tôi đồng ý với phần còn lại của bài viết của bạn nhưng tôi chỉ đồng ý với tuyên bố được đề cập theo những cách nhất định chứ không phải những người khác. Ví dụ, làm thế nào để quyết định sử dụng SOA trên tầng cơ sở dữ liệu? Đó sẽ không phải là một sắc lệnh hay ai đó sẽ không có tiếng nói cuối cùng? Tôi hỏi bởi vì tôi là một nhóm trưởng và gặp phải tình huống này. Tôi đã thực hiện một cuộc gọi không sử dụng SOA dựa trên nhu cầu kinh doanh. Không có đủ thời gian để cho phép tất cả các nhà phát triển thảo luận / tranh luận mọi điểm.
Brian

@Brian đưa ra quyết định kiến ​​trúc sẽ là một câu chuyện trong một lần chạy nước rút, có thể là một câu chuyện dành cho một thành viên cụ thể nhưng khác với bất kỳ câu chuyện nào khác. Nó phải được đánh giá ngang hàng như bất kỳ câu chuyện khác. Cuộc tranh luận về thời gian thật nhảm nhí, nếu bạn tình cờ bỏ lỡ X hoặc quyết định thử Z rằng mọi người khác trong nhóm không quen thuộc với bạn, bạn sẽ dành nhiều thời gian hơn để phát triển, thậm chí cả ngày tranh luận về thiết kế sẽ không đáng kể . Một cuộc họp / đánh giá đơn giản để nói "Tôi đã chọn A vì X, Y, Z." có thể sẽ mất một giờ và làm cho nó trở thành một nỗ lực hợp tác.
Ryathal

30

Trong một đội ngũ nhanh nhẹn, mọi người có nghĩa vụ phải đặt cái tôi của mình sang một bên.

Nếu một thành viên của nhóm nhanh nhẹn có nhiều kinh nghiệm hơn những người khác thì điều có thể xảy ra là thành viên có kinh nghiệm sẽ tham gia vào hầu hết các đánh giá mã và mọi người sẽ thường trì hoãn trải nghiệm của người đó khi đưa ra quyết định của nhóm.

Vì vậy, một nhà phát triển "dẫn đầu" sẽ tiếp tục "dẫn đầu", nhưng là kết quả tự nhiên của kinh nghiệm của họ và không phải là chức năng bắt buộc của tiêu đề của họ.

Đó là trong một thế giới lý tưởng nơi mọi người có thể đặt cái tôi của mình sang một bên. Chúc may mắn!


Không đồng ý. Tôi đã thấy quá thường xuyên một quyết định vội vàng do chính nhà phát triển đưa ra với hậu quả xấu chỉ vì khách hàng tiềm năng không ở đó và nhà phát triển không quen với tình huống như vậy. Mèo chăn gia súc, tôi nói với bạn.
andrew.fox

20

Ngoài câu trả lời của Ryathal :

Bạn nói về thiết kế nổi dần và hướng nhóm như thể chúng chảy ra từ đội trong sự đồng nhất và hòa hợp hoàn hảo. Các nhóm người, nhóm lập trình viên đặc biệt có xung đột . Là đội trưởng, công việc của bạn trong một đội nhanh nhẹn là trọng tài hoặc chất xúc tác hơn là trong thác nước. Khi nhóm có mâu thuẫn về việc sử dụng thiết kế nào chẳng hạn, bạn sẽ đảm bảo rằng mọi người có tiếng nói bình đẳng và kiên quyết tranh luận về công trạng. Và cuối cùng bạn trở thành trọng tài cho giải pháp được đề xuất mà nhóm sẽ đi theo khi đường dẫn không rõ ràng.

Đây là một trong những trách nhiệm quan trọng nhất của người lãnh đạo, nhưng rất nhiều thứ khác là cần thiết để biến một nhóm người thành một nhóm. Bạn vẫn cần phải nêu một ví dụ về mã hóa tốt, và thường thực thi điều đó (trực tiếp hoặc bằng cách tạo ra một nền văn hóa để làm điều đó). Bạn cần tạo điều kiện liên lạc giữa tất cả các thành viên trong nhóm của mình, bởi vì một lần một ngày tại standup sẽ không cắt giảm.

Điều quan trọng khác bạn đã bỏ qua là các cuộc họp. Việc đưa toàn bộ nhóm đến mọi cuộc họp trong đó nhóm cần tương tác với các doanh nhân, các nhóm kỹ thuật khác, v.v. Là người lãnh đạo nhóm, bạn là đại diện của nhóm. Bạn đi đến các cuộc họp để họ có thể ở lại bàn của họ và hoàn thành công việc. Bạn là điểm liên lạc để họ không bị gián đoạn bởi những người dừng lại trực tiếp. Và bạn làm việc để lấy thông tin từ thế giới bên ngoài (những đội khác đang làm việc, những đội nhanh nhẹn trông như thế nào trong lần chạy nước rút tiếp theo, tình trạng của req mở đó, v.v.), đun sôi cho họ và truyền đạt thông tin đó.

Nói tóm lại, bạn là chất bôi trơn để đảm bảo rằng chúng có thể chạy trơn tru.


1
Điều này đặc biệt quan trọng trong các cuộc họp "Timeboxed", nghĩa là cuộc họp hoặc thảo luận cụ thể, sẽ không kéo dài hơn X phút. Vào cuối thời gian, ai đó đưa ra quyết định và giữ cho quá trình di chuyển. Đây có thể là Nhà phát triển chính cho kiến ​​trúc hệ thống và các cuộc thảo luận liên quan.
Chris

1
Vâng đặt. Một nhà phát triển chính cũng cần được hướng tới để cải thiện trải nghiệm và sự hiểu biết về đội ngũ mà họ tham gia, với kế hoạch dài hạn là không chỉ là một "người dẫn đầu" mà là một thành viên của một nhóm đồng nghiệp.
David 'gừng hói'

Những gì bạn đã mô tả là một ScrumMaster.
DBedrenko

6

Mô tả không nhanh nhẹn của bạn không làm mất hiệu lực mô tả nhanh của bạn.

Một nhóm nhanh nhẹn sẽ dựa vào thiết kế mới nổi, thay vì lên phía trước.

Không có gì về định nghĩa của bạn về một nhà phát triển chính nói rằng thiết kế phải được đưa lên phía trước. Anh ta có thể định hướng, và anh ta vẫn có thể đặt ra một thiết kế ban đầu. Thiết kế đó chắc chắn là xuất hiện.

Một nhóm nhanh nhẹn thiết kế cùng nhau, thay vì thiết kế bị chỉ định bởi một người

Không có gì về định nghĩa của bạn về một nhà phát triển chính nói rằng anh ta ra lệnh thiết kế. Mặc dù anh ta có thể có tiếng nói cuối cùng, nhưng chỉ có một người dẫn đầu kém sẽ hoàn toàn coi thường suy nghĩ của các đồng đội đa số của anh ta. Mặt khác, chỉ có một đội nghèo sẽ hoàn toàn không quan tâm đến suy nghĩ của nhà phát triển chính.

Một nhóm nhanh nhẹn quyết định theo hướng kỹ thuật của riêng họ, tốt nhất là giao dự án

Một lần nữa, điều này không có nghĩa là ban đầu không đặt ra hướng này. Dẫn đầu là một phần của đội ngũ nhanh nhẹn này. Ngay cả trong một môi trường không nhanh nhẹn, chỉ có một người lãnh đạo kém sẽ tiếp tục diễu hành một đội theo hướng đã nói khi nó trở nên không khả thi, hoặc khi thông tin mới được đưa ra để vô hiệu hóa hướng này.


6

Câu hỏi đặt ra một vài câu hỏi khác. Bạn nghĩ bạn đủ điều kiện để nói với một nhóm các kỹ sư phần mềm đồng nghiệp phải làm gì? Đó có phải là kinh nghiệm của bạn? Có phải đó là tiêu đề nhỏ vui mà ông chủ của bạn trao cho bạn? Có phải đó là bản ngã của bạn? Nhiệm kỳ của bạn tại công ty? Có phải đó là "nỗi hoang mang?" Phong cách của bạn?" "Kỹ năng lãnh đạo của bạn?"

Các đội Agile không trao huy hiệu hoặc mũ cho nhau mà nói "Xin chúc mừng, bạn là siêu thiên tài của chúng tôi - bạn là người duy nhất được phép làm công việc thiên tài siêu bí mật kép." Thay vào đó, trọng tâm là CÔNG VIỆC TẠI TAY. Nếu bạn thực sự có nhiều kinh nghiệm hơn, thì trải nghiệm đó sẽ cho thấy các thiết kế của bạn thúc đẩy công việc tiến tới hoàn thành tốt như thế nào. Bài tập tự chọn (thẻ) của bạn sẽ phản ánh các lĩnh vực mà bạn là chuyên gia nhất. Mặt khác, nếu một đứa trẻ nào đó ra khỏi trường đại học có một ý tưởng tốt hơn, và nó phù hợp với bối cảnh tốt hơn những gì mà một cựu chiến binh 40 tuổi xuất hiện với, tại sao chúng ta sẽ đi với thiết kế kém hơn? Nơi làm việc của chúng tôi không phải là văn phòng trị liệu - chúng là nơi chúng tôi đến để xây dựng những điều tuyệt vời.

Điều đó đặt ra một câu hỏi khác: ai sẽ quyết định "tốt hơn" nghĩa là gì? Câu trả lời: đội ngũ các bên liên quan. Điều đó có nghĩa là các nhà phát triển, người yêu cầu, người thử nghiệm, người kinh doanh, v.v., những người xây dựng và sử dụng những thứ đang được đề cập đến. Nếu bạn có một ý tưởng tuyệt vời, tốt hơn bạn có thể chứng minh tại sao nó tốt hơn. Nếu bạn không thể làm điều đó, thì không có lý do gì để nhóm tin rằng ý tưởng của bạn tốt hơn. Agile khuyến khích công đức.

Vì vậy, những gì xảy ra với "trưởng nhóm phát triển?" nhanh nhẹn? Không có gì - họ chỉ sống tốt hơn với cái tên đó - họ THỰC SỰ CÓ THỂ sản xuất phần mềm tốt hơn những người khác trong nhóm. Mặt khác, không có lý do gì để gọi họ là "khách hàng tiềm năng" - đó chỉ là một huy hiệu nhỏ hoặc chiếc mũ ngộ nghĩnh, và nó thật vô nghĩa. Rất nhiều người tìm thấy mối đe dọa này. Họ cảm thấy như họ đã "làm việc" cho một huy hiệu hoặc chiếc mũ ngộ nghĩnh. Các nhà phát triển giỏi không làm việc cho những chiếc mũ ngộ nghĩnh. Họ làm việc để xây dựng phần mềm tuyệt vời và họ dự định làm điều đó cho đến khi họ vặn vẹo - mục tiêu của họ là cải thiện phần mềm mỗi ngày. Nếu đó không phải là bạn, có lẽ bạn có thể muốn xem xét quản lý dự án. Có lẽ bạn sẽ hạnh phúc hơn.


+1 cho "CÔNG VIỆC TẠI TAY". Tôi đồng ý tập trung vào giải pháp tốt nhất cho những gì bạn phải cung cấp ngay bây giờ. Đó không phải là về những người đưa ra ý tưởng.
Kwebble

Nếu tất cả những gì một người lãnh đạo nhóm phát triển làm trong nhóm SCRUM theo bạn là "sản xuất phần mềm tốt hơn những người khác trong nhóm", thì tất cả những gì họ là nhà phát triển không có trách nhiệm phân biệt. Đó có phải là điểm được đề xuất bởi câu trả lời của bạn? Mặt khác, điều này thực sự không trả lời cho câu hỏi làm thế nào một nhà phát triển phù hợp với một đội SCRUM.
DBedrenko

Có nó làm. Họ là một kỹ sư giỏi, vì vậy họ có vai trò là một kỹ sư (về mặt kỹ thuật, là "thành viên trong nhóm"). Có gì khác họ sẽ là gì?
Calphool

3

Theo kinh nghiệm của tôi về Agile, toàn bộ nhóm phát triển được giao ít trách nhiệm hơn so với các ví dụ của bạn, khiến nhà phát triển và kiến ​​trúc sư trưởng phải điều phối các lựa chọn thiết kế cấp cao nhất, nhưng giao toàn bộ thiết kế cấp thấp hơn cho toàn bộ nhóm nhanh nhẹn.

Vì vậy, nhà phát triển chính vẫn chịu trách nhiệm về các lựa chọn công nghệ và kiến ​​trúc hệ thống. Điều này rất quan trọng: mặc dù nhanh nhẹn khuyến khích thiết kế nổi bật và tái cấu trúc điều này sẽ xảy ra ở cấp độ của các đối tượng mã. Toàn bộ hệ thống cần phải có mức độ thiết kế trước lớn hơn và độ cứng khác, các rủi ro dự án sẽ trở thành một mớ hỗn độn không điều phối.

Trong dự án của chúng tôi, nhà phát triển chính đã yêu cầu các lựa chọn công nghệ và thiết kế cách các thành phần hệ thống sẽ tương tác với nhau. Các cuộc họp lập kế hoạch nhanh nhẹn tập trung vào cách thiết kế các thành phần đó trong các nhiệm vụ cấp cao hơn của mình. Như một sự dễ chịu sang một bên, điều này giữ một giới hạn phạm vi cho các cuộc họp lập kế hoạch mệt mỏi.

Ông cũng có chức năng như là điểm cuối cùng. Khi các lập trình viên cá nhân gặp phải vấn đề mà họ không thể khắc phục, họ sẽ đi đầu và trách nhiệm cuối cùng để sửa chữa mọi thứ là của anh ta.


Điều này tương tự với kinh nghiệm của tôi, nhưng tôi thực sự nghĩ rằng có nhiều "huy hiệu" và "mũ" hơn mức cần thiết. Hầu như không có sự khác biệt giữa cách một nhà phát triển giỏi nghĩ về một thiết kế và những gì một kiến ​​trúc sư nghĩ về một thiết kế.
Calphool
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.