brunch

You can make anything
by writing

C.S.Lewis

by 김병호 Oct 18. 2019

76. 상품개발 계획과 추정(2)

성공적인 소프트웨어 신상품 개발가이드

1) 과소추정과 과다추정


과소추정(under-estimation)과 과다추정(over-estimation)은 논란이 많은 주제이다. 과다추정은 예를 들어 10개월에 할 수 있는 일을 12개월에 하겠다고 추정하는 것을 의미한다. 과다추정의 가장 큰 문제점은 추정기간을 다 채워서야 프로젝트를 끝낸다는 것이다. 반면 과소추정은 10개월이 걸릴 업무를 의욕적으로 8개월 만에 끝내겠다고 하는 것이다.


제약이론(theory of constrains)을 주장하는 학자들은 사람들이 과다추정하는 경향이 있다고 주장하고, 에드워드 요든이나 스티브 맥코넬은 개발자들이 미래를 순진하게 낙관하는 경향이 있어 과소추정 한다고 주장한다. 사람에 따라 평소 과소추정 또는 과다추정을 하는 사람이 나뉘지만 조직 문화에 따라 특정 유형의 사람이 많을 수도 있다.


추정 시의 가정들이 프로젝트 끝까지 유효한 경우는 거의 없기 때문에 추정치를 ‘실적’과 비교하여 과소추정인지, 과다추정인지 판단하기 쉽지 않다. 따라서 단순히 ‘계획’과 ‘실적’을 비교하여 ‘과소추정’이나 ‘과다추정’을 이야기하는 것은 무리가 있다. 상품관리자는 과다추정이라고 주장하고, 프로젝트 관리자는 과다추정이 아니라고 주장할 때, 조직에는 이를 판단할 판사가 없는 경우가 대부분이다. 결국 승자는 조직 내에서 파워가 더 높은 쪽이 된다. 다만 스티브 맥코넬(2007)이 주장하는 과다추정의 피해와 과소추정의 피해는 귀 기울여볼 필요가 있다.


과다추정의 피해는 과다추정한 기간을 다 소모하는 것이다. 반면 과소추정의 피해는 그보다 훨씬 큰 피해를 끼칠 수 있다. 무리한 짧은 납기를 달성하기 위해 우왕좌왕하면서 프로젝트를 관리하는 경우 목표달성이 힘들어지고, 일정이 지연한 것에 실망한 고객과의 불편한 순간을 피하기 위해 더 짧은 납기를 약속하고 그 결과 일은 더 꼬이는 악순환이 거듭된다.

결국에는 과다추정한 기간을 훨씬 초과하여 프로젝트를 끝낼 수도 있다. 이외에도 과소추정의 대표적인 피해는 실적진척 속이기, 많은 오류 생성, 팀 사기 저하, 재작업 등을 들 수 있다. 결론적으로 말하면 프로젝트에서 과다추정에 대한 불이익은 한계가 있는 반면, 과소추정에 대한 불이익은 한계가 없다.  과다추정의 피해가 더 큰 이유 중 하나는 프로젝트 실적의 비대칭성이다. 계획된 기간보다 훨씬 늦어지기는 쉽지만, 계획기간보다 빨리 끝낼 수 있는 기간은 한계가 있다. 비행기 도착시간을 상상하면 알 수 있다. 비행기 도착은 빠르면 20분이지만, 늦으면 몇 시간, 심하면 하루 이상이 지연된다.


2) 추정이 실적에 미치는 영향

프로젝트 추정치(정확히 말하면 공약이다)는 실적에 영향을 미친다. 흔히 추정은 프로젝트의 상황을 종합적으로 고려하여 미래의 성과를 예측하는 활동이라고 이해하지만, 실제로는 추정치가 목표의 기능이 있기 때문에 프로젝트 성과에 영향을 미친다. 이는 양자의 위치를 관측하는 행위가 양자의 운동량에 영향을 미치기 때문에, 양자의 위치와 운동량을 모두 정확하게 아는 것은 불가능하다는 하이젠베르그의 불확정성의 원리와 유사하다. 너무 쉬운 목표나 너무 힘든 목표는 팀원들을 동기부여 시키지 못하지만 적당히 힘든 목표는 팀원들의 동기부여 수준을 높여 추정치가 실적에 영향을 미친다.


많은 프로젝트가 계획한 원가목표와 일정목표 근처에서 완료하는 것은 추정이 정확하기 때문이기도 하지만, 추정목표에 맞추어 작업을 끝내는 경향도 무시할 수 없다. 스티브 맥코넬은 추정오차 20퍼센트까지는 숙련된 프로젝트 관리자라면 프로젝트 목표를 달성할 수 있다고 한다. 목표가 실적에 영향을 미치는 것을 파악하기 위해서는 비슷한 생산성을 가진 프로젝트 팀원들에게 같은 작업지시를 하면서 언제까지 끝내라는 지시를 하지 않고 작업을 완료한 뒤 보고하라고 할 때 그 결과를 예상하면 된다. 아마도 개인의 성향에 따라 차이가 클 것이다. 반대로 똑같은 팀원들을 대상으로 목표 완료일을 제시한다면 실적 완료일은 큰 차이가 없을 것이다.


만일 추정치가 프로젝트 실적에 영향을 미친다면 프로젝트 착수시점에서 ‘진짜 원가’나 ‘진짜 일정’이 있기나 한 것일까? 결론은 100퍼센트 정확한 추정치는 없고, 프로젝트 팀원들의 노력으로 달성 가능한 구간은 존재한다는 것이다. 조직의 성숙도가 높아질수록 추정의 정확도가 높아져 추정구간의 크기도 작아질 것이다.


3) 추정 시 유의사항

추정의 신뢰도를 향상하기 위한 고려사항은 다음과 같다.

시간도둑( time robber)을 고려한다프로젝트 수행 시 계획된 일만 하는 것은 아니다. 보통 꼭 해야 하는 작업은 추정을 잘하지만, 실제로 수행할 작업의 추정은 하찮게 여기는 경우가 많다. 예를 들어 본사 대응, 교육, 재작업, 휴가, 경조사 등에 투입되는 시간이나 비용은 추정 시 간과하기 쉽다. 따라서 기간, 공수 추정 시에는 생산성을 100퍼센트로 가정하면 위험하다. 80퍼센트 정도만 가정하는 것이 바람직하다.


- 규모의 비경제(diseconomy of scale)를 감안한다.

규모가 커질수록 생산단가가 낮아지는 현상을 규모의 경제라 한다. 소프트웨어의 경우엔 반대이다. 규모가 커질수록 생산성은 낮아진다. 규모의 비경제가 발생하는 이유는 규모가 커질수록 복잡도, 인터페이스, 의사소통 비용, 관리비용이 증가하기 때문이다


- 개발기간에 따라 적정 공수가 달라진다

동일한 업무를 하더라도 기간에 따라 전체 공수는 달라진다. 극단적으로 한 명이 10개월 동안 할 수 있는 일을 10명이 1개월에 끝낼 수 있을까? 그렇지 않을 것이다.

옆의 그림과 같이 적정 기간안에 업무를 완료하기 위해 필요한 공수가 1.0이라면 같은 업무를 더 짧은 기간에 완료하기 위해서는 상대적으로 더 많은 공수가 필요하며, 더 긴 기간이 주어지면 상대적으로 더 적은 공수로도 업무를 완료할 수 있다. 물론 작업이 단순하고 반복적이라면 기간이 공수에 미치는 영향이 없을 수 있지만 대부분의 소프트웨어 프로젝트는 같은 업무를 하더라도 기간에 따라 전체 공수가 달라진다고 가정하는 것이 타당하다. 소프트웨어 개발공수를 줄이는 가장 확실한 방법은 1명에게 충분한 시간을 주고 개발하는 것이다.


즉석 추정은 피한다

경영층은 프로젝트 관리자에게 기습적으로 추정에 관한 의견을 물어보는 경우가 많다. 예를 들어 커피를 마시는 편한 자리에서 업무를 간단히 설명하고 “신상품 개발 요구사항을 ○○ 프로젝트 관리자이라면 6개월 내에 끝낼 수 있겠죠?”와 같은 식이다. 주로 프로젝트 관리자보다 고위층이 프로젝트 관리자에게 물어보는 경우가 많은데, 대답을 할 수도, 안 할 수도 없는 난처한 상황이다. 그러나 즉석 추정은 피하는 것이 좋다. 한 번 프로젝트 관리자 입에서 나온 추정은 상대방이 약속으로 받아들이기 때문이다. 일단 프로젝트 관리자가 이야기한 추정치는 변경이 힘들다. 이처럼 최초 추정치가 향후 추정의 기준이 되는 것을 ‘닻 효과 (anchor effect)’라고 한다. 어떤 경우라도 최소한의 시간을 확보하여 추정치를 제시하는 것이 바람직하다. 상황이 급하면 팀원들과 검토한 뒤 추정치를 보고하겠다고 하고 일단 그 자리를 피한 뒤 다만 몇 시간이라도 버는 것이 좋다.


요구사항과 작업 분할 후에 추정한다

규모, 공수, 원가는 요구사항과 작업을 기반으로 추정한다. 너무 큰 요구사항이나 작업은 추정의 오류가 높아지며, 상세하게 분류하면 대수의 법칙이 적용되어 추정의 오류가 상쇄되는 효과가 있다. 추정의 오류가 상쇄된다는 것은 어떤 업무는 과다추정, 어떤 업무는 과소 추정하는 경우, 각각의 추정오류는 크지만 프로젝트 전체 관점에서 보면 추정의 오류가 줄어드는 것을 의미한다.


프로젝트 규모에 따라 추정방법을 다르게 한다

소규모 프로젝트는 개인의 경험을 바탕으로 상향식으로 추정하고, 대형 프로젝트는 초기에는 모델을 활용하여 하향식으로, 프로젝트 후반부에는 상향식으로 추정하는 것이 적합하다. 소규모 프로젝트에서는 개인의 역량이 생산성에 많은 영향을 주지만, 대형 프로젝트일수록 관리체계와 같은 조직적 변수가 생산성에 영향을 미친다.


추정을 위한 시간과 추정의 신뢰도는 비례하지 않는다

짧은 시간에 계산한 추정치가 많은 시간을 들여 계산한 추정치와 크게 차이가 나지 않는 경우가 많다. 적은 노력으로 추정의 신뢰도를 많이 높일 수 있는 구간이 존재한다.


기간추정에 이견이 있을 때는 평균보다 합의가 중요하다

프로젝트 작업기간 추정에 대해 팀원들 사이에 이견이 있을 때는 각자의 추정근거를 설명하고, 관련 팀원들이 합의를 거쳐 기간 추정치를 확정하는 것이 바람직하다. 작업기간의 추정치가 다르다고 단순히 산술평균을 하는 것은 위험하다.


기타 경험적인 추정법칙

맥코넬이 제시하는 경험적인 추정법칙은 다음과 같다.

• 관리 및 사무지원의 경우 기본 공수 추정에 5~10퍼센트를 추가하라.

• IT 지원의 경우 기본 공수 추정에 2~4퍼센트를 추가하라.

• 구성관리, 빌드 지원의 경우 기본 공수 추정에 2~8퍼센트를 추가하라

• 1개월 요구사항에서 1~4퍼센트의 증가를 감안하라

• 단일 회사, 단일 건물에서의 개발에서 여러 회사, 여러 장소에서의 개발

로 전환하기 위해서는 공수에서 25퍼센트 증가를 감안하라.

• 프로젝트 수행기간(월) = 3.0 × √투입공수⅓

• 명목상의 일정을 25퍼센트 이상 줄여서는 안된다.


https://brunch.co.kr/@kbhpmp/160


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari