Điều gì đã xảy ra với mô hình nhóm Phẫu thuật của nhóm Phẫu thuật từ Từ Người đàn ông huyền thoại Tháng tháng?


164

Cách đây nhiều năm, khi tôi đọc Tháng huyền thoại, tôi đã tìm thấy rất nhiều thứ mà tôi đã biết từ các nguồn khác. Tuy nhiên, cũng có những điều mới trong đó, mặc dù cuốn sách có từ năm 1975. Một trong số đó là:

Đội phẫu thuật

Mills đề xuất rằng mỗi phân khúc của một công việc lớn sẽ giải quyết một nhóm, nhưng nhóm đó được tổ chức giống như một đội phẫu thuật chứ không phải là một nhóm làm thịt lợn. Đó là, thay vì mỗi thành viên cắt giảm vấn đề, một người sẽ cắt giảm và những người khác cung cấp cho anh ta mọi hỗ trợ sẽ nâng cao hiệu quả và năng suất của anh ta.

Đây là một mô hình rất thú vị để tổ chức một nhóm phát triển phần mềm, nhưng tôi chưa bao giờ thấy nó được mô tả trong bất kỳ cuốn sách Kỹ thuật phần mềm nào khác, thậm chí không được đề cập ở bất cứ đâu.

Tại sao vậy?

  • Có phải "Đội phẫu thuật" thậm chí còn bất thường khi đó?
  • Hoặc, nó đã được thử và thất bại?
    • Nếu vậy, làm thế nào nó thất bại?
    • Nếu không, tại sao chúng ta không thấy mô hình đó được triển khai trong các dự án phần mềm ngày nay?

12
Tôi muốn nói rằng điều này chỉ có thể mang lại câu trả lời dựa trên ý kiến. Ý kiến ​​khó hiểu của tôi là không có "kỹ sư phần mềm" nào muốn được xem là vai trò "hỗ trợ". Họ muốn được coi là bình đẳng với mọi người khác trong đội. Điều này có thể liên quan đến thực tế, rằng phần lớn các nhà phát triển phần mềm còn rất trẻ. Hầu hết các đội không có ai có thể yêu cầu thâm niên và được coi là "bác sĩ phẫu thuật" của đội.
Euphoric

43
Một vấn đề tiềm năng mà tôi thấy khi bạn cố tình tổ chức một đội theo cách đó là xác định chính xác ai là bác sĩ phẫu thuật.
Bart van Ingen Schenau

9
@Euphoric Đừng quên một số nhà quản lý ảo tưởng rằng họ đã có lập trình viên phẫu thuật viên siêu uber-guru-star, vậy tại sao lại tuyển dụng tất cả những người nông dân hỗ trợ đó ngay từ đầu? Tôi đã thấy phần chia sẻ của tôi không thể hiện bằng chứng về sự hiểu biết về phát triển phần mềm và những thách thức vốn có của nó trong khi "quản lý" các nhóm phần mềm, hoặc nhiều thứ khác ngoài bảng tính excel đầy màu sắc của họ, thật không may (thường là, không phải lúc nào cũng vậy, những người gần nghỉ hưu ).
code_dredd

7
Nó có thể có liên quan đến thực tế rằng "phẫu thuật" là một trong những ngành y học lạc hậu nhất - thực sự, đó là một trò đùa nổi tiếng ở Anh rằng các bác sĩ phẫu thuật dành 7 năm để nghiên cứu để họ có thể được gọi là "bác sĩ", và sau đó 7 năm nữa để họ có thể được gọi là "Mr" hoặc "Mr" một lần nữa! Trong thực tế, tổ chức lại phẫu thuật để cải thiện hiệu suất của nó bằng cách tuân theo "thực tiễn tốt nhất" của các ngành khác với tỷ lệ lỗi thấp hơn nhiều, v.v. (đặc biệt là hàng không dân dụng) là một nỗ lực không ngừng trong ngành y tế. ...
alephzero

6
@alephzero: Đó là một vài tuyên bố hài hước. Chính xác thì bạn đã thực hành phẫu thuật ở đâu? Ở đây, số lượng tào lao mà bạn gọi là "thực hành tốt nhất" chiếm phần lớn thời gian của bác sĩ phẫu thuật và nó mang lại lợi ích bằng không. Những người siêu thông minh [mỉa mai] cố gắng hết sức để cải thiện điều mà họ không hiểu bằng cách thêm nhiều chuyện tào lao quan liêu vào đó hầu như mỗi tuần. Các nguyên nhân của tỷ lệ thất bại mà bạn đề cập tuy nhiên không được giải quyết, ngược lại. Hầu như tất cả các thất bại là do thiếu ngủ, thiếu giáo dục và ước tính quá mức. Thường thì cả ba người cùng nhau.
Damon

Câu trả lời:


103

"Tháng huyền thoại" ra đời vào năm tôi bắt đầu học đại học và, để sử dụng tiếng địa phương hiện tại, UUUGE! :-) Điều bạn cần hiểu là sự khác biệt trong cách phần mềm được phát triển THEN so với NGAY BÂY GIỜ. Back In The Day (tm) gần như tất cả mã hóa được thực hiện trên giấy trước, sau đó được gõ vào thẻ (bạn đoán nó), sau đó được đọc, biên dịch, liên kết, thực hiện, thu được kết quả và quá trình được lặp lại. Thời gian CPU là một tốn kémvà nguồn lực hạn chế và bạn không muốn lãng phí nó. Ditto và tương tự không gian đĩa, thời gian ổ băng, vv, blah. Lãng phí thời gian CPU hoàn toàn tốt trên một trình biên dịch dẫn đến lỗi (sốc và kinh hoàng!) Là ... tốt, lãng phí thời gian CPU hoàn toàn tốt. Và đây là vào năm 1975. Vào thời điểm Fred Brooks đang phát triển ý tưởng của mình, đó là thời điểm CPU từ giữa đến cuối năm 1960 thậm chí còn nhiều hơnđắt tiền, bộ nhớ / đĩa / bất cứ thứ gì thậm chí còn bị giới hạn THÊM, v.v. Ý tưởng đằng sau Nhóm phẫu thuật là đảm bảo rằng Nhà phát triển One Super Great Rockstar không phải lãng phí thời gian của mình vào các nhiệm vụ trần tục như kiểm tra mã bàn phím, gõ phím, nộp công việc, chờ đợi (đôi khi hàng giờ) để có kết quả. Rockstar Dude Developer Man sẽ được VIẾT MÃ. Quân đoàn của ông gồm các nhóm / thư ký / nhà phát triển cơ sở được cho là làm những việc trần tục.

Vấn đề là trong vòng 2 năm cuốn sách của Brooks được xuất bản, những ý tưởng cơ bản đằng sau Nhóm phẫu thuật đã bị phá vỡ:

  1. Thiết bị đầu cuối CRT và các tập tin đĩa bắt đầu thay thế bàn phím và bộ bài. Thời gian máy tính trở nên ít tốn kém hơn, nhiều máy tính trở nên có sẵn và thời gian quay vòng công việc giảm đáng kể. Khi tôi vào đại học (Đại học Miami, Oxford, Ohio, lớp '79, cảm ơn vì đã hỏi) tốtquay vòng công việc là khoảng một giờ. Trong tuần chung kết - bốn giờ, có thể, đôi khi sáu. (Chúng tôi đã cạnh tranh về thời gian CPU với một loạt các công ty thương mại và trường đại học - và người dùng thương mại được ưu tiên hàng đầu). Trong năm cuối cấp của tôi, đến thời điểm đó, Miami đã thoát khỏi sự sắp xếp "máy tính dùng chung" của họ, đã cài đặt IBM 370/145 trong khuôn viên trường và có một chiếc HP mini tuyệt vời mà tôi đã làm việc như một trạm RJE, chúng tôi có thể biến máy tính lớn công việc xung quanh trong năm phút hoặc ít hơn. Bây giờ đáng để đập mã của bạn vào HP, gửi mã từ HP đến máy tính lớn, vặn ngón tay cái / hút thuốc lá và lấy lại đầu ra của bạn lâu trước khi bạn có thể hoàn thành việc kiểm tra mã của mình.

  2. Nhóm phẫu thuật có tiền đề cơ bản là ý tưởng rằng bạn (hoặc "quản lý", chúa sẽ giúp tất cả chúng ta) có thể xác định được anh chàng nhà phát triển phẫu thuật Rockstar. Trong thực tế, tôi nghi ngờ điều đó là có thể. Có những nhà phát triển rockstar, mọi người đều biết điều đó - các nghiên cứu đã chỉ ra sự khác biệt về năng suất giữa những nhà phát triển tốt nhất và tồi tệ nhất tới 2000% - nhưng xác định người đó mà không cần họ viết mã trong một khoảng thời gian dàirất có thể là không thể. Cách duy nhất để biết ai đó là nhà phát triển rockstar là để họ thực sự phát triển mã - nhưng nếu họ KHÔNG phải là Nhà phát triển phẫu thuật Rockstar, họ sẽ làm những việc thú vị như kiểm tra mã của anh ta, gõ mã vào thẻ và sắp xếp các hộp thẻ đục lỗ xuống bộ phận Tuyển dụng, sau đó đứng chờ kết quả để họ có thể đưa chúng trở lại cho ông Rockstar Phẫu thuật phát triển phẫu thuật thay vì học cách viết mã theo cách duy nhất thực sự hoạt động - bằng cách viết mã, gỡ lỗi mã, và v.v. Back In The Day (tm) không có cuộc thi lập trình, không có Stack Overflow, bạn không có PC mà bạn có thể viết mã bất cứ khi nào bạn cảm thấy thích, không có thuật toán cho sách Idiots - cách duy nhất để học lập trình là đi học và chuyên ngành ở một nơi mà bạn phải làm một chút về lập trình. Nhưng lập trìnhper se không được thực hiện nghiêm túc, và nó được coi là điều mà mọi người không muốn làm . Trong khóa học đại học đầu tiên của tôi (SAN151 - Giới thiệu về phân tích hệ thống, Tiến sĩ Tom Schaber - cảm ơn, Tom :-) chúng tôi đã được người hướng dẫn nói rằng "... chúng tôi phải đối mặt với thực tế là chúng tôi phải chi tiêu vài năm làm lập trình viên trước khi chúng tôi có thể trở thành nhà phân tích hệ thống ". "Hai năm?", Tôi nghĩ. "TÔI CHỈ CÓ THỂ LÀM ĐIỀU NÀY TRONG HAI NĂM?!?". Tôi đã rất buồn. Rất may anh ấy đã sai và tôi đã mã hóa khá nhiều kể từ đó. :-)

  3. Nhóm phẫu thuật giả định rằng các lập trình viên là một nguồn tài nguyên tương đối hiếm. Phải mất thêm vài năm nữa, nhưng với sự ra đời của PC vào đầu những năm 80 đã trở thành thứ mà bất kỳ người đam mê nào cũng có thể tham gia. Giá máy tính bắt đầu giảm, giá của các công cụ phát triển bắt đầu giảm, và tất cả đã ca ngợi Turbo Pascal - theo tiêu chuẩn ngày nay thì không nhiều nhưng vào thời điểm đó, nó là một IDE Pascal hoàn chỉnh với giá khoảng 40 đô la, điều này hoàn toàn vô nghĩa! Bây giờ BẤT CỨ NÀO có thể tham gia lập trình - nếu bạn có đủ khả năng mua máy tính và khi IBM quyết định đặt PCjr (vâng, PC đầu tiên của tôi là một trong những sai lầm lớn nhất của IBM :-) được bán với giá khoảng 500 đô la để loại bỏ những con gà tây, tiền mặt các chuyên viên máy tính bị mắc kẹt ở khắp mọi nơi đã bỏ qua các khoản thanh toán tiền thuê nhà của họ trong một tháng ("Vâng, tôi biết, nhưng tôi, uh ... đã phá vỡ uuvula của tôi và phải phẫu thuật và .. .uh ... yeah, tuần tới, không có vấn đề gì, cảm ơn, anh bạn ...) và hút chúng lên với giá bán cháy. Sau đó, chi nhiều hơn chúng tôi đã trả tiền cho máy tính cho các tiện ích bổ sung để làm cho nó có thể sử dụng được. ("Vâng, anh bạn, tuần tới, chắc chắn, có lẽ ..." :-).

Điều khiến tôi thực sự buồn là ngay cả ngày hôm nay, nếu bạn hỏi mọi người rằng họ đã từng đọc "Tháng huyền thoại" hay hiểu bài học chính của nó ("Thêm tài nguyên vào một dự án muộn sẽ khiến bạn bỏ trống") nhìn chằm chằm - và sau đó tiến hành thực hiện các lỗi chính xác giống như đã xảy ra trong suốt những năm đó trong quá trình phát triển OS / 360. Mọi chuyện cũ sẽ mới trở lại thôi... :-}


20
Nếu bất cứ ai đọc cuốn sách này đều có phiên bản Kỷ niệm 20 năm của cuốn sách, thì đáng để đọc phần mở đầu mới và chương mới 19. Trong khi ngay cả phiên bản kỷ niệm 20 năm đã hơn 20 tuổi vào năm 2017, tác giả đã chỉ ra một số khẳng định trong câu trả lời này thường bị bỏ qua khi vội vàng tóm tắt toàn bộ cuốn sách là "việc thêm các kỹ sư vào một dự án đã muộn khiến nó càng muộn hơn."

1
"UUGE" trên thế giới có nghĩa là gì? Bằng cách này, câu trả lời tuyệt vời.
Wayne Conrad

5
@WayneConrad vernacular cho rất lớn .
zzzzBov

1
Đã từng là một lập trình viên hệ thống của IBM trong giai đoạn đó, thông thường có các vai trò được xác định rất chặt chẽ trong nhóm, với một chuyên môn trong một phần cụ thể của HĐH. Người trong mỗi vai trò đó sẽ được biết là biết hoặc tìm hiểu mọi thứ cần biết về nó và đóng vai trò là nhân viên hỗ trợ cho bất kỳ chuyên gia nào khác. Về cơ bản, chúng tôi đã kết thúc với một đội phẫu thuật cho mỗi thành viên của đội ngũ nhân viên, mỗi người có chuyên môn riêng.
Joe McMahon

1
Đáp lại bình luận của bạn về việc lặp đi lặp lại những lỗi tương tự, bài viết trên Wikipedia cho cuốn sách có một câu trích dẫn của tác giả mà bạn có thể thích: Xu hướng các nhà quản lý lặp lại những lỗi như vậy trong phát triển dự án khiến Brooks châm biếm rằng cuốn sách của anh ta được gọi là "Kinh thánh về Kỹ thuật phần mềm", bởi vì "mọi người đều trích dẫn nó, một số người đọc nó và một vài người đọc nó".
Ryan

87

Có một số khía cạnh của khái niệm rằng đó đôi khi thực hiện ngày hôm nay, có những khía cạnh khác mà tránh .

Giữ các nhóm nhỏ là một trong những tính năng cơ bản của Phương thức Agile, nhưng cũng được thực hành bên ngoài Agile.

Các nhóm chức năng chéo cũng là một nhóm chủ yếu của Agile, nhưng cũng phổ biến bên ngoài Agile.

Vai trò của Thư ký chương trình phần lớn được đảm bảo bởi các hệ thống máy tính như Hệ thống kiểm soát phiên bản, Hệ thống quản lý cấu hình phần mềm, Hệ thống quản lý thay đổi, Hệ thống quản lý tài liệu, Wikis, Hệ thống xây dựng liên tục với kho lưu trữ nhân tạo, v.v. Ý tôi là, bạn thực sự có thể tưởng tượng việc trả tiền cho một nhân viên toàn thời gian để in mã nguồn, và lập chỉ mục thủ công và nộp nó không?

Tương tự, vai trò của Quản trị viên hệ thống (không phải là một phần của Nhóm phẫu thuật của Miller, nhưng là một phần của nhóm chức năng chéo điển hình của những năm trước) đang bị các khái niệm như DevOps (đưa vai trò của Sysadmin vào vai trò của Kỹ sư phần mềm). , Nền tảng như một dịch vụ, Cơ sở hạ tầng như một dịch vụ và Điện toán tiện ích (làm cho vai trò của Sysadmin trở thành "vấn đề của người khác") hoặc Cơ sở hạ tầng (biến Quản trị hệ thống thành Kỹ thuật phần mềm).

Một trong những khía cạnh mà chúng tôi cố gắng tránh ngày hôm nay, đó là nhiều nhất là hai người hiểu hệ thống. Chỉ có bác sĩ phẫu thuật được đảm bảo để hiểu hệ thống đầy đủ, phi công phụ có thể hoặc không. Điều này cho hệ số xe buýt từ 1 đến 2. Nếu bác sĩ phẫu thuật bị bệnh, dự án đã chết. Giai đoạn = Stage. Câu trả lời của Agile cho vấn đề đó là Quyền sở hữu mã tập thể, điều hoàn toàn ngược lại với mô hình đó: không ai chịu trách nhiệm riêng lẻ cho bất kỳ phần nào của hệ thống. Thay vào đó, mọi người chịu trách nhiệm cho mọi thứ như một nhóm .

Cuối cùng, có một số giả định được đưa vào khái niệm đó, đã lỗi thời. Ví dụ, mặc dù không được nêu rõ ràng, nhóm được thiết lập theo cách chỉ có một người trong nhóm (bác sĩ phẫu thuật) thực sự có máy tính. Tất nhiên, đó là bởi vì tại thời điểm bài báo được viết, ngay cả ý tưởng rằng toàn bộ một nhóm sẽ có một máy tính cho riêng họ, chứ đừng nói đến một người trong nhóm, là một sự căng thẳng. (Ngay cả vào năm 1980, khi Smalltalk được phát hành, một trong những điều góp phần vào sự thất bại của nó là hệ thống được thiết lập sao cho mọi nhà phát triển và mọi người dùng đều có máy tính của riêng họ - hoàn toàn không thể tưởng tượng được vào thời điểm đó.)

Vì vậy, tóm lại: Tôi không nghĩ rằng khái niệm này đã được triển khai chính xác như được mô tả, nhưng một số khía cạnh của nó chắc chắn được triển khai, một số khía cạnh được coi là không mong muốn và chủ động tránh, một số đã lỗi thời và một số có lẽ là Ý tưởng tốt ™, nhưng không ai làm điều đó


1
Về đoạn thứ hai đến đoạn cuối, tôi nghĩ rằng bác sĩ phẫu thuật dự kiến ​​sẽ làm việc với bút và giấy và nhân viên bán hàng sẽ là thành viên trong nhóm có quyền truy cập vào máy tính.
Bart van Ingen Schenau

15
'bạn có thể thực sự tưởng tượng việc trả tiền cho một nhân viên toàn thời gian để in mã nguồn, và lập chỉ mục và nộp thủ công không?' Không, nhưng tôi chắc chắn có thể tưởng tượng việc trả tiền cho một nhân viên toàn thời gian để quản lý kiểm soát phiên bản và hệ thống xây dựng liên tục, và trên thực tế ở bất kỳ công ty cỡ trung bình hoặc lớn hơn, đây là tiêu chuẩn. Trong thực tế, quản lý wiki, hệ thống quản lý tài liệu và đó là một vai trò hoàn toàn riêng biệt, thậm chí còn lớn hơn mà thường là toàn bộ thời gian của các nhà văn kỹ thuật được trả tiền để làm toàn thời gian.
Miles Rout

9
"toàn bộ nhóm sẽ có một máy tính cho riêng mình ... là một sự kéo dài" - vào đầu những năm 1980, org sẽ có các hệ thống máy tính mini + thiết bị đầu cuối, vì vậy trong khi đó là cùng một máy tính, người dùng vẫn có quyền truy cập vào nó như nhau cơ sở và khả năng chạy các chương trình của riêng họ (giả sử tồn tại sự cô lập và bảo mật tốt của người dùng).
Đại

2
Trong khi máy tính đắt tiền vào năm 1975, keypunches khá rẻ. Khi tôi lập trình các máy tính lớn đầu tiên (không phải năm 75, nhưng 77), chúng tôi sẽ viết mã ra giấy, đấm vào thẻ, gửi nó đến một cái bấc và sau đó kiểm tra lại định kỳ để xem bản in đã được gửi lại chưa. (Xoay quanh thời gian có thể là 2 giờ đối với chúng tôi và tại một số trang web hơn một ngày.) Một nhân viên bán hàng sẽ rất tiện dụng cho tất cả trừ những nhiệm vụ đầu tiên. Tôi đã không nhìn thấy thiết bị đầu cuối cho đến năm 1979 hoặc lâu hơn.
Theodore Norvell

1
Re: Smalltalk - không chỉ mỗi nhà phát triển và mọi người dùng đều phải có máy tính riêng, những máy tính đó cũng được cho là máy tính mạnh mẽ với nhiều bộ nhớGUI . Hãy nghĩ "máy trạm" thay vì "PC". Máy tính IBM ban đầu không có mã lực để chạy Smalltalk. Thật xấu hổ, theo ý kiến ​​của tôi ...
Bob Jarvis

20

Trước đây, giáo dục đại học là một điều gì đó độc đáo, và các kỹ sư là một trong số ít người được chọn. Máy tính rất đắt và các nhóm làm việc trong các dự án với RoI kinh doanh được xác định. Đây không phải là rất phổ biến.

Điều đã xảy ra là máy vi tính, giáo dục đại học có mặt khắp nơi và hệ thống máy tính thậm chí không cần bằng Đại học để tiến bộ. Ngoài ra, những gì đã xảy ra là kinh tế thay đổi và chi phí lao động tăng.

Tính kinh tế của tỷ lệ hỗ trợ 8: 2: kỹ sư không còn ý nghĩa nữa. Các kỹ sư phải là hỗ trợ riêng của họ. Một con người hiện đại với trình độ học vấn và kỹ năng đầy đủ để có hiệu quả gắn liền với một nhóm phát triển là quá đắt để không thể tự mình phát triển một loại nào đó.

(Một thuật ngữ kinh tế liên quan là "bệnh chi phí của ngành dịch vụ.")


5
Tôi đã từ chối vì yêu cầu vô lý liên quan đến chi phí lao động tăng. Lao động, thậm chí kiến ​​thức kỹ thuật chuyên ngành, ngày nay rẻ hơn so với năm 1969. Quả thực chi phí lao động đắt hơn ngày nay đã củng cố toàn bộ câu trả lời này và đó là một tuyên bố sai.
RibaldEddie

2
@RibaldEddie đối với những gì? Nếu bạn điểm chuẩn lao động so với chi phí sinh hoạt, nó đã giảm dần; một giờ làm việc có thể giúp bạn có nhiều thực phẩm / nhà ở hơn so với năm 1969
k_g

3
@k_g tốt, nó phụ thuộc vào vị trí. Về lạm phát, ở hầu hết các nơi ở Mỹ, bạn có thể thuê một nhà phát triển với số đô la điều chỉnh lạm phát ít hơn so với năm 1969. Để tham khảo, trong cuốn sách Brooks gợi ý 20k cho những gì ngày nay chúng ta sẽ coi là một kiến ​​trúc sư phát triển cao cấp và 10k cho một lần chạy lập trình viên thực hiện phần lớn công việc. Trong đô la ngày nay, 10k đó là khoảng 65k. Hôm nay có hầu hết các nhà phát triển trong nhóm của bạn kiếm được 65k là một mức giá rất tốt.
RibaldEddie

3
Điều này, về cơ bản, mức lương phần mềm không thay đổi so với năm 1969. Với lạm phát tổng thể và chi phí sinh hoạt cao hơn, các nhà phát triển ngày nay rẻ hơn đáng kể.
RibaldEddie

11
Thật vậy, tất cả những lợi ích của môi trường kinh tế hiện đại về năng suất và lao động rẻ hơn đều thuộc về tầng lớp điều hành và cổ đông trong kinh doanh. Như tôi đã nói, ngay cả khi được điều chỉnh theo lạm phát, mức lương của nhà phát triển phần mềm vẫn giữ nguyên trong khi mức bồi thường điều hành đã tăng cao hơn hàng trăm lần so với lạm phát. Ngoài ra, nhiều nơi, đặc biệt dọc theo bờ biển phía tây Bắc Mỹ, chi phí sinh hoạt đã tăng nhanh hơn đáng kể so với lạm phát (xem bất động sản) và mức lương của các nhà phát triển chuyên nghiệp hầu như không theo kịp lạm phát.
RibaldEddie

13

Mô hình này nghe có vẻ rất nhiều đối với tôi như lập trình Mob:

Toàn bộ nhóm (QA, nhà phát triển và thậm chí Chủ sở hữu sản phẩm nếu cần) đang làm việc cùng một lúc trong cùng một vấn đề. Không đứng lên, giao tiếp cao, trực tiếp triển khai vào trực tiếp.

Từ http://codebetter.com/marcushammarberg/2013/08/06/mob-programming/

Khái niệm cơ bản về lập trình mob rất đơn giản: toàn bộ nhóm làm việc như một nhóm cùng thực hiện một nhiệm vụ tại thời điểm đó. Đó là: một đội - một bàn phím (hoạt động) - một màn hình (tất nhiên là máy chiếu). Nó giống như làm lập trình cặp toàn đội.

Xem hoạt động tại đây: https://www.youtube.com/watch?v=dVqUcNKVbYg


Câu nói đó về cơ bản là những gì tôi đã nghĩ: Nghe giống như lập trình cặp, trong đó "bác sĩ phẫu thuật" là cái mà chúng tôi gọi là "trình điều khiển", ngoại trừ ở quy mô khác.
Izkata

7
Dường như với tôi điều này sẽ đòi hỏi các nhà phát triển phần mềm có thẩm quyền hướng ngoại. Tốt nhất của may mắn với điều đó.
Bob Jarvis

Đến đây để nói điều này; hoặc các hình thức khác nhau của tổ chức tự tổ chức.
Marcin

2
@BobJarvis Tôi không đồng ý. Tôi đã thành công rực rỡ khi làm việc trong các nhóm người hướng nội (và tôi nghĩ một số người cũng bao gồm người hướng ngoại). Chìa khóa là tạo ra một không gian nơi mọi người cảm thấy an toàn và cởi mở để đóng góp, và sẵn sàng kéo dài khuynh hướng tự nhiên của họ trong một thời gian vì lợi ích của nhóm. Sự yên tĩnh của Susan Cain là một sự trợ giúp to lớn trong việc tìm hiểu cách làm việc tốt với các tính khí khác nhau: ted.com/talks/susan_cain_the_power_of_introifts
David Carboni

12

Mô hình nhóm này được đề cập một lần nữa trong Phát triển nhanh - Lịch trình phần mềm hoang dã của Steve McConnell trên trang 304. Ở đó, nó được gọi là Nhóm lập trình trưởng.

Mô hình này phát sinh vì có một thiên tài trong nhóm và tài nguyên máy tính bị hạn chế. Nó không được ưa chuộng vì thiên tài là rất hiếm, và với các máy tính phổ biến và kiểm soát phiên bản phân tán, chúng tôi có chỗ cho nhiều tay trên bàn mổ.

Tài liệu tham khảo khác:

Baker, F. Terry. "Quản lý nhóm lập trình trưởng về lập trình sản xuất", Tạp chí IBM Systems, tập. 11, không 1, 1972, trang 56-73.

Baker, F. Terry và Harlan D. Mills. "Đội ngũ lập trình trưởng." Datamation, Tập 19, Số 12 (tháng 12 năm 1973), trang 58-61.


9

Tôi đoán là hầu hết các đội tự tổ chức nhỏ sẽ có xu hướng ổn định thành một mô hình nhóm phẫu thuật thực tế.

Hai đội cuối cùng mà tôi tham gia có xu hướng bao gồm ba hoặc bốn người, thường là một người cao cấp (bác sĩ phẫu thuật), một trung gian (đồng lái) và một vài đàn em / chuyên gia. Một số vai trò trong nhóm phẫu thuật như Brooks đề cập hiện nay được điền bởi các bậc thầy Scrum và sysadmin hoặc nhà cung cấp đám mây. Hãy nhớ rằng kiểm soát nguồn hầu như không tồn tại vào thời điểm đó, chứ đừng nói đến thứ gì đó mạnh mẽ như git.

Hãy nghĩ về quy tắc hai bánh pizza của Bezos. Đó là đội phẫu thuật tự tổ chức của bạn ngay tại đó.


1
về cơ bản, không có gì xảy ra với nó. +
gordy

1
@gordy có và không. Bạn sẽ nhận thấy rằng trong ví dụ của Brook, rất có thể các nhà quản lý sẽ xác định ai là người trong mỗi vai trò trong nhóm, nhưng trong một khái niệm nhanh nhẹn hiện đại, nhóm tự tổ chức. Vì vậy, vai trò của bác sĩ phẫu thuật hoặc đồng nghiệp phi công rơi ra một cách tự nhiên từ cách làm việc của nhóm. Tôi nghĩ đó là một sự khác biệt chính: tự tổ chức so với quyết định của công ty.
RibaldEddie

Tôi sẽ thay đổi "nhất" thành "một số". Nó thực sự phụ thuộc vào sự năng động của đội. Và nó chắc chắn phải phát triển một cách hữu cơ nếu một bác sĩ phẫu thuật được chỉ định từ phía trên kết quả sẽ là tối ưu để +1 cho tự tổ chức.
Peter

2
Những câu nói từ The Tao of Software: #IV - The Tao of Teamwork: Phần mềm tốt được viết bởi các nhóm nhỏ làm việc nhanh. Phần mềm xấu được viết bởi các nhóm lớn làm việc chậm. Hệ quả: - Kích thước tối ưu của một đội là 1; - Giá trị thực tế tối đa cho quy mô đội là 3; - Đối với quy mô nhóm> 3, giao tiếp (mis) trở thành một vấn đề nghiêm trọng; - Đối với quy mô nhóm> 6, việc hoàn thành dự án trở nên nghiêm trọng. Dự án hoàn thành đúng hạn có khả năng ra khỏi cửa sổ. Trong trường hợp như vậy, các nhà phát triển thông minh hơn sẽ sử dụng cửa ... Do đó, nó được viết ... ( BWOOoooonnnggggg !!! )
Bob Jarvis

6

Có một bài báo của HP đề xuất một cái gì đó tương tự:

  • Mỗi kỹ sư phần mềm sẽ yêu cầu nhiều người quản lý và nhiều người hỗ trợ.
  • Cần có một nhà văn kỹ thuật, người thử nghiệm, người quản lý xây dựng và người chế tạo công cụ cho mỗi kỹ sư.

Bài báo là trong những ngày trước web, và thỉnh thoảng được đưa lên như buồn cười. Mỗi năm nó được đưa lên, bài bình luận đã chuyển thêm một chút từ "thật nực cười của nó" sang "có lẽ chúng ta nên làm điều đó".

Các thử nghiệm thực tế nổi tiếng là khó thiết kế, vì vậy nó có thể vẫn còn ý kiến. Có thể tồn tại một số khảo sát của các dự án và tỷ lệ hoàn thành của họ.


9
Phần khiến tôi mỉm cười (?) Là điều "... nhiều người quản lý ...". Một người quản lý là quá đủ để giảm năng suất. Nhiều nhà quản lý có thể khiến các nhà phát triển nghĩ đến việc tự tử (người hướng nội) hoặc giết người (người hướng ngoại).
Bob Jarvis

4
@BobJarvis - Tôi đã có, tùy thuộc vào dự án, có đến năm "người quản lý" đồng thời với các chức danh khác nhau. Hiệu quả là khá nhiều như bạn tưởng tượng.
Rob Crawford

1
Rõ ràng bạn là người hướng ngoại. Vậy ... phòng thủ điên rồ? Mexico? Hay ... giết người chính đáng ..? :-)
Bob Jarvis

Vì vậy, đó là lý do tại sao tôi có năm ông chủ tại một công ty. Trong khi tôi ở đó, bất kỳ vấn đề nào, dù là của tôi hay của người khác, tôi sẽ nghe thấy nó từ 5 quan điểm khác nhau. Tôi thường phân tích nó theo thời gian số 2 xuất hiện và thật khó chịu khi nghe về nó ở đó nhiều lần hơn.
Robert Baron

Ý tưởng ban đầu không phải là "có năm người quản lý khác nhau cố gắng can thiệp" mà là cung cấp, ví dụ: "người có lợi cho nhân sự" và "người phát triển nghề nghiệp nhân sự", v.v ... Tôi nghĩ rằng nhiều người quản lý sẽ làm việc nếu bạn lập hóa đơn cho từng bộ phận quản lý dựa trên bao lâu thì họ liên lạc với kỹ sư. Sẽ làm một trò chơi video thú vị!
Charles Merriam

2

Tôi tự hỏi bao nhiêu nhu cầu về một đội phẫu thuật đã trở nên dư thừa vì sự phát triển của Internet, môi trường phát triển tích hợpbộ công cụ phát triển phần mềm , có thể đảm nhiệm rất nhiều chức năng mà Fred Brooks gán cho nhóm phẫu thuật, bao gồm:

  • Bác sĩ phẫu thuật: một lập trình viên
  • Đồng thí điểm: cặp lập trình viên , đồng nghiệp, cộng đồng trực tuyến như StackExchange hoặc IRC
  • Quản trị viên: vai trò thường được thực hiện bởi người quản lý dự án phần mềm
  • Trình chỉnh sửa: IDE tích hợp các trình tạo tài liệu như Javadoc hoặc Doxygen; tài liệu từ bộ công cụ phát triển phần mềm
  • Thư ký: e-mail client, các công cụ quản lý dự án như trình theo dõi vấn đề và yêu cầu kéo, phòng chat của công ty và danh sách gửi thư
  • Thư ký chương trình: IDE lưu trữ thông tin về thiết kế dự án, với khả năng tái cấu trúc mã; tài liệu và ví dụ từ bộ phát triển phần mềm
  • Công cụ: toàn bộ cộng đồng nguồn mở
  • Tester: trên cơ sở ngay lập tức, bộ thử nghiệm và thư viện thử nghiệm. Nhưng tất nhiên một quy trình QA riêng là cần thiết cho mã sản xuất.
  • Luật sư ngôn ngữ: tài liệu trực tuyến, StackExchange

1

Tôi nghĩ bạn cần nhìn vào tiền đề của Tháng người đàn ông thần thoại. Thuê nhiều lập trình viên chỉ làm cho một dự án phần mềm có vấn đề / quá hạn trở nên tồi tệ hơn. Vấn đề là trong giao tiếp và khiến các lập trình viên mới được thêm vào để tăng tốc độ cho dự án (mất thời gian từ sự phát triển hiện tại), công nghệ và đôi khi là chính tên miền.

Một lập trình viên được hỗ trợ tốt sẽ loại bỏ nhiều thời gian giao tiếp và phối hợp. Giả sử bạn thuê một chuyên gia tư vấn cho Công nghệ X. Thay vì đưa nhà tư vấn này tăng tốc độ cho dự án đủ để cá nhân này có thể thực hiện tất cả mã hóa trong khu vực đó, anh ta chỉ huấn luyện nhà phát triển hiện tại đến điểm mà anh ta có thể xây dựng một cái gì đó với một số giám sát.

Một lý do bạn không thấy nhiều về điều này là vì phần lớn phần mềm được viết bởi một người. Các nhóm phân chia công việc và mọi người đi và làm việc của họ. Lập trình cặp, đánh giá và bất cứ thứ gì có mùi của quản lý vi mô đều được tán thành. Nhiều người không xem lập trình như một môn thể thao đồng đội. Một người giải quyết một vấn đề nhất định với một số xem xét cho các ràng buộc trên tất cả.


0

Tôi sẽ lập luận rằng chúng ta càng tách biệt thiết kế, thực hiện, thử nghiệm, tài liệu, xây dựng, triển khai, vận hành, v.v. thành các vai trò duy nhất được thực hiện bởi các chuyên gia, chúng ta càng theo triết lý "đội phẫu thuật" (mặc dù có thể không chính xác theo cách mô tả ).

Theo kinh nghiệm của tôi, triết lý của devOps rằng mỗi người nên có khả năng thực hiện mọi nhiệm vụ là quay trở lại mô hình giết mổ lợn (không nói rằng nó xấu, chỉ khác nhau).


2
Đó chắc chắn không phải là mô hình DevOps.
RibaldEddie

5
Trong thực tế, DevOps giống như mô hình nhóm phẫu thuật vì Hoạt động của nhà phát triển ngụ ý rằng các hoạt động tồn tại trong dịch vụ để phát triển. DevOps nói về hai khái niệm cốt lõi: các hoạt động nên được coi là một thực tiễn phát triển và do đó, các công cụ và kỹ thuật được sử dụng trong phát triển, như kiểm soát nguồn và phương pháp quản lý nhanh, nên được sử dụng bởi các hoạt động và các hoạt động đó có để hỗ trợ phát triển.
RibaldEddie

1
@RibaldEddie Thú vị. Kinh nghiệm của tôi với nhóm DevOps tại công ty của tôi là họ chỉ thuê các nhà phát triển và họ chịu trách nhiệm về mọi thứ từ phát triển sản phẩm, thử nghiệm, tài liệu, triển khai, v.v. Từ "chức năng chéo" xuất hiện trong đầu. Ồ, với 2 lượt tải xuống và bỏ phiếu trong vòng 15 phút, tôi đoán tôi sẽ tránh xa trang web này.
Mike Ounsworth

1
Ah, sau đó chúng ta có định nghĩa khác nhau về "chức năng chéo". Tôi đang sử dụng nó có nghĩa là mọi thành viên trong đội đều có khả năng thực hiện mọi nhiệm vụ - Jiras thường xuyên bị quăng quật giữa mọi người vì họ đã bỏ đi việc chuyên môn hóa. Ai đó đang phát triển tính năng này sẽ kiểm tra hoặc ghi lại tính năng tiếp theo. Đó là "DevOps" mà tôi đã trải nghiệm.
Mike Ounsworth

1
@MikeOunsworth: đó là một nhóm các chức năng chéo :-D
Jörg W Mittag

0

Là một lập trình viên thường làm đầy vai trò của DevOps và Build Master, tôi cảm thấy rằng mình thường kết thúc ở vị trí là đội phẫu thuật .. ờ ... anh chàng trong đội. Là một bậc thầy xây dựng, tôi đã có cái nhìn tổng quan về toàn bộ mã và là dòng đầu tiên khi nó thất bại. Thường thì tôi sẽ tự sửa nó.
Tôi thường là người viết các hệ thống số liệu này và đo các điểm nóng trong mã, các phần sẽ thất bại thường xuyên hơn, thu hút nhiều báo cáo lỗi nhất, v.v. Tôi không chỉ công bố kết quả cho nhóm mà tôi cũng sẽ phân tích chúng, tìm kink đã gây ra vấn đề và đề xuất giải pháp và thay đổi kiến ​​trúc để giải quyết vấn đề này.

Là một DevOps, tôi sẽ tự động hóa các quy trình và chi phí khổng lồ. Tôi đã nghiên cứu các công nghệ và công cụ giúp cuộc sống của nhóm trở nên dễ dàng hơn, toàn bộ nhóm, từ các nhà phát triển, người kiểm tra QA, IT sẽ tìm mọi cách để quản lý. Vai trò của tôi là hiểu quá trình, vâng; nhưng bằng cách giữ mắt tôi nhìn vào nhóm (con người thực tế) bằng cách sử dụng (chịu đựng) quá trình đó, tôi đã có thể chưng cất nó đến một điểm khiến nó hoàn toàn minh bạch trong khi vẫn nhận được một luồng dữ liệu hữu ích để có cái nhìn khách quan về điều đó bao giờ khó nắm bắt "bức tranh lớn".

Đó là một vị trí vô ơn để có và có khả năng tại sao nó bị xa lánh rất nhiều. Tôi biết tôi đã làm tốt công việc của mình khi không ai chú ý đến quy trình đó, khi không ai nghĩ về đường ống xây dựng. Vì vậy, có, một máy dầu tốt nhanh chóng được coi là đương nhiên. Nhưng tôi biết, trên thực tế tôi đã đo lường, tác động nhân lên của công việc này có thể ảnh hưởng đến năng suất của một nhóm và nó rất đáng để đầu tư.

Vì vậy, vâng, tôi nghĩ rằng vai trò đó vẫn còn rất nhiều cho đến ngày nay, mặc dù phải thừa nhận rằng nó đã phát triển từ những gì trước đây.

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.