하루에 8시간 일하시나요?
그렇다고 프로젝트 일정을 예측할 때 하루 8시간 일을 하는 것으로 계산하십니까?
그러면 프로젝트 일정을 지키기 어려울 것입니다.
보통 아무리 집중해서 일을 한다고 해도 하루에 80% 일하기 어렵습니다.
나머지 20%의 시간은 회의를 하고, 커피도 마시고, Email도 봐야 합니다.
또 2개의 프로젝트에 4시간씩 할당이 되어 있어도, 업무 전환 비용(Context switching cost)를 무시할 수 없습니다.
물론 프로젝트 일정은 프로젝트 관리자 혼자서 마음대로 정할 수가 없습니다.
실제 업무를 담당할 담당자들의 도움을 받아서 일정을 산정하게 됩니다.
이때 담당자들이 산정한 일정을 그대로 받아들이나요? 아니면 스스로의 버퍼를 따로 두시나요?
저는 하루의 업무시간을 보통 8시간*80%로 잡고 일정을 산정합니다.
그 이유는 다음과 같습니다.
- 개발자의 기술력은 믿지만, 일정 예측 능력은 믿을 수 없습니다.
- 프로젝트를 진행하다 보면 항상 예상치 못한 일이 발생합니다.
- 프로젝트가 막바지로 가면, 특히 통합과정에서의 혼란을 개발자들은 쉽게 생각하는 경향이 있습니다.
- 과거의 경험으로 보면 예상된 일정보다 빨리 끝난 프로젝트는 거의 없었습니다.
낙관적인 일정도 나쁘지만, 일정을 너무 비관적으로 잡으면 프로젝트팀이 자칫 게을러 질 수도 있습니다. 80%의 시간만을 일하는 것으로 일정을 잡아도 프로젝트가 진행되면 부정확인 일정 예측으로 인해서 초과근무는 자주 일어납니다. 그래도 합리적인 일정으로 산정되었기에 프로젝트 일정을 지킬 가능성이 훨씬 높습니다.
이러한 일정산정을 너무 넉넉한 일정으로 비난하는 경영자나 관리자가 있을 수 있습니다.
하지만 무리하게 촉박하거나 낙관적인 일정으로 일정을 지키지 못하거나 개발자를 너무 혹사하는 것보다는 합리적인 일정이 더 낫습니다.
프로젝트팀에서는 믿을 수 있는 일정을 제시하고 지키는 것이 계획적인 비즈니스를 할 수 있게 하는 원동력입니다.
이렇게 프로젝트팀이 제시한 일정이 신뢰를 받기 위해서는 합리적인 근거 제시와 투명한 프로젝트 진행이 꼭 필요합니다.
(아래 그림은 프로젝트 초기에 일정 산정이 얼마나 어려운지를 보여주는 그래프입니다.
프로젝트 초기의 일정은 -50% ~ +200%까지의 오차를 보인다는 의미입니다.
그리고 정확한 일정은 끝나봐야 안다는 거죠.)
원칙적으로 일정 예측은 개발자에게 맡겨야 한다고들 합니다. 하지만, 어떤 개발자들은 턱도 없이 짧은 일정을 "한번 해보겠습니다"라고 말하기도 하고, 또 다른 개발자들은 온갖 버퍼를 다 고려해서 말도 안돼게 늘어진 일정을 내놓기도 합니다. (그러고는 "예정보다 일찍 끝냈지요?" 라고 말할때는 정말 얄밉습니다.) 그래서 Planning Poker 방법을 한번 도입해 보려 하는데 혹시 해보신 분이 있으면 조언 부탁드립니다.
답글삭제헝그리맨님 안녕하세요.
답글삭제일정산정은 정말 어려운 일입니다. Planning Poker를 이용해서 일정을 산정해 본적은 없지만, 개발이라는 것이 누가 하냐에 따라서 소요시간이 다르므로 실제로 일을 할 사람이 산정하는 것이 좋지만 일정산정을 잘 못하는 개발자가 많다는 것도 어려움 중의 하나입니다.
그래도 스펙을 잘 적고, WBS를 잘게 쪼개서 일정을 산정하는 방법이 그중에 정확한 방법입니다.
레이님? ^^ 소공!!(아직 학생이라 소프트웨어 공학을 소공으로 부른답니다.) 즐겨찾기 하고 자주자주 와서 보고 있어요... 시간산출.. 정말 중요하면서 어려운.. 아르바이트로 홈피를 제작하게 됬는데 언제까지 해주겠다고 약속을 했는데 날이 갈수록 요구사항이 커지니.. 결국 날을 새면서 하게 되더라구요 ㅠㅠ 항상 글 잘 읽고 있습니다~~ 앞으로도 좋은 글 많이 올려주세요~
답글삭제afeleia님 안녕하세요.
답글삭제말씀하신 점점 커지는 요구사항은 소프트웨어 개발 현장에서 가장 자주 발생하면서 가장 큰 문제이기도 합니다. 물론 이를 최소화하기 위한 여러 방법들이 있습니다. 완벽하게 추가 요구사항을 없앨 수는 없어도 줄일 수 있을 때까지는 줄여야죠. 추후 요구사항 분석 관련된 포스팅에서 이에 관련된 얘기도 좀 적어보도록 하겠습니다.
추가되는 요구사항은 미치고 환장할 노릇이지요. ㅋ
답글삭제녹풍님 안녕하세요.
답글삭제그래서 스펙을 쓰는 것이 중요합니다. 관리가 필요한 것이고 변경을 최소화하기 위한 노력을 꾸준히 합니다.