전통적 일정관리의 한계
우리가 일정관리를 하는 목적은 프로젝트가 계획대로 진행되고 있는지를 점검하고 계획대비 실적에 이상이 있을 경우 시정조치를 통하여 프로젝트 목적 달성에 문제가 없게 하기 위함이다. 이를 위하여 주기적으로 진척상황과 문제점을 검토 활동을 수행해야 하는 데 이때 기준이 되는 것이 프로젝트 상세 일정계획이다. 관리자는 프로젝트에서 수행해야할 태스크가 보통 1~2주 이내로 도출되어 있는 상세 일정 계획을 기반으로 주단위로 계획 대비 진행 실적을 점검하는 것이 보통이다. 이때 계획 대비 실적이 부진하면 팀에 압박을 가하고 필요시 야근을 독려하여 계획 일정을 맞추려고 노력한다. 하지만 초기에 불명확했던 요구사항은 프로젝트가 진행될수록 구체화되면서 이에 대한 통제 또한 원활히 이루어지지 못하다보니 계획 대비 진척률은 계속해서 뒤처지기만 한다. 일은 일대로 진척이 안되고 사람은 지쳐만 가는 것이 대부분의 국내 프로젝트가 겪는 현실이다.
이러한 전통적 프로젝트 진척관리 방식은 몇가지 한계를 내포하고 있다. 우선첫째로 불명확한 요구사항을 기반으로 한 계획은 계획일 뿐이며 정확한 값이 아니라는 것이다. 다만 팀은 거기에 맞출뿐이다. 예를들어 A 기능을 구현하기 위하여 프로젝트에서 10일 정도의 예상기간을 할당했다고 가정해보자. 물론 프로젝트 리더의 경험으로 10일 정도 걸릴것이라고 추정한 것을 기록한 것이다. 하지만 초기에는 누가 할지를 결정하지 못한 상태에서 리더의 경험에 기반하여 기록한 것이기 때문에 나중에 그 일을 누가 맡느냐에 따라 5일이 걸릴 수도 있고 15일이 걸릴 수도 있다. 운이 좋아 해당 기술에 경험이 있는 기술자가 맡는다면 10일 이내에 완료될 수 있지만 초급자나 경험이 없는 사람이 맡게되면 10일이상 걸릴 것은 자명하다. 더군다나 설사 경험자가 맡았다고 하더라도 10일 이내로 끝날 확률은 거의 없다. 왜냐하면 그 사람은 일을 빨리 끝낼 수 있는 능력을 가지고 있다 하더라도 주어진 기간만큼 일을 늘리려는 경향이 있기 때문이다. (파킨슨 법칙) 그래서 계획은 늦어졌으면 늦어졌지 빨리 완료될 확률은 별로 없다.
그리고 또한가지 우리가 간과하는 것중의 하나가 SW개발은 복잡계라는 것이다. 앞의 경우를 다시 예로든다면 초기에 프로젝트리더가 경험 인력을 확보하고 그들로 하여금 예측하게 해서 10일이라는 일정을 추정했다고 가정해보자. 이는 앞의 경우보다는 추정치의 신뢰도가 높다. 왜냐하면 누가 할지를 미리 정하고 그 사람으로 하여금 추정하게 하였기 때문이다. 하지만 SW를 개발하다보면 예상치 못한 변수와 문제점에 부딪치는 것이 다반사이며 비즈니스 요구사항이나 시장상황이 어떻게 변경될지도 알수 없기 때문에 앞으로 2개월뒤에 수행할 해당업무를 그 사람이 10일내로 끝날지 아무도 장담할 수 없다. 어떠한 개발자도 자기가 예측한 기간을 100% 장담하지는 못하며 다만 그 기간내에 완료할 수 있도록 최선을 다할 뿐이다. 하지만 여기에도 문제는 있다. 전통적 관리자가 목표달성에 집착한 나머지 압박을 가한다면 팀원들은 잔소리를 듣지 않기 위해서라도 그 일정에 어떻게든 완료하려고 할 것이다. 다행히 생각보다 일이 쉬웠다면 문제가 없지만 만약 어려웠다면 팀원은 무언가를 생략해서라도 어떻게든 완료하려고 할 것이다. 그 무언가는 테스트를 충분히 안할수도 있고 설계를 엉성하게 한 상태 일수도 있다. 즉 품질을 희생하게 되는 데 이런 행위는 향후 SW유지보수에서 감당해야 할 기술적인 빚(Debt)으로 남게된다. 이렇게 초기에 일정계획을 수립하고 이를 준수하기 위하여 주기적으로 점검하는 방식은 어떠한 방식으로든 낭비와 지연이 발생하게 된다.
두번째로 프로젝트가 지연되었을 경우 대부분의 관리자가 생산량을 높이기 위하여 취하는 방식은 근무시간의 확대를 통한 생산량의 증대이다. 원칙적으로 야근 및 초과근무에 대하여 1.5배의 근무수당을 주어야 하지만 이것이 지켜지는 사업장은 대규모 생산공장외에는 거의 없다. 그러다보니 관리자가 쉽게 선택하는 것이 야근이나 초과근무를 통하여 생산량을 증대시키는 것이다. 필자가 강의나 세미나를 할때면 가끔씩 상시적 야근을 통해서 생산량이 늘어났다고 생각하는 관리자들이 있으면 손을 들어보라고 질문해본다. 그러면 20% 정도되는 분들이 생산량이 늘어났다고 생각하고 또 다른 20%는 생산량은 늘지 않고 품질만 불량해졌다고 얘기한다. 나머지 분들은 판단하기를 어려워한다. 이것을 종합해보면 야근을 하는 것이 때로는 생산량을 늘리기도 하고 줄이기도 할 수 있다. 이것은 상황에 따라 다른 데 초과근무가 일시적 기간이고 팀원들이 모두 책임감을 느껴서 하는 근무라면 성과는 증대될 수 있지만 누군가의 일방적 강요나 팀원들이 납득할 수 없는 사유에 의해서 야근이 수행한다면 오히려 역효과를 낳기가 쉽다.