불확실성과 화해하는 프로젝트 추정과 계획, "9장: 테마간 우선순위 설정"을 정리해본다.
핵심 요약
- 시간이 없기 때문에 우선순위 선정을 해야 한다.
- 스토리 말고 테마를 통해 우선순위 산정한다.
- 고려해야 할 요소
- 재정적인 이득
- 발생하는 비용
- 구현 과정에서 발생하는 지식의 양과 중요성
- 구현함으로서 제거되는 위험 요소의 양
- 가치와 비용에 대해 우선적으로 생각한다.
우선순위를 나눈다는 것
- 시간이 부족하기 때문에 한다.
- 모두 함께 참여해야 한다.
- 다만, 스토리와 같이 작은 단위에 대해 우선순위를 매기는 것은 까다롭다.
- 그렇기 때문에 스토리를 묶은 상위 개념인 테마를 적용한다.
- 이 테마들을 묶어 릴리스 계획을 만든다.
테마의 예시
- 모든 개인 기록을 저장하고 선수 개개인이 그 기록을 열람할 수 있도록 한다.
- 코치들이 어떤 경기에 어떤 선수가 참가할지를 최적으로 지정할 수 있도록 하고 경기 결과를 예측할 수 있도록 한다.
- 데이터 내보내기/가져오기 기능을 제공한다.
이런 테마는 사용자에게 실질적인 가치를 제공한다. 필요하다면 금전적 가치로 환산하는 것도 가능하다.
우선순위 산정에 고려해야 할 요소들
- 해당 기능의 재정적(금전적) 가치
- 해당 기능의 구현에 있어 드는 비용
- 해당 기능을 구현하는데 있어 배워야 하는 지식, 혹은 구현 과정에서 창출되는 지식의 양과 그 중요성
- 해당 기능을 구현함으로 인해 제거되는 위험 요소의 양
보통은 1, 2번 항목을 기반으로 의사결정이 일어나는 경우가 많다. 하지만 최적의 우선순위를 만들기 위해서는 3, 4항목도 중요하다.
가치
- 재정적 가치
- 재정적 영향을 시간에 걸쳐 추정해야 한다. - 10장
- 그리고 이 추정은 사용자의 선호도와 관련이 있다. - 11장
비용
- 멋져보이나 구현하는데 비용이 크게 드는 경우 매력도가 떨어진다.
- 비용에 대해 알아두어야 하는 중요한 사실은 시간이 흐름에 따라 비용이 변화한다는 것이다.
- 최대로 구현을 미뤄 기능 변경이 없을 것이라 예상되는 시점에 구현을 시작하는 것이 가장 좋다.
- 시간도 돈이다.
새로운 지식
- 프로젝트 수행과정에서 발생하는 새로운 지식 탐구는 당연하다.
- 축척해 나갈 지식의 분류
- 제품에 대한 지식: 무엇을 개발할 것인가?
- 프로젝트에 대한 지식: 제품을 어떻게 만들어 나갈 것인가?
- 지식의 습득은 불확실성 제거와 연관이 깊다.
- 수직 하강적 프로세스의 경우 초기에 모든 불확실성을 제거하려는 시도를 한다.
- 반대로 애자일의 경우 진행과정에서 불확실성을 제거하며 진행한다.
- 다만, 초기에 빠르게 불확실성을 제거하는 것이 좋음을 그래프가 설명하고 있다. (반비례 함수)
- 이는 곧 프로젝트 초기에 불확실성을 제거할 수 없다는 사실을 인정한다는 것이다.
위험
발생할 가능성이 있으나 아직 발생하지는 않은 것
발생할 경우 프로젝트 성공을 위협하거나 제한할 가능성이 있는 것
- 일정 위험: "10월까지 끝내지 못할 수도 있습니다."
- 비용 위험: "하드웨어를 적정가에 구매하지 못할 수도 있습니다."
- 기능 위험: "그 기능을 동작하도록 만들 수 없을 지도 모릅니다."
가치와 위험성 사분면
- 가치와 위험 둘중 어느 부분에 방점을 두어야 할지 고민이 될 수 있다.
- 위와 같은 4분면으로 나눌 수 있겠다.
- 기능 개발 순서는 위 순서를 따른다.
- 가장 나중에 하는 것은 위험성은 높고, 가치는 낮은 경우이다.
- 낮은 가치를 가지는 기능때문에 위험성이 높은 일을 벌일 이유는 없다.
네 가지 요소를 함께 고려하려면
- 비용 대비 가치가 높은 테마를 우선적으로 구현한다.
- 이 다음에 다른 요소들을 고려하여 우선순위를 재조정한다.
요약
- 시간이 없기 때문에 우선순위 선정을 해야 한다.
- 스토리 말고 테마를 통해 우선순위 산정한다.
- 고려해야 할 요소
- 재정적인 이득
- 발생하는 비용
- 구현 과정에서 발생하는 지식의 양과 중요성
- 구현함으로서 제거되는 위험 요소의 양
- 가치와 비용에 대해 우선적으로 생각한다.
Reference