2004년 10월 23일 토요일

소프트웨어 개발 - 열심히 일하기

과연 모든 인력을 쉬지 않고 일하게 하면 그것이 프로젝트 관리를 잘한 것이고,
프로젝트를 가장 빨리 끝내는 길 일까?


그럼 여기 한 예를 보자,
만약 우리가 해내야할 일 A, B, C가 있다고 하자.
그리고 프로그래머가 3명이 있다.
3명이 각자 A, B, C를 시작하면 될까?


만약 A, B, C에 공통되는 기반기술 x가 존재 한다고 하자.
(x, a, b, c는 단위 작업이므로 더 작게 쪼갤 수 없다.)
A = x + a
B = x + b
C = x + c


x는 모든 일에서 공통적인 부분이고 유연하게 작성하면 A,B,C 모두에서 활용가능 하다고 하자.


각 프로그래머의 역량을 갑(6), 을(3), 병(2) 이라고 하고
작업량은 다음과 같다.
A(36) = x(12) + a(24)
B(36) = x(12) + b(24)
C(36) = x(12) + c(24)


각자 동시에 개발을 시작하여 x를 따로 중복되게 3개를 만든다고 하면 소요되는 시간은 다음과 같다.
(A,갑) = 36 / 6 = 6시간
(B,을) = 36 / 3 = 12시간
(C,병) = 36 / 2 = 18시간
결국 product는 가장 늦은 사람이 일을 끝내는 시점까지 지속된다. = 18시간


만약 A에게 x를 맡기고 나머지 사람들은 그냥 논다면 어떻게 될까?
(A, 갑) = 12 / 6 + 24 / 6 = 2 + 4 = 6시간
(B, 을) = 2시간 기다림 + 24 / 3 = 2 + 8 = 10시간
(C, 병) = 2시간 기다림 + 24 / 2 = 2 + 12 = 14시간
프로젝트는 놀랍게도 14시간 만에 끝난다.


B, C가 4시간이나 놀았음에도 프로젝트는 4시간 일찍 끝나버렸다.
공통 모듈의 양이 많을 수록 단축되는 시간은 커진다.


거기에 유지보수를 생각해보자.
x를 따로 만들었다면 x부분이 영향을 받는 요구사항이 변경될 때마다 3배의 노력을 들여 수정을 해야 한다.
코드의 양도 증가했고 디버깅도 각자 해야 한다.


--------------------------------------------------------------------
흠.. 공통 library가 부족하다보니
같은 일을 하는 코드가 3~10개까지 존재하고 있다.
매우 가슴 아픈 일이다. -0-

댓글 없음:

댓글 쓰기