예측하는 것을 배워라.(Learn to Estimate)
여러분이 프로그래머라면, 여러분의 관리자나 동료 또는 사용자에게 지금 하고 있는 업무의 예측 결과를 알려 주어야 합니다. 그렇게 해야 그들이 목적을 달성하는 데 필요한 시간, 비용, 기술 등을 정확하게 이해할 것입니다.
정확히 예측하려면 예측에 대한 기술을 배우는 것이 가장 중요합니다. 첫째로, 예측이란 무엇이고, 그것이 어떻게 사용되는지 배워야 합니다. 이상하게 들릴 수 있겠지만, 많은 프로그래머와 프로젝트 관리자들이 예측이 무엇인지 정확히 알고 있지 못합니다.
다음에 나오는 프로그래머와 프로젝트 관리자의 대화는 전혀 이상한 것이 아닙니다.
- 프로젝트 관리자: 이 기능을 개발하는 데 얼마나 걸릴까요?
- 프로그래머: 한 달이면 됩니다.
- 프로젝트 관리자: 너무 길어요. 일주일 안에 완료해야 합니다.
- 프로그래머: 적어도 3주는 필요할 것 같은데요.
- 프로젝트 관리자: 2주까지는 시간을 드릴 수 있을 것 같습니다.
- 프로그래머: 네, 좋습니다. 2주로 하죠.
프로그래머는 결국 프로젝트 관리자가 만족하는 선에 맞춰 예측하고 있습니다. 하지만 이것은 프로그래머가 예측치를 제공한 것이기 때문에 프로젝트 관리자는 프로그래머
에게 책임을 전가할 것입니다. 이 대화에서 무엇이 잘못되었는지 파악하려면 예측, 목표, 커밋먼트라는 세 단어를 정의해야 합니다.
- 예측`estimate은 어떤 값, 숫자, 품질 등에 대한 대략적인 계산이나 판단입니다. 예측이라는 것은 객관적인 자료나 과거의 경험에 의해 도출됩니다. 막연한 희망이나 소망이 개입되어서는 안 됩니다. 또한 예측은 대략적이며 정확할 수는 없습니다. 예를 들어“프로젝트가 234.14일이 걸립니다.”라고 예측할 수 없습니다.
- 목표`target는 요구되는 비즈니스 목표에 대한 선언입니다. 예를 들어“이 시스템은 동시 접속자 400명을 지원해야 합니다.”라고 기술할 수 있습니다.
- 커밋먼트`commitment는 특정한 목표가 특정한 날짜까지 어떤 정도의 품질 수준으로 이루어져야 한다는 것을 기술한 것입니다. 예를 들어“검색 기능은 다음 배포 시 까지 동작해야 합니다.”라고 기술할 수 있습니다.
예측, 목표, 커밋먼트는 상호 독립적인 개념이긴 하지만, 목표와 커밋먼트는 믿을 만한 예측에 근거를 두어야 합니다. 스티브 맥코넬`Steve McConnell의 말을 인용하면“소프트웨어 예측의 궁극적인 목적은 프로젝트의 결과를 예측하는 것이 아니라, 프로젝트 의 목표들이 달성할 수 있을 만큼 현실성이 있는지를 판단하는 것입니다.” 그러므로 예측의 목적은 적절한 프로젝트 관리 계획을 세우고 프로젝트 이해 관계자가 실현 가능한 목표를 바탕으로 커밋먼트를 작성할 수 있도록 하는 데 있습니다.
앞의 대화에서 프로젝트 관리자는 예측을 기반으로 한 것이 아닌 자신의 마음속에 있는 목표를 기반으로 프로그래머에게 커밋먼트할 것을 요구했습니다. 앞으로, 여러분은 프로젝트에 관계된 모든 사람들이 이해하고 함께 이야기할 수 있는 예측 결과를 제공할 것을 요구받게 될 것입니다. 그렇게 된다면, 프로젝트의 성공 가능성은 훨씬 높아 질 것입니다. 이제는 예측 기술을 배워야 할 때입니다.
Written By Giovanni Asproni
Giovanni Asproni는 프리랜서 컨설턴트로 일하며 영국에서 살고 있습니다. 그는 아키텍트, 팀 리더, 트레이너, 멘토로 자주 일하지만, 실제로는 단순한 코드에 대한 관심을 갖는 프로그래머입니다. 정기적인 컨퍼런스 스피커로 활동하고 있으며 XPDay 컨퍼런스 위원과 ACCU 컨퍼런스 의장직을 맡고 있습니다. Giovanni는 ACCU와 AgileAlliance, ACM, IEEE Computer Society의 회원으로 활동하고 있습니다.
Translated by 김승중
Reviewed by 이혜진, 김수현, 최현미, 손영수
좋은글 감사합니다.
글을 읽고 도움이 되셨다니. 저 역시 기쁩니다. 🙂 좋은 주말 되시고 건승하세요 🙂