상품개발 완료일이 당겨질 가능성은 매우 낮고 단축할 수 있는 기간도 짧지만, 지연될 가능성은 높고 지연기간도 길어질 수 있다. 그 결과 아래 그림과 같이 프로젝트 완료일정의 그래프는 오른쪽으로 치우친 비 대칭형이다.
추가 설명이 필요한 완료일정이 지연되기 쉬운 이유는 다음과 같다.
① 개별작업에 버퍼를 반영하지만 효과를 보지 못한다.
일정지연을 예방하는 대표적인 방법은 작업에 버퍼를 반영하는 것이다. 프로젝트 관리자가 팀원에게 어떤 작업을 맡기면서 얼마 만에 해낼 수 있느냐고 물었다. 팀원이 “5일의 기간을 주세요” 하고 대답했을 때 5일을 지킬 수 있는 확률은 몇 퍼센트 정도일까? 사람에 따라 다르겠지만 이 대답은, 약속을 지킬 수 있도록 여유시간을 포함했기 때문에 신뢰도가 80~90퍼센트에 가까울 것이다. 이는 50퍼센트의 확률보다 30~40퍼센트 이상의 여유시간(버퍼)을 추가한 것이다. 50퍼센트를 기준으로 삼는 이유는 50퍼센트에서는 납기지연의 기댓값이 0이므로 버퍼가 0이기 때문이다. 프로젝트 관리자가 전체 프로젝트 기간을 50퍼센트 가능성으로 추정하라는 의미가 아니다. 예를 들어 낮 12시에 출발하는 외국행 비행기를 타기 위해 집에서 몇 시에 출발해야 할까? 집에서 도보, 시내버스, 공항버스를 타고 인천공항에 도착한다고 가정해보자. 그리고 각 작업별 예상시간이 아래 그림과 같다면 2시간 45분이 소요된다. 그렇다면 당신은 9시에 집에서 출발할 것인가?
비행기는 놓치면 안 되기 때문에 위의 버퍼는 교통체증 등을 감안하여 최대한 보수적으로 반영할 것이다. 예를 들어 90%이상 달성 가능한 버퍼를 3가지 작업에 반영했다면 비행기 탑승 지연의 리스크는 천 분의 일(0.1 * 0.1 * 0.1)이 될 것이다. 따라서 위의 일정대로 진행하면 99.9%는 비행기 탑승구 앞에서 대기하는 시간이 발생할 것이다. 집에서 몇 시에 출발할 것인가는 리스크에 대한 개인의 성향, 공항에서 기다리는 시간을 싫어하는 정도에 따라 달라질 것이다.
위의 예에서는 각 작업의 수행기간과 버퍼의 길이가 독립적이다. 즉 공항버스 도착 전에 반영한 버퍼시간(15분)이 실제 공항버스를 기다리는 시간과 공항버스의 주행시간에 영향을 미치지 않는다. 그러나 사람이 개입되면 문제는 달라질 수 있다. 위의 예가 4개 작업과 3개의 버퍼로 구성된 소프트웨어 개발 프로젝트라면 작업별 버퍼와 작업 수행기간이 독립적일까? 즉 프로젝트가 지연될 가능성이 천 분의 일일까? 현실은 작업의 버퍼가 작업 수행기간에 영향을 미친다. 그 이유는 다음과 같다.
- 파킨슨의 법칙(Parkinson’s law)
모든 작업은 주어진 기간을 모두 사용한다(역설적으로 말하면 빨리 끝낼 수 있어도 천천히 수행해서 주어진 기간을 다 사용한다).
- 자기 방어(Self-protection)
작업을 빨리 완료하면 관리자는 다른 업무를 지시하거나 다음 번에는 짧은 납기를 기대하기 때문에 작업을 빨리 완료해도 작업완료를 숨긴다.
- 다음 주자의 준비 부족(Dropped baton)
작업을 빨리 완료해도 후속작업을 수행 할 자원이 준비되지 않아 일정을 단축하지 않으면 (전체 프로젝트 관점에서는) 빨리 완료한 시간이 낭비되어 버린다. 이러한 현상이 발생하는 이유는 후속작업을 수행할 사람이 버퍼를 감안한 일정에 선행작업이 완료될 것이라 생각했기 때문이다.
- 학생증후군(Student syndrome)
많은 학생들이 시험에 임박하여 공부를 시작한다. 업무도 목표일이 다가와야 일을 시작하지만, 일을 해보기 전에는 어떠한 문제가 있을지 알 수 없기 때문에 문제가 발생하면 곧바로 프로젝트의 지연으로 이어진다.
개별작업에 버퍼를 반영해도 효과를 보지 못하고 납기가 지연되는 사유를 정리하면 아래 그림과 같다.
- 프로젝트 승인까지 수개월간 기다리기
- 개발자가 배정 될 때 까지 기다리기
- 배정된 개발자가 가용한 상태가 될 때까지 기다리기
- 골치 아픈 변경승인 프로세스 (대기시간이 늘어날수록 변경 가능성은 높아짐)
- 전체 시스템이 완성될 때까지 기다리기 - 코드가 테스트를 통과 할 때까지 기다리기
https://brunch.co.kr/@kbhpmp/160