불확실성과 화해하는 프로젝트 추정과 계획, "7장: 재추정"을 정리해본다.
재 추정을 하면 안 되는 경우
- 첫번째 이터레이션을 한 후, 1, 2번 스토리를 마무리했다고 생각해보자.
- 원래는 4개의 스토리 모두를 한 이터레이션에 할 수 있을 것이라 생각했다.
- 즉, 12의 스토리 포인트를 달성할 수 있을 것이라 생각했으나 6정도밖에 하지 못한 것이다.
- 여기서 이들은 우리의 속도가 맞다고 가정한다. 즉, 일이 복잡하거나 규모 추정을 잘못했다고 판단했다.
- 그래서 1, 2번 스토리를 3에서 6으로 변경하여 초기 예상했던 팀의 속도, 12를 맞추었다.
- 그런데 이렇게 하면 아무런 의미도 없다.
- 스토리 포인트는 애초에 상대적인 개념이다. 같은 포인트를 주었다는 것은 상대적 추정치가 동일하다는 것을 의미한다.
- 그렇기 때문에 1, 2를 6으로 바꾼다는 것은 나머지 3, 4도 같이 바꿔야 한다는 말이 된다.
언제 재 추정을 해야 하는가
- 첫 이터레이션에 1, 2, 6을 구현하는 것이 목표였다.
- 실제로 해보니 1, 6만 가능했다.
- 1이 생각보다 까다로웠다는 결론을 얻었다.
- 그래서 1의 스토리포인트를 두배 늘려 수정하려 했다.
- 그런데, 스토리 1, 2, 3에서 공통이 되는 기능은 "차트 출력"이다.
- 만약 이 기능에서 문제가 발생한다면 스토리 2, 3도 두배 늘려야 할 수도 있다.
- 이 상황에서 어떻게 처리하는 것이 좋을지 생각해보자.
시나리오 1: 재추정을 하지 않는다.
- 1, 6을 구현했으므로 지금은 8의 속도를 가지고 있다.
- 이 상황에서 다음 이터레이션을 수행하면 8을 가질 것이라는 것을 안다.
- 하지만 2, 3을 한번에 처리하는 것이 어렵다는 것은 모두가 알고 있다.
- 그래서 암묵적으로는 알고 있지만 실제 스토리포인트에는 표시하지 않는다.
- 즉, 2, 3스토리의 합이 8이 아니게 될 것을 모두가 알고 있다.
- 8은 단지 명목상의 숫자가 되버린다.
시나리오 2: 개발이 완료된 스토리에 대해서만 재추정한다.
- 1번 스토리에 대해서만 재추정을 한다고 생각해보자.
- 3에서 6으로 변경된다고 하면 속도는 11이 된다.
- 11의 속도를 가지고 있음을 알고 있기 때문에, 2, 3, 4 스토리를 구현하기로 결정한다.
- 하지만 실제로 2, 3의 스토리는 3에 해당하는 작업량을 갖고 있지 않기 때문에 또 모든 스토리를 치지 못하는 문제에 봉착한다.
시나리오 3: 상대적 규모가 변경된 스토리에 대해 재추정한다.
- 이번에는 1번 스토리에서 발생한 문제를 기반으로 연관된 스토리 모두에 대해 재추정을 실시한다.
- 즉, 1, 2, 3에 대한 추정치는 모두 두배로 조정된다.
- 이렇게 하면, 첫번째 이터레이션의 속도는 11로 조정된다.
- 다음번 이터레이션을 진행할 때도 있어, 2, 3번 스토리 포인트가 변경되었기 때문에 4번 스토리를 넣는 판단을 하지 못하게 된다.
- 재추정은 이 상황에서만 실행한다.
부분적으로 완료된 스토리에 대한 재추정
- 이터레이션을 끝내보니, 구현이 부분적으로 끝났다.
- 이 경우 재추정을 실행하는 것은 어떨까?
- 결론적으로 좋지 않은 판단이다. 부분적으로 끝낸 것에 대한 스토리 포인트 추정이 어렵기 때문이다.
- 이 경우, 아예 구현이 되지 않았으면 속도 계산에 넣지 않는 것을 추천한다.
- 가장 좋은 것은 스토리의 크기를 충분히 작게 만들어, 구현이 부분적으로 끝날 여지를 주지 않는 것이다.
재추정의 목적
- 재추정의 필요성에 깊게 생각하지 마라.
- 즉, 그렇게 까지 중요한 것은 아니다.
- 다만, 스토리 포인트는 상대적으로 매겨지기 때문에 이 일관성을 유지하는 것이 중요하다.
요약
- 스토리 포인트, 이상적 작업일은 규모에 대한 추정치이다.
- 즉, 하나 이상의 스토리의 상대적 규모가 바뀐 경우에만 재추정을 실시한다.
- 부분적 구현에 대해 스토리 점수를 부분적으로 주는 것은 궈장하지 않는다.
토론 거리
- 속도 개념이 잘못된 추정치를 어떻게 바로잡을 수 있다는 것인가?
- 우리가 할 수 있을 것이라 생각했던 속도와, 실제 속도의 괴리가 있다면 추정치에 잘못된 것이 있을 수 있다는 반증이기 때문
- 상대적 규모가 변경된 경우에만 재 추정을 해야하는 이유는 무엇인가?
- 스토리 포인트는 애초에 상대적인 개념이다. 스토리 포인트 1점에 대해 특정 스토리의 구현 정도를 가늠해두고, 이를 기반으로 비교하여 매긴 수치이다.
- 그렇기 때문에 다른 스토리 포인트와 비교하여 특정 스토리 포인트를 매겨야 하는데, 연관되어 있다면 함께 변경해야 한다.