저자는 ‘효율적인 소프트웨어 개발이 이루어지려면 많은 사람의 시각을 반영해야 한다.’ 고 챕터를 열었다. 동시에 ‘기본 실천방법’ 에서 다룬 ‘전체 팀’ 을 언급 했는데, 내가 이해하고 있는 ‘전체 팀’과 다른 의미를 가지고 있었다.
‘전체 팀’ 은 ‘프로젝트가 성공하기 위해 필요한 기술과 시야를 지닌 사람들을 전부 팀에 포함시켜라.’ 는 것은 많은 사람의 시각을 반영 하는 것과는 분명한 차이가 있다고 생각하기 때문이다.
TDD 에서 부터 느낀 전체적인 큰 맥락은 ‘불필요한 군더더기를 제거한다.’ 는 것이다. 효율적인 부분을 취하려면 군더더기가 없어야 한다. 효율적이기 위해 많은 사람의 시각을 반영 한다면, 필요한 기술과 시야를 가지고 있지 않더라도 팀에 포함 시켜야 한다.
필요한 기술적 시야를 가지고 있지 않은 사람이 제시하는 의견을 통해 새로운 인사이트를 얻을 수 있다고 생각 한다. 하지만 그렇게 전체 팀에 포함 시키면 그 사람이 느끼는 소속감이 떨어지고 생산성도 낮아진다고 생각 한다. 얻는 것 보다 잃는 게 더 많다고 생각하기 때문에, ‘전체 팀’ 은 필요한 기술과 시야를 가진 사람들로 구성 되는 게 좋겠다.
예시로 보여준 사례에는 문제가 있다. 의사 결정이 필요한 자리에 유관 부서 사람들이 순차적으로 합류 했다는 것이다. ‘어떤 방식으로 소프트웨어를 개발할까.’ 라는 주제라면, 적어도 (모든 구성원이 모일 수 없다면) 각 유관부서를 대표하는 사람들이 모두 모인 자리에서 결정했어야 한다.
프로그래머와 임원들 → 아키텍트 → 상호작용 설계자 → 기반구조 계획자 순서로 합류 했는데, 늦게 합류한 사람들은 앞서 나눈 생각을 공유받을 시간이 없어서 같은 얘기를 반복하게 되고, 무시할 수 없는 새로운 관점이 던져지기 때문에 일찍 참여한 사람들은 지칠 수 밖에 없다.
그렇기 때문에 (나는 현장에 없었지만) 이 사례에서 이들이 ‘모두 한 줄에 묶여 있다는 사실을’ 잊었다고 생각하지 않는다.
책에서 얘기하는 완벽한 문서의 조건
- 문서에서 서술하는 기능이 막 구현된 바로 그 시점에 문서 작성도 완료되는 것
- 문서에서 개선할 점이 발견될 때 갱신하기 쉬운 것
- 만드는데 비용이 적게 드는 것
- 기본 개발 주기에 추가 시간을 더하지 않는 것
- 사용자에게 가치 있는 것
- 문서를 작성하는 작업이 팀에게도 가치 있는 것
완벽함은 결함을 인식하지 못하고 있음을 반증한다고 생각 한다. 다양한 종류의 문서가 있겠지만, 저레벨에서 실용적으로 활용할 수 있고 현황을 반영하려면 동작하는 코드를 기반으로 만들어진 것이어야 한다고 생각 한다.
다양한 역할과 역할이 달성해야 할 것들에 대해 서술했지만, 처한 상황과 필요에 따라 팀원 개개인 모두는 언제든 모든 역할을 할 수 있는 준비가 되어있으면 좋겠다.
테스터
XP 팀의 테스터는 구현을 시작하기에 앞서 고객이 자동화된 시스템 차원의 테스트(System-level test)를 선택하고 작성하는 일을 돕고, 프로그래머에게 테스트 관련 기법을 지도 한다.
상호작용 설계자
XP 팀의 상호작용 설계자는 시스템의 전반적인 메타포를 선택하고, 스토리를 찾아낼 기회를 잡기 위해 이미 배치 된 시스템의 사용 양상을 조사한다.
아키텍트
XP 팀의 아키텍트는 대규모 리팩터링을 찾아내고 실행하는 일, 아키텍처를 집중 테스트하는 시스템 차원의 테스트를 작성하는 일, 스토리를 구현하는 일을 한다.
프로젝트 관리자
XP 팀의 프로젝트 관리자는 팀 내 의사소통이 용이하도록(facilitate)하고 고객과, 공급자와 그리고 조직의 다른 부분과의 의사소통을 조정한다.
제품 관리자
XP 에서, 제품 관리자는 스토리를 작성하고, 분기별 주기에서 주제와 스토리들을 고르고, 일부일별 주기에서 스토리들ㅇ르 고르고, 구현 과정 중 스토리에서 완전하게 명세되지 않은 부분들이 드러날 경우 질문에 답변하는 일을 한다.
임원
임원은 XP 팀에게 용기, 자신감, 책임감을 불어넣는다.
테크니컬 라이터
XP 팀에서 기술적 출판물의 역할은 기능에 대한 빠른 피드백을 제공하는 것과 사용자들과 더 긴밀한 관계를 맺는 것이다.
사용자
XP 팀의 사용자는 스토리를 작성하고 고르는 일을 돕고 개발 중에 문제 영역(domain)에 관련된 결정을 내린다.
프로그래머
XP 팀의 프로그래머는 스토리와 과업을 추정하고, 스토리를 과업들로 나누고, 테스트를 작성하고, 기능을 구현하는 코드를 작성하고, 지겨운 개발 프로세스를 자동화하고, 시스템의 설계를 점진적으로 개선한다.
인적자원부
개발팀이 XP 를 시작할 때 인적자원부에는 도전거리가 두 개 생각하고 알려져 있다.
역할
성숙한 XP 팀에서 역할들은 융통성 없이 고정된 것이 아니다.
'생각을 적바림 > 익스트림 프로그래밍' 카테고리의 다른 글
익스트림 프로그래밍, HANG OUT 010 (0) | 2024.05.02 |
---|---|
익스트림 프로그래밍, HANG OUT 009 (0) | 2024.05.02 |
익스트림 프로그래밍, HANG OUT 008 (1) | 2024.05.02 |
익스트림 프로그래밍, HANG OUT 007 (0) | 2024.05.02 |
익스트림 프로그래밍, HANG OUT 006 (1) | 2024.05.02 |