일정 추정의 50% 룰 — 우리가 멈춘 지점
일정을 두 배로 잡아도 늘 부족했던 이유와, 우리 팀이 추정 방식을 바꾸면서 멈추게 된 지점을 솔직하게 적었다.
“두 배로 잡으면 돼.” 일정 추정 이야기가 나올 때 자주 듣는 말이다. 직관적으로 납득이 되는 조언이기도 하다. 그런데 실제로 해보면 두 배로 잡아도 항상 부족했다. 우리 팀 이야기다.
두 배로 잡아도 왜 부족한가
추정이 빗나가는 이유를 두 가지로 나눌 수 있다. 하나는 작업 자체의 복잡도를 낮게 봤기 때문이고, 다른 하나는 작업 외 시간을 추정에 포함하지 않았기 때문이다.
두 번째가 더 자주 무시된다. 코드를 실제로 작성하는 시간 외에도 리뷰 대기, 피드백 반영, 환경 이슈 해결, 예상치 못한 의존성 확인, 문서 작성 같은 시간이 항상 끼어든다. 이것들은 “작업”처럼 느껴지지 않기 때문에 추정 단계에서 잘 포함되지 않는다.
두 배를 잡아도 부족한 건, 두 배는 작업 복잡도에만 대응했지 그 주변의 비작업 시간에는 대응하지 못했기 때문이다.
우리가 써본 추정 방식들
몇 가지를 시도해봤다. 스토리 포인트로 상대 추정을 하는 방식, 작업을 더 잘게 쪼개는 방식, 과거 실적 데이터를 참고하는 방식을 써봤다.
스토리 포인트는 우리 팀 규모에서 관리 오버헤드가 컸다. 실적 데이터는 유효하지만 데이터가 쌓이기 전까지는 쓸 수 없다. 작업을 잘게 쪼개는 방식이 가장 실용적이었다. 작업 단위가 작아질수록 추정 오차도 줄어든다는 경험을 반복했다.
멈춘 지점
추정 정확도를 높이려는 시도를 한동안 계속하다가, 어느 순간 멈췄다. 추정 자체에 드는 시간과 에너지가 추정 오차를 줄여서 얻는 이득보다 크다고 느꼈기 때문이다.
그래서 지금은 추정을 정확하게 맞추려 하지 않는다. 대신 두 가지에 집중한다. 첫째, 이번 스프린트 안에 반드시 끝나야 하는 것과 그렇지 않은 것을 명확히 구분한다. 둘째, 작업이 계획보다 길어지고 있다는 신호를 빠르게 팀에 공유한다.
추정이 정확하지 않아도 소통이 빠르면 대응할 수 있다. 추정이 정확해도 공유가 늦으면 손쓸 시간이 없다.
50% 룰이 말하는 것
“50% 룰”이라고 부르는 건, 추정치의 절반을 버퍼로 보라는 것이 아니다. 우리가 멈춘 지점이 추정 노력의 50% 지점이라는 이야기다. 나머지 50%는 추정 정확도 개선보다 실행과 커뮤니케이션에 써야 한다고 판단했다.
이 결론이 맞는지는 아직도 모른다. 다만 지금 팀에서는 이 방향이 더 잘 맞는다.
— by mings