ALM/Task Management

개발자가 하루에 코딩하는 시간은? (Coding 시간 Estimation 공식)

Terry Cho 2010. 10. 1. 01:09
어제 교육을 받으면서 애자일 기반의 방법론에서 개발 기간을 Estimation하는 기법을 배웠는데, 흥미로운 내용이 있어서 포스팅한다.

스크럼과 같은 Iterative 기반의 개발방법론을 사용할때, 각 Iteration이 약 4~6주라고 가정하자
이 경우에는

Interation의 10%는 Planning에 소요되고
25%는 Stabilization (Integration과 Bug 수정)
나머지 65%가 개발에 소요된다.

이 65%기간 동안 매일 25% 정도는 다른 잡무 (회의,코드리뷰등)에 소요되고 남는 시간인 75%만 개발 관련 작업에 사용되는데, 그중에서도 10%는 코딩전의 디자인에 소요된다.
그림으로 도식화 해보면 다음과 같다.

 
  • Design 시간 = Coding 시간 * 0.1
  • 실제 소요시간 (Clock Time) = (Coding 시간 + Design 시간) / 0.75 (Productivity Factor - 하루에 실제 개발에 소요하는 비중을 수치화 한것)
  • Productivity Factor = 코드리뷰,회의,커뮤니케이션 시간 등을 고려한 가중치.
  • Coding 시간 = Coding + Unit Test + XMLDoc Comment(주석)
     
예전 데이타를 기준으로 대충 검산해봤는데, 어느정도 맞는것 같다. 결국 오차 범위는 Productivity Factor (하루에 코딩에 집중하는 시간/전체 시간 또는 (전체시간 - 회의,ADMIN,지원 업무등)/전체시간)을 잘 뽑아내느냐가 관건인거 같고, Planning Time이 4주 기반이라면, 4주 * 5일 = 약 20일의 10%면 2일로 어느정도 타당하다.