[TMMM] #3 외과 수술 팀

문연수·2022년 10월 15일
0

TMMM

목록 보기
3/17

어떻게 해야 큰 시스템을 의미있는 일정 내에 만들어 낼 수 있을까?

1. 문제

 연구에 의하면 같은 그룹 내에서 가장 뛰어난 사람과 가장 못한 사람의 생산성 비율이 평균적으로 10배의 차이가 났다. (재미있는 사실은 경력 연차와 성과 사이에는 어떤 상관 관계도 없었다.)

 프로젝트에 참여하는 인원의 증가는 커뮤니케이션 비용에 증가를 의미하며, 프로젝트 내에서 그 비용 매우 크다. 이것이 시사하는 바는 다음과 같다:

가능하면 적은 수의 사람 (최정예 엘리트) 들에 의해 시스템이 만들어지는 편이 낫다.

 그러나 대규모 시스템을 구현함에 있어 작고 예리한 팀이 가지는 가장 큰 문제는 정말로 큰 시스템을 만드는데 너무 오랜 시간이 걸린다 는 점이다.

 효율과 개념적 일관성을 위해서는 실계와 구축에 소수 인원만이 관여하는 편이 낫지만, 큰 규모의 시스템을 만들려면 적절한 기간 내에 완성할 수 있을 만큼의 인원을 투입할 방법이 필요하다.

 해당 챕터에서는 상충되는 두 가지를 어떻게 조화시킬 수 있는지를 논의한다.

2. 밀스 (Mills) 의 제안.

할란 밀스(Harlan Mills) 는 이 문제에 대해 참신하고 창의적인 해결책을 제시한다:

커다란 전체 업무를 여러 팀에 나눠서 맡기되, 각 팀을 돼지 도축이 아닌 외과 수술팀처럼 조직할 것을 제안했다.

 즉, 모든 팀원이 다 같이 문제에 달려드는 것이 아니라, 한 명이 문제를 해결해 가는 동안 다른 이들이 그 사람이 효율과 생산성을 높일 수 있게 지원 해주는 것이다.

* 외과의

수석 프로그래머이며 이기능과 성능 명세를 직접 정의하며, 프로그램을 설계하고, 코딩하고, 테스트하고, 문서를 작성하는 사람.

* 부조종사

외과의의 분신이며, 업무의 어떤 부분이든 수행이 가능하지만 경험이 많지 않은 사람. (서브 외과의)

* 행정담당

돈, 사람, 공간, 장비를 관장하고 다른 부서의 행정 파트와 소통을 맡는 사람.

* 편집자

외과의가 작성한 초안이나 구술 원고를 읽은 후에 그것을 비평하고, 재작업하며, 인용 자료와 참고 문헌을 보충하고, 여러 버전을 관리하고, 전반적인 문서 생산을 감독하는 사람.

* 두 명의 비서

행정담당과 편집자를 위한 비서로 프로젝트 관련 우편물과 서류물을 관리하는 사람.

* 프로그램 사무원

팀에서 생산되는 모든 기술적 산출물을 하나의 프로그래밍 제품 라이브러리로 관리하는 사람. (솔직히 무슨 역할인지 잘 모르겠다. EETB 의 프로덕트 매니저 정도의 역할이 아닌가 생각하고 있다.)

* 도구 담당

팀에 필요한 특수 도구 (주로 대화식 서비스) 들을 구축, 유지, 업그레이드하는 사람. (지금의 인프라 엔지니어로 보인다.)

* 테스터

기능 명세에서 시스템 테스트 케이스를 만들어 내며, 매일의 디버깅 작업에 테스트 데이터를 제공하는 사람. (EETB 의 테스트 엔지니어, 잡무 같지만 전문 자격증이 있을 정도로 매우 중요한 업무)

* 언어 전문가

어렵고 모호하거나 까다로운 일을 처리하기 위해 특정 언어를 깔끔하고 효율적으로 사용하는 방법을 찾아내며, 좋은 기법을 개발하는 사람. (필자처럼 특정 언어를 미친듯이 깊게 파는 사람들)

3. 외과 수술팀은 어떻게 돌아가는가?

  1. 프로그래머 2명으로 구성된 보통의 팀 (서로 역할을 분담) 과는 달리 외과의와 부조종사 둘 다 전체 설계와 코드를 알고 있다.
    -> 메모리 할당 및 디스크 사용에 대해 서로간 조율할 필요가 없으며, 제품의 개념적 일관성도 보장된다.

  2. 통상적인 팀의 파트너들은 동등한 위치에 있으므로 의견 차이가 발생할 수 있고, 이 또한 커뮤니케이션 비용으로 작용한다.
    -> 외과 수술팀에서는 상급자-하급자 구조를 가지기 때문에 의견 차이란 개념 자체가 없다.

    외과의가 하자고 하면 그냥 하는거다.

4. 확장하기

2, 30 맨이어가 아니라 5000 맨이어 정도의 대규모 프로젝트에서 외과 수술팀을 어떻게 운영할 수 있겠는가?

설계를 결정하는 사람의 수가 17\frac{1}{7} 로 줄었기 때문에 외과의 사이에 의견만 조율하면 된다.

 따라서 전체 시스템의 개념적 일괄성을 지키기 위해 한 명의 시스템 아키텍트가 시스템 전부를 하향식으로 설계 하며, 아키텍처와 구현을 명확히 구분한다.


성당과 시장 (Eric S. Raymond 저자) 에서 이미 외과 수술팀의 개념은 무너진 것으로 알고 있다. 그러나 필자는 3장의 외과 수술팀의 개념이 굉장히 매력적으로 느껴졌고 또 그래야 할 것 같다는 생각이 들었다. 저자인 에릭 레이먼드가 리눅스 프로젝트에 참여하면서 느꼈을 심경의 변화 (고귀한 성당에서 시끌벅적한 시장으로) 가 조금씩은 이해가 되기 시작했다.

출처

[책] 맨먼스 미신: 소프트웨어 공학에 관한 에세이 (프레더릭 브룩스 지음, 강중빈 옮김)

profile
2000.11.30

0개의 댓글