PERT부터 몬테카를로까지
"대충 일주일?" 같은 감 추정은 이제 그만입니다.
미 해군이 핵잠수함 프로젝트에 사용한 PERT 기법부터, 애자일 팀들이 사랑하는 플래닝 포커까지. 과학적 추정 방법을 알아봅시다.
PERT(Program Evaluation and Review Technique)는 1950년대 미 해군이 폴라리스 미사일 프로젝트를 위해 개발했습니다. 2년을 단축시킨 비결이죠.
PERT 공식은 낙관적(모든 게 완벽할 때), 현실적(보통의 경우), 비관적(모든 게 꼬일 때) 세 가지 시나리오를 고려합니다. 예상값은 (낙관적 + 4×현실적 + 비관적) / 6으로 계산합니다. 표준편차는 (비관적 - 낙관적) / 6입니다.
예를 들어 로그인 API 개발의 경우 최선 4시간, 현실 8시간, 최악 16시간으로 추정하면 예상값은 8.7시간, 68% 확률 범위는 6.7시간에서 10.7시간, 95% 확률 범위는 4.7시간에서 12.7시간입니다.
왜 4를 곱할까요? 정규분포에서 최빈값에 더 가중치를 주기 위해서입니다.
애자일 팀의 필수 도구입니다. 진행 방법은 모두가 카드를 준비하고(1, 2, 3, 5, 8, 13, 21...), 동시에 공개하며, 차이가 크면 토론하고, 합의를 도출합니다.
피보나치를 쓰는 이유는 작업이 클수록 불확실성도 커지기 때문입니다. 1과 2의 차이는 명확하지만, 21과 34의 차이는 모호합니다. 심리학적 효과로 큰 숫자일수록 간격이 넓어져 과도한 정밀도를 피합니다.
1000번 시뮬레이션으로 확률을 계산합니다. 각 작업의 실제 시간을 무작위로 선택하여 프로젝트 완료 시간을 시뮬레이션합니다. 예를 들어 설계는 최소 2일, 가능성 높은 3일, 최대 5일, 개발은 최소 5일, 가능성 높은 8일, 최대 15일, 테스트는 최소 2일, 가능성 높은 3일, 최대 6일로 설정하면, 50% 확률로 특정 일수 내에 완료하고, 90% 확률로 특정 일수 내에 완료할 수 있습니다.
과거 데이터를 활용한 추정입니다. 지난 10개 스프린트의 속도를 분석하여 평균 속도와 표준편차를 계산합니다. 예를 들어 지난 스프린트 속도가 23, 28, 25, 30, 22, 27, 26, 24, 29, 26 포인트라면, 평균 속도로 필요한 스프린트 수를 계산하고, 낙관적과 비관적 범위도 함께 제시합니다.
전문가 합의 기법입니다. 첫 번째 라운드에서는 익명으로 추정을 제출합니다. 개발자A는 10일, 개발자B는 5일, 개발자C는 15일이라고 하면 편차가 큽니다. 두 번째 라운드에서는 이유를 공유한 후 재추정합니다. A는 "DB 마이그레이션 고려하면..."이라고 하고, B는 "아, 그걸 빼먹었네요"라고 하며, C는 "테스트 자동화도 포함인가요?"라고 물으면 재추정 결과는 8일, 9일, 10일로 좁혀집니다. 세 번째 라운드에서 최종 합의를 도출합니다.
작은 프로젝트(1-2주)에는 플래닝 포커를 추천합니다. 빠르고 팀 합의를 도출하기 쉽습니다. 중간 프로젝트(1-3개월)에는 PERT와 벨로시티를 함께 사용합니다. 적절한 정확도와 실용성을 제공합니다. 대규모 프로젝트(3개월 이상)에는 몬테카를로와 와이드밴드 델파이를 사용합니다. 높은 정확도가 필요하기 때문입니다.
참조 클래스 예측은 비슷한 과거 프로젝트를 찾아 조정 계수를 계산하는 방법입니다. 예를 들어 로그인 시스템 A는 추정 20일, 실제 35일, 로그인 시스템 B는 추정 15일, 실제 28일, 로그인 시스템 C는 추정 25일, 실제 40일이었다면 평균 조정 계수는 1.73배입니다. 새로운 추정에 이 계수를 곱하면 됩니다.
추정 회고는 매 스프린트 후 추정 정확도를 분석하는 것입니다. 정확했던 추정과 부정확했던 추정을 구분하고, 원인을 분석하여 교훈을 도출합니다. 예를 들어 API 개발은 추정 8시간, 실제 12시간으로 4시간 초과했는데 원인은 인증 복잡도였고, UI 구현은 추정 6시간, 실제 5시간으로 1시간 단축되었는데 원인은 템플릿 재사용이었습니다. 테스트는 추정 4시간, 실제 8시간으로 4시간 초과했는데 원인은 엣지 케이스였습니다. 교훈은 인증과 테스트는 1.5배 버퍼가 필요하다는 것입니다.
"감"으로 하는 추정의 시대는 끝났습니다.
PERT로 불확실성을 계산하고, 플래닝 포커로 집단지성을 활용하고, 몬테카를로로 확률을 시뮬레이션하세요.
기억하세요: 하나의 숫자가 아닌 범위로 추정하고, 과거 데이터를 반드시 활용하며, 팀 전체가 참여하는 추정을 하고, 지속적으로 추정을 개선합니다.
정확한 추정은 신뢰를 만들고, 신뢰는 성공적인 프로젝트를 만듭니다.
과학적 추정과 프로젝트 관리가 필요하신가요? Plexo를 확인해보세요.