"신화적인 남자-월"의 "외과 팀"패턴은 어떻게 되었습니까?


164

몇 년 전, The Mythical Man-Month를 읽을 때 다른 출처에서 이미 알고있는 많은 것들을 발견했습니다. 그러나 1975 년 이후의 책에도 불구하고 거기에도 새로운 것들이있었습니다.

외과 팀

Mills는 대규모 직종의 각 부문이 한 팀을 이룰 것을 제안하지만이 팀은 돼지를 도살하는 팀이 아닌 외과 팀처럼 조직되도록 제안합니다. 즉, 각 구성원이 문제를 해결하는 대신 절단을 수행하고 다른 구성원은 자신의 효율성과 생산성을 향상시킬 수있는 모든 지원을 제공합니다.

이것은 소프트웨어 개발 팀을 조직하는 데 매우 흥미로운 패턴이지만 다른 소프트웨어 엔지니어링 책에서는 설명하지 않았으며 어디에서도 언급되지 않았습니다.

왜 그런 겁니까?

  • 당시 "수술팀"은 이례적인가?
  • 아니면 시도하고 실패 했습니까?
    • 그렇다면 어떻게 실패 했습니까?
    • 그렇지 않다면 오늘날의 소프트웨어 프로젝트에서 해당 패턴이 구현되지 않는 이유는 무엇입니까?

12
나는 이것이 의견 기반의 답변 만 가져올 수 있다고 말하고 싶습니다. 제 생각에는 "소프트웨어 엔지니어"가 "지원"역할로보고 싶어하지 않는다는 것입니다. 그들은 팀의 다른 모든 사람들과 동등하게 보이기를 원합니다. 이는 대부분의 소프트웨어 개발자가 매우 어리다는 사실과 관련이있을 수 있습니다. 대부분의 팀에는 연대를 주장하고 팀의 "외과 의사"로 간주 될 수있는 사람이 없습니다.
Euphoric

43
의도적으로 팀을 구성하려고 할 때 보게 될 잠재적 문제는 외과의가 누구인지 정확하게 식별하는 것입니다.
Bart van Ingen Schenau

9
@Euphoric 이미 슈퍼 우버 전문가 스타 외과 의사 프로그래머가 있다고 생각하는 사람들을 잊어 버리는 관리자를 잊지 마십시오. 그러므로 모든 지원 농민을 처음부터 고용하는 이유는 무엇입니까? 유감스럽게도 소프트웨어 팀이나 다채로운 엑셀 스프레드 시트를 "관리"하는 동안 소프트웨어 개발에 대한 이해와 본질적인 문제에 대한 증거를 보여주지 못한 MRS의 일부를 보았습니다. ).
code_dredd

7
"수술"은 가장 역전적인 의학 분야 중 하나라는 사실과 관련이있을 수 있습니다. 실제로 영국에서는 외과 의사가 7 년 동안 공부하는 "의사"라고 할 수있는 농담입니다. 그런 다음 7 년이 더 지나서 다시 "Mr"또는 "Mrs"라고 할 수 있습니다! 실제로 오류율이 훨씬 낮은 다른 산업 (특히 민간 항공)의 "모범 사례"를 준수하여 수술의 성능을 향상시키기 위해 수술을 재구성 하는 것은 의료 분야의 지속적인 노력입니다. ...
alephzero

6
@alephzero : 이것들은 몇 가지 재미있는 주장입니다. 정확히 어디에서 수술을 연습 했습니까? 여기에서 "모범 사례"라고 부르는 쓰레기의 양은 외과 의사의 시간의 큰 부분을 차지하며 혜택이 전혀 없습니다. 슈퍼 똑똑한 사람들 (비정규 적)은 거의 매주 관료적 쓰레기를 더 추가하여 이해하지 못하는 것을 개선하기 위해 열심히 노력합니다. 그러나 언급 한 고장률의 원인은 반대로 해결되지 않습니다. 거의 모든 실패는 수면 부족, 과소 교육 및 과대 평가로 인한 것입니다. 종종 세 개 모두가 함께 있습니다.
Damon

답변:


103

"신화적인 남자-월"은 내가 대학을 시작한 해에 나왔고, 현재의 고유 한 UUUGE를 사용했습니다! :-) 이해해야 할 것은 소프트웨어가 THEN과 NOW를 어떻게 개발했는지 차이입니다. Back In The Day (tm) 거의 모든 코딩 작업이 종이에서 먼저 수행 된 다음, 펀치 된 카드에 키 펀칭 (추측)되어 읽혀지고, 컴파일되고, 연결되고, 실행되고, 결과가 얻어지고 프로세스가 반복되었습니다. CPU 시간은 비쌌습니다자원이 제한되어 있고 낭비하고 싶지 않았습니다. 디스크 공간, 테이프 드라이브 시간 등도 마찬가지입니다. 컴파일시 CPU 시간을 완전히 낭비하면 (충격과 공포!) 오류가 발생했습니다 ... 완전히 좋은 CPU 시간을 낭비했습니다. 그리고 이것은 중후반 1960의 CPU 시간조차이었다 프레드 브룩스가 자신의 아이디어를 개발되었을 때, 1975 년이었다 비싸고, 메모리 / 디스크 / 무엇이 더 제한되어 있는가 등. 외과 팀의 아이디어는 One Super Great Rockstar Developer가 책상 점검 코드, 키 펀칭, 일반 작업과 같은 일상적인 작업에 HIS 시간을 낭비하지 않도록하는 것입니다. 작업 제출, 결과 대기 (때로는 몇 시간). Rockstar Dude Developer Man은 코드를 작성해야했습니다. 그의 그룹 / 서기 / 주니어 개발자 군단은 평범한 일을하기로되어있었습니다.

문제는 브룩스의 책이 출판 된 지 2 년 만에 외과 팀의 기본 아이디어가 무너 졌다는 것입니다.

  1. CRT 터미널 및 디스크 파일이 키펀치 및 카드 데크를 대체하기 시작했습니다. 컴퓨터 시간이 저렴 해지고 여러 컴퓨터를 사용할 수있게되었으며 작업 처리 시간이 크게 단축되었습니다. 내가 대학에 도착 (요청 마이애미 대학, 옥스포드, 오하이오, '79 클래스, 덕분에) 좋은작업 처리 시간은 약 1 시간이었습니다. 결승 주간에는 4 시간, 때로는 6 시간이 소요됩니다. (우리는 많은 상용 회사 및 대학과 CPU 시간을 놓고 경쟁했으며, 상용 사용자가 최우선 순위였습니다.) 마이애미가 자신의 "공유 컴퓨터"배열에서 벗어나고, 캠퍼스에 자체 IBM 370/145가 설치되어 있고, RJE 스테이션 역할을하는 멋진 HP 미니를 가지고 메인 프레임을 돌릴 수 있었던 시니어 년 5 분 이내에 작업을 처리합니다. 코드를 HP에서 가져와 HP에서 메인 프레임으로 보내고, 엄지 손가락으로 담배를 피우고 담배를 피우고, 책상 점검을 마치기 전에 출력물을 다시 가져 오는 것이 좋습니다.

  2. 외과 팀은 기본적으로 전제로 귀하 (또는 "관리", 신이 우리 모두를 도와줍니다)가 Rockstar Surgical Developer Dude를 식별 할 수 있다는 아이디어를 전제로합니다. 사실, 나는 그것이 가능한지 의심합니다. 가 있습니다 록 스타 개발자, 모두가 그것을 알고있다 - 연구만큼 2000 %의 최고와 최악 개발자 간의 생산성의 차이를 보여 -하지만 그 사람을 식별 그들이 오랜 기간 동안 코드를 작성하지 않고아마도 불가능할 것입니다. 누군가 Rockstar 개발자인지 알 수있는 유일한 방법은 실제로 코드를 개발하는 것입니다. 그러나 Rockstar Surgical Developer Dude가 아닌 경우 코드 확인, 카드 키 입력, 구멍을 뚫은 카드 상자를 Job Entry 부서로 옮긴 다음 결과를 기다리는 동안 코드를 작성하고 코드를 디버깅하여 실제로 작동하는 유일한 방법을 코딩하는 대신 Rockstar Surgical Developer Dude에게 다시 보내 줄 수 있습니다. Back the The Day (tm)에는 프로그래밍 콘테스트가 없었고, 스택 오버플로가 없었으며, 마음에들 때마다 코드를 작성할 수있는 PC가 없었습니다. 바보 책에 대한 알고리즘은 없었습니다. 프로그래밍을 배우는 유일한 방법은 학교에 가서 약간의 프로그래밍을해야하는 것을 전공하는 것이 었습니다. 그러나 프로그래밍그 자체 는 진지하게 받아 들여지지 않았으며 사람들이 원하지 않는 것으로 가정되었습니다 . 첫 번째 대학 과정 (SAN151-시스템 분석 소개, Tom Schaber 박사-Tom :-감사)은 강사로부터 다음과 같이 말했습니다. "... 시스템 분석가가되기 전에 프로그래머로 2 년이 걸렸습니다. " "2 년?" "2 년 동안 만이 작업을 수행 할 수 있습니까?!?". 나는 심하게 불쑥했다. 고맙게도 그는 틀렸고 그 이후로 거의 코딩을 해왔습니다. :-)

  3. 외과 팀은 프로그래머가 비교적 드문 자원이라고 가정합니다. 실제로 몇 년이 더 걸렸지 만 80 년대 초반에 PC가 등장하면서 모든 괴짜가 참여할 수있게되었습니다. 컴퓨터 가격이 떨어지기 시작했고 개발 도구 가격이 떨어지기 시작했습니다. 우박 터보 파스칼 (Ultra Turbo Pascal) – 오늘날의 표준으로는 그다지 많지 않았지만 당시에는 약 40 달러의 완전한 파스칼 IDE였습니다. 이제 ANYBODY는 프로그래밍에 들어갈 수 있습니다-컴퓨터를 구입할 수 있고 IBM이 PCjr (예, 첫 번째 PC는 IBM의 가장 큰 실수 중 하나였습니다. 어디에나 갇힌 괴짜들은 한 달 동안 임대료 지불을 건너 뛰었습니다 ( "예, 알아요,하지만 ... 어. .uh ... 예, 다음 주에 아무 문제 없습니다. 고마워요 .....) 그런 다음 컴퓨터를 사용하기 위해 컴퓨터에 지불 한 것보다 더 많은 비용을 썼습니다. ( "그렇습니다, 다음 주, 아마도 ...":-).

내가 정말로 슬프게하는 것은 오늘날에도 사람들이 "신화적인 남자-월"을 읽었는지 또는 주된 교훈 ( "늦은 프로젝트에 리소스를 추가하면 나중에 만들어집니다")을 이해했는지 묻는다면 응시 한 다음 OS / 360을 개발하는 동안 All Thats Years Ago와 똑같은 오류를 만들었습니다. 오래된 모든 것이 다시 새롭다 ... :-}


20
이 책을 읽는 사람이이 책의 20 주년 에디션을 가지고 있다면, 새로운 서문과 19 장을 읽을 가치가 있습니다. 20 주년 에디션조차도 2017 년 현재 20 년이 넘었지만 저자는 몇 가지 주장을 지적합니다. 이 답변은 "이미 늦은 프로젝트에 엔지니어를 추가하면 훨씬 더 늦어진다"고 책 전체를 요약하기 위해 서두르면서 종종 간과됩니다.

1
"UUGE"는 세계에서 무엇을 의미합니까? 그건 그렇고 좋은 대답입니다.
웨인 콘래드

5
거대한 @WayneConrad vernacular .
zzzzBov

1
하고 그 기간 동안 IBM 시스템 프로그래머, OS의 특정 부분에 전문으로 팀에 매우 밀접하게 정의 된 역할을하는 것이 일반적이었다. 각 역할의 담당자는 알아야 할 모든 것을 알고 배우고 다른 전문가의 지원 직원으로 활동해야합니다. 우리는 본질적으로 직원 한 명당 수술 팀을 구성하고 각 팀은 각자의 전문성을 갖습니다.
Joe McMahon

1
동일한 오류를 반복해서 발생시키는 것에 대한 귀하의 의견에 대한 응답으로,이 책에 대한 Wikipedia 기사는 여러분이 좋아할만한 저자의 인용문을 가지고 있습니다. "모든 사람이 인용하고, 어떤 사람들은 그것을 읽고, 몇몇 사람들은 그것을 읽습니다."
라이언

87

그 개념의 몇 가지 측면이 있습니다 있습니다 때로는 오늘 구현은, 다른 측면이있다 피할 수는 .

팀을 작게 유지하는 것은 애자일 방법의 기본 기능 중 하나이지만 애자일 외부에서도 실행됩니다.

부서 간 팀도 애자일의 필수 요소이지만 애자일 외부에서도 일반적입니다.

프로그램 서기의 역할은 버전 제어 시스템, 소프트웨어 구성 관리 시스템, 변경 관리 시스템, 문서 관리 시스템, 위키, 아티팩트 리포지토리가있는 연속 빌드 시스템 등과 같은 컴퓨터 시스템에 의해 대체됩니다. 내 말은, 소스 코드를 인쇄하고 수동으로 색인을 생성하고 제출하기 위해 정규 직원에게 돈을 지불하는 것을 상상할 수 있습니까?

마찬가지로 시스템 관리자 (Mills 's Surgical Team의 일부는 아니지만 지난 몇 년간의 전형적인 교차 기능 팀의 일부)의 역할은 DevOps와 같은 개념에서 더 이상 사용되지 않습니다 (Sysadmin의 역할을 소프트웨어 엔지니어의 역할로 흡수 함). , Platform-as-a-Service, IaaS (Infrastructure-as-a-Service) 및 유틸리티 컴퓨팅 (Sysadmin의 역할이 "다른 사람의 문제"임) 또는 IaaS (Systems-as-Code) (시스템 관리를 소프트웨어 엔지니어링으로 전환).

오늘날 우리가 피하려고하는 측면 중 하나는 최대 두 사람 이 시스템을 이해한다는 것입니다. 의사 만이 시스템을 완전히 이해할 수 있으며, 부조종사가있을 수도 있고 그렇지 않을 수도 있습니다. 이것은 1과 2 사이 의 버스 팩터 를 제공합니다 . 외과의가 아프면 프로젝트는 죽었습니다. 기간. 그에 대한 민첩한 대답은이다 집단 코드 소유권이다 정반대 그 모델의 : 아무도 대한 단독 책임이없는 일부 시스템. 대신, 모든 사람그룹으로서 모든 것을 책임집니다 .

마지막으로, 그 개념에는 구식 인 몇 가지 가정이 있습니다. 예를 들어, 명시 적으로 명시되어 있지 않더라도 팀의 한 사람 (외과 의사) 만 실제로 컴퓨터를 보유하는 방식으로 팀이 설정됩니다. 물론, 기사가 쓰여질 당시 팀 전체의 한 사람은 물론 전체 팀이 자신을 위해 한 대의 컴퓨터를 가질 것이라는 생각조차도 확장 되었기 때문입니다. (Smalltalk가 출시 된 1980 년에도 실패에 기여한 것 중 하나는 시스템이 모든 개발자와 모든 사용자가 자신의 컴퓨터를 갖도록 설정되었다는 사실이었습니다. 당시에는 전혀 생각할 수 없었습니다.)

그래서, 짧은 : 설명 된 바와 같이 나는 생각하지 않는다 개념이 정확하게 구현되었지만, 그것의 일부 측면이 분명히 있다 구현, 일부 측면은 바람직하지 않은으로 간주하고 적극적으로 피할 수있다, 일부는 사용되지 않습니다, 일부는 ™ 아마도 좋은 아이디어입니다, 그러나 아무도하지 않습니다.


1
두 번째 단락부터 마지막 ​​단락까지, 외과 의사는 펜과 종이로 작업해야했으며 사무원은 컴퓨터에 액세스 할 수있는 한 팀원이었을 것이라고 생각합니다.
Bart van Ingen Schenau

15
'정말 직원에게 비용을 지불하여 소스 코드를 인쇄하고 수동으로 색인을 생성하고 제출하는 것을 상상할 수 있습니까?' 아니요, 그러나 버전 관리 및 지속적인 빌드 시스템을 관리하기 위해 정규 직원에게 비용을 지불하는 것을 상상할 수 있습니다. 실제로 중간 규모 이상의 회사에서는 이것이 표준입니다. 실제로 위키, 문서 관리 시스템 등을 관리하는 것은 전적으로 기술 담당자가 하루 종일 지불해야하는 전적으로 별도의 더 큰 역할입니다.
Miles Rout

9
"전체 팀은 스스로 컴퓨터 한 대를 가지고있을 것입니다."-1980 년대 초 조직은 미니 컴퓨터 + 터미널 기반 시스템을 가지게되었으므로 같은 컴퓨터 인 경우에도 사용자는 동일한 컴퓨터에서 액세스 할 수있었습니다. 적절한 사용자 격리 및 보안이 존재한다고 가정하고 자체 프로그램을 실행할 수있는 기반 및 기능.
Dai

2
1975 년에는 컴퓨터가 비싸지 만 키 펀치는 상당히 저렴했습니다. 메인 프레임을 처음 프로그래밍 할 때 (75 개가 아닌 77 개) 종이에 코드를 작성하고 카드에 펀칭하고 개찰구에 전달한 다음 주기적으로 다시 출력물이 전달되는지 확인했습니다. (소요 시간은 우리와 하루에 2 시간 이상일 수 있습니다.) 점원은 이러한 작업 중 첫 번째 작업을 제외한 모든 작업에 매우 편리했을 것입니다. 1979 년까지 터미널을 보지 못했습니다.
Theodore Norvell

1
다시 : 스몰 토크 (Smalltalk) – 모든 개발자와 모든 사용자가 자신의 컴퓨터를 가지고 있어야 할뿐만 아니라, 그 컴퓨터는 많은 메모리GUI를 가진 강력한 컴퓨터 여야했습니다 . "PC"보다는 "워크 스테이션"을 생각하십시오. 원래 IBM PC에는 스몰 토크를 실행할 수있는 능력이 없었습니다. 내 생각에는
Bob Jarvis

20

예전에는 대학 교육이 독창적이었고 엔지니어는 선택된 소수였습니다. 컴퓨터는 비쌌으며, 팀은 정의 된 비즈니스 RoI로 프로젝트를 진행했습니다. 이것들은 흔하지 않았습니다.

일어난 일은 마이크로 컴퓨터, 유비쿼터스 학부 교육 및 진학을 위해 대학 학위가 필요없는 컴퓨터 시스템이었습니다. 또한 경제 변화와 노동 비용 상승이 일어났습니다.

8 : 2 지원 : 엔지니어 비율의 경제성은 더 이상 의미가 없습니다. 엔지니어는 자신의 지원이어야합니다. 개발 팀에 효과적으로 연결될 수있는 충분한 교육과 기술을 갖춘 현대인은 너무 비싸서 자체 개발을하지 못합니다.

(관련 경제학 용어는 "서비스 부문의 비용 질병"입니다.)


5
나는 노동 비용 상승에 대한 터무니없는 주장으로 인해 하향 투표했다. 전문 엔지니어링 지식조차도 오늘날 노동 비용은 1969 년보다 저렴합니다. 실제로 오늘날 노동 비용이 더 비싸다는 것은이 모든 해답을 뒷받침하는 것이며 잘못된 주장입니다.
RibaldEddie

2
무엇에 관해서 @RibaldEddie? 생활비 대비 노동력을 벤치마킹하면 감소하고 있습니다. 한 시간의 작업으로 1969 년보다 더 많은 음식 / 주택을 얻을 수 있습니다.
k_g

3
@k_g 잘 위치에 따라 다릅니다. 인플레이션 측면에서 볼 때 미국 대부분의 지역에서 1969 년보다 오늘날 인플레이션 조정 비용이 적은 개발자를 고용 할 수 있습니다. 참고로 브룩스 (Brooks)는 오늘날 수석 개발자 아키텍트라고 생각하는 것에 대해 20k를 제안합니다. 대량의 작업을 수행하는 밀 프로그래머의 실행에는 10k가 필요합니다. 오늘날의 달러에서 10k는 약 65k입니다. 현재 팀에서 65k를 벌고있는 대부분의 개발자를 보유하고있는 것은 매우 좋은 가격입니다.
RibaldEddie

3
기본적으로 소프트웨어 급여는 1969 년과 동일합니다. 전체 인플레이션과 높은 생활비를 감안할 때 개발자는 현재 훨씬 저렴합니다.
RibaldEddie

11
실제로 생산성과 저렴한 노동력 측면에서 현대 경제 환경의 모든 이점은 모두 경영진과 주주 계급에 적용되었습니다. 내가 말했듯이, 인플레이션 조정에도 불구하고 소프트웨어 개발자 급여는 동일하게 유지되는 반면 임원 보상은 인플레이션보다 수백 배나 증가했습니다. 또한 많은 지역, 특히 북미 서해안 지역의 인플레이션 비용이 인플레이션보다 훨씬 빠르게 증가했지만 (부동산 참조) 전문 개발자 급여는 인플레이션과 거의 일치하지 않았습니다.
RibaldEddie

13

이 패턴은 Mob 프로그래밍처럼 나에게 많이 들립니다.

전체 그룹 (QA, 개발자 및 필요한 경우 제품 소유자)도 같은 문제에서 동시에 작업하고 있습니다. 일어 서고, 의사 소통 할 필요가 없으며, 라이브에 직접 배포됩니다.

에서 http://codebetter.com/marcushammarberg/2013/08/06/mob-programming/

mob 프로그래밍의 기본 개념은 간단합니다. 팀 전체가 한 번에 하나의 작업을 수행하는 팀으로 작동합니다. 즉 : 하나의 팀 – 하나의 (활성) 키보드 – 하나의 화면 (물론 프로젝터). 전체 팀 페어 프로그래밍을하는 것과 같습니다.

https://www.youtube.com/watch?v=dVqUcNKVbYg 에서 실제로 확인하십시오.


이 인용문은 기본적으로 제가 생각한 것입니다. 쌍의 프로그래밍처럼 들립니다. 여기서 "외과 의사"는 다른 스케일을 제외하고 "드라이버"라고합니다.
이즈 카타

7
이것은 외향적 인 사람들 중심의 유능한 소프트웨어 개발자를 요구하는 것 같습니다. 행운을 빕니다.
밥 자비스

이것을 말하기 위해 여기에왔다. 또는 다양한 형태의 팀 자체 조직.
Marcin

2
@BobJarvis 동의하지 않습니다. 나는 내향적인 팀에서 일하는 데 큰 성공을 거두었습니다 (그리고 일부는 외향적 인 사람들도 포함한다고 생각합니다). 열쇠는 사람들이 안전하고 개방적으로 기여할 수있는 공간을 만들고, 그룹의 이익을 위해 한동안 자연적 성향을 기꺼이 펼칠 수있는 공간을 만드는 것입니다. Susan Cain의 Quiet은 다른 기질과 잘 작동하는 방법을 이해하는 데 큰 도움이되었습니다. ted.com/talks/susan_cain_the_power_of_introverts
David Carboni

12

이 팀 모델은 305 페이지의 Steve McConnell의 Rapid Development-Taming Wild Software Schedules에서 다시 언급됩니다.이를 수석 프로그래머 팀이라고합니다.

이 모델은 팀에 천재가 있었고 컴퓨팅 리소스가 제한되어 있었기 때문에 일어났습니다. 천재가 드물기 때문에 호의를 얻지 못했으며 유비쿼터스 컴퓨터와 분산 버전 제어를 통해 운영 테이블에 많은 손을 넣을 수있는 공간이 있습니다.

다른 참고 문헌 :

베이커, F. 테리 "생산 프로그래밍의 수석 프로그래머 팀 관리", IBM Systems Journal, vol. 11 호 1, 1972, 56-73 쪽.

Baker, F. Terry 및 Harlan D. Mills. "최고 프로그래머 팀." 자료 화, 19 권, 12 호 (1973 년 12 월), 58-61 쪽.


9

내 생각에 대부분의 소규모 자체 조직 팀은 사실상의 외과 팀 모델에 정착하는 경향이 있습니다.

내가 최근에했던 두 팀은 보통 3 명 또는 4 명으로 구성되는데, 보통 1 명의 선임 (외과 의사), 중급 (공동 조종사) 및 2 명의 후배 / 전문가로 구성됩니다. 오늘날 Brooks가 언급 한 수술 팀의 일부 역할은 Scrum 마스터 및 sysadmins 또는 클라우드 제공 업체가 작성합니다. 소스 제어는 git만큼 강력한 것은 물론 당시에는 거의 존재하지 않았 음을 기억하십시오.

베조스의 2 피자 규칙을 생각해보십시오. 그것은 바로 당신의 자기 조직적인 외과 팀입니다.


1
기본적으로 아무 일도 일어나지 않았습니다. +
gordy

1
@ gordy 예와 아니오. Brook의 사례에서 팀의 각 역할을 담당 한 사람을 결정하는 것은 관리자의 책임이지만 현대적인 민첩한 개념에서는 팀이 자체 구성되어 있음을 알 수 있습니다. 따라서 외과의 사나 부조종사의 역할은 팀이 일하는 방식에서 자연스럽게 떨어집니다. 이것이 핵심적인 차이라고 생각합니다 : 자기 조직화와 회사 지시.
RibaldEddie

"가장 많이"를 "일부"로 변경했습니다. 그것은 실제로 팀 역학에 달려 있습니다. 그리고 외과 의사가 위의 지시를 받으면 유기적으로 성장해야합니다. 결과가 차선책이므로 자기 조직에 +1합니다.
Peter

2
The Tao of Software의 말 : #IV-팀워크의 Tao : 좋은 소프트웨어는 소규모 팀이 빠르게 작업합니다. 대규모 팀이 느리게 작업하여 나쁜 소프트웨어를 작성했습니다. 추론 :-팀의 최적 규모는 1입니다. -팀 규모의 최대 실제 가치는 3입니다. -3 명을 초과하는 팀 규모의 경우 의사 소통이 심각한 문제가됩니다. -팀 규모> 6의 경우 프로젝트 완료가 심각하게 손상됩니다. 마감 시한에 프로젝트 완료가 완료되지 않은 것 같습니다. 이와 같은 경우 더 똑똑한 개발자가 문을 사용할 것입니다 ... 이렇게 쓰여 있습니다 ... ( BWOOoooonnnggggg !!! )
Bob Jarvis

6

HP에서 비슷한 내용을 제안한 논문이있었습니다.

  • 각 소프트웨어 엔지니어는 여러 관리자와 여러 지원 담당자가 필요합니다.
  • 각 엔지니어마다 기술 작가, 테스터, 빌드 관리자 및 툴 메이커가 있어야합니다.

이 신문은 웹 이전 시대에 있었고 때때로 재미있었습니다. 해마다 그 논평은 "너무 웃기다"에서 "어쩌면 우리가 그렇게해야 할 것"으로 조금씩 움직였다.

실제 테스트는 설계하기 어려운 것으로 악명 높으므로 아마도 의견이 남아있을 것입니다. 프로젝트 및 완료율에 대한 일부 설문 조사가있을 수 있습니다.


9
나를 웃게 만드는 부분 (?)은 "... 여러 관리자 ..."입니다. 한 명의 관리자만으로도 생산성을 줄일 수 있습니다. 여러 관리자가 개발자에게 자살 (내 향적) 또는 살인 (외향적)에 대한 생각을 유도 할 수 있습니다.
밥 자비스

4
@BobJarvis-프로젝트에 따라 제목이 다른 5 명의 동시 "관리자"가있었습니다. 당신이 상상하는 것처럼 그 효과는 거의 같습니다.
Rob Crawford

1
분명히 당신은 외향적입니다. 광기 방어? 멕시코? 아니면 ... 정당한 살인 ..? :-)
밥 자비스

그래서 한 회사에 5 명의 보스가있었습니다. 내가 있었 든 다른 사람이든 문제가 있었지만 5 가지 관점에서들을 수있었습니다. 나는 보통 2 번이 나올 때까지 그것을 분석했고 거기에서 더 많은 시간을 듣는 것은 성가신 일이었습니다.
Robert Baron

원래의 아이디어는 "간섭을 시도하는 5 명의 관리자가있는 것이 아니라"예를 들어 "HR 혜택 담당자"및 "HR 경력 개발 담당자"등을 제공하는 것이 었습니다. 여러 관리자가 엔지니어에게 연락하는 빈도 재미있는 비디오 게임을 만들 것입니다!
Charles Merriam '

2

인터넷, 통합 개발 환경소프트웨어 개발 키트 의 증가로 인해 외과 팀의 필요성이 어느 정도 중복되어 왔는지 궁금합니다.이 도구는 다음과 같은 외과 팀 의 많은 기능을 수행 할 수 있습니다.

  • 외과 의사 : 프로그래머
  • 공동 조종사 : 프로그래머 , 동료, StackExchange 또는 IRC와 같은 온라인 커뮤니티
  • 관리자 : 소프트웨어 프로젝트 관리자가 일반적으로 수행하는 역할
  • 편집기 : Javadoc 또는 Doxygen과 같은 문서 생성기를 통합하는 IDE; 소프트웨어 개발 키트의 설명서
  • 비서 : 이메일 클라이언트, 이슈 트래커 및 풀 요청과 같은 프로젝트 관리 도구, 회사 대화방 및 메일 목록
  • 프로그램 담당자 : 코드를 리팩토링하는 기능이 추가 된 프로젝트 디자인에 대한 정보를 저장하는 IDE; 소프트웨어 개발 키트의 문서 및 예제
  • 툴 스미스 : 전체 오픈 소스 커뮤니티
  • 테스터 : 즉시 테스트 스위트 및 테스트 라이브러리. 물론 생산 코드에는 별도의 QA 프로세스가 필요합니다.
  • 언어 변호사 : 온라인 문서, StackExchange

1

신화의 달의 전제를 살펴 봐야한다고 생각합니다. 더 많은 프로그래머를 고용하면 문제가 있거나 기한이 지난 소프트웨어 프로젝트 만 악화됩니다. 문제는 의사 소통에 있으며 새로 추가 된 프로그래머가 프로젝트 (기존 개발에서 시간이 걸리는 시간), 기술 및 때로는 도메인 자체의 속도를 높이는 데 있습니다.

하나의 잘 지원되는 프로그래머는 많은 통신 시간과 조정을 제거합니다. Technology X의 컨설턴트를 고용한다고 가정 해 봅시다.이 컨설턴트가 해당 개인이 해당 영역에서 모든 코딩을 수행 할 수있을 정도로 프로젝트 속도를 높이는 대신 기존 개발자에게 무언가를 만들 수있는 지점까지 코치합니다. 약간의 감독과 함께.

당신이 이것을 많이 보지 못하는 한 가지 이유는 대부분의 소프트웨어가 한 사람에 의해 작성되기 때문입니다. 팀은 작업을 나누고 모두가 가고 일을합니다. 페어 프로그래밍, 리뷰 및 미시적 관리 냄새가 난다. 많은 사람들이 프로그래밍을 팀 스포츠로 보지 않습니다. 한 사람이 전체 제약 조건을 고려하여 주어진 문제를 해결합니다.


0

디자인, 구현, 테스트, 문서화, 빌드, 배포, 운영 등을 전문가가 수행하는 고유 한 역할로 분리할수록 "수술 팀"철학을 더 많이 따르게 될 것입니다. ).

내 경험상 모든 사람이 모든 작업을 수행 할 수 있어야한다는 devOps 철학은 돼지를 도살하는 모델로 돌아온다는 것입니다.


2
그것은 분명히 DevOps 모델이 아닙니다.
RibaldEddie 18

5
실제로 DevOps는 외과 팀 모델과 비슷합니다. 개발자 운영은 운영이 개발 서비스에 존재한다는 것을 암시하기 때문입니다. DevOps는 두 가지 핵심 개념입니다. 운영은 개발 관행으로 간주되어야하므로 소스 제어 및 민첩한 관리 방법과 같이 개발에 사용 된 도구와 기술을 운영에서 사용해야하며 운영을 통해 개발을 지원해야합니다.
RibaldEddie

1
@RibaldEddie 재미있는. 우리 회사의 DevOps 그룹에 대한 나의 경험은 개발자 만 고용하고 제품 개발, 테스트, 문서화, 배포 등 모든 것에 대한 책임이 있다는 것입니다. "교차 기능"이라는 단어가 떠 오릅니다. 글쎄, 15 분 안에 2 개의 downvotes와 삭제 투표로, 나는이 사이트에서 멀리 떨어져있을 것이라고 생각합니다.
Mike Ounsworth 18

1
아, 그러면 "교차 기능"의 정의가 다릅니다. 저는 팀의 모든 구성원이 모든 작업을 수행 할 수 있음을 의미하기 위해 사용하고 있습니다. Jiras는 사람들이 전문화 과정을 거치지 않았기 때문에 일상적으로 사람들 사이에 던져졌습니다. 이 기능을 개발중인 사람은 다음 기능을 테스트하거나 문서화합니다. 이것이 제가 경험 한 "DevOps"입니다.
Mike Ounsworth 18

1
@ MikeOunsworth : 그것은 교차 기능의 팀입니다 : -D
Jörg W Mittag

0

나는 종종 DevOps와 Build Master의 역할을 맡은 프로그래머로서 나는 종종 외과 팀의 위치에 있다고 느꼈습니다. 빌드 마스터로서 전체 코드에 대한 개요를 보았으며 실패했을 때 첫 번째 줄이었습니다. 종종 나는 그것을 스스로 고칠 것입니다.
나는 종종 이러한 통계 시스템을 작성하고 코드에서 핫 포인트를 측정하고, 더 자주 실패하는 부분, 가장 많은 버그 보고서를 끌어 들인 부분 등을 측정했습니다. 나는 결과를 팀에 공개하지 않았습니다. 이 문제를 해결하기 위해 문제와 제안 된 솔루션 및 아키텍처 변경을 일으킨 꼬임.

DevOps로서 나는 프로세스와 오버 헤드의 엄청난 혼란을 자동화 할 것입니다. 팀, 팀 전체, 개발자, QA 테스터 IT 운영에 이르기까지 모든 작업을보다 쉽게 ​​관리 할 수있는 기술과 도구를 연구했습니다. 내 역할은 프로세스를 이해하는 것이 었습니다. 그러나 그 과정을 사용하여 (고통) 팀 (실제 인간)에 시선을 고정함으로써 나는 그것을 객관적으로 볼 수있는 유용한 데이터를 얻는 동안 그것을 완전히 투명하게 만드는 시점까지 흘릴 수있었습니다. 아주 어려운 "큰 그림".

그것은 왜 그렇게 끔찍한 입장이며 왜 그렇게 많이 기피했는지에 대한 것입니다. 아무도 그 과정을 눈치 채지 못했을 때, 아무도 빌드 파이프 라인에 대해 생각하지 않았을 때, 내가 잘한 일을 알고 있습니다. 따라서 기름칠이 잘 된 기계는 당연히 당연한 것으로 여겨집니다. 그러나 실제로 측정 한 결과이 작업이 팀의 생산성에 미치는 영향은 투자 가치가 있다는 것을 알았습니다.

그렇습니다. 저는 그 역할이 오늘날에도 여전히 살아 있다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.