2009/09/10 - The Mythical Man-Month Chapter 1


Chapter 2 The Mythical Man-Month

  소프트웨어 프로젝트의 대부분은 다른 문제보다도 납기를 지키지 못하는 문제를 가장 많이 가지게 된다. 왜 이런 문제가 보편적으로 발생할까?
  1. 프로젝트 수행 기간을 예상하는 기술이 부족하기 때문이다.
  2. 시간과 노력을 투자하면 무조건 성과가 나타나리라 착각하고 있다.
  3. 프로젝트 관리자는 인내심이 없어진다.
  4. 프로젝트 진행 상황이 잘 감시되지 않는 경우가 많다.
  5. 시간에 쫓기면 인력 추가를 가장 손쉬운 해결책으로 사용한다.

 특히 5번의 문제는 불에 기름을 뿌리는 것과 같은 부작용을 가져오게 하여 문제를 더 크게 한다. 프로젝트 진행상황에 대한 감시 및 관찰은 다른 에세이에서 다루기로 하고, 일단 인력추가가 왜 일을 빨리 진행시키기 위한 좋은 방법이 아닌지 알아보자.

  모든 소프트웨어 개발자는 낙천주의자다. 항상 프로젝트는 잘 짜여진 계획대로 진행될 것이라고 생각하고, 디버깅 하여 잡은 버그가 최후의 버그라고 생각한다. 이런 낙관주의적 태도가 프로젝트 진행에 미치는 영향을 분석해볼 필요가 있다.

  소프트웨어 개발 이외의 창작 활동은 물리적인 매체를 사용한다. 그런 창작 활동은 때로는 물리적인 매체의 성질을 잘 이해하지 못함으로써 문제가 생긴다. 하지만 소프트웨어 개발은 물리적인 매체에 대한 이해가 필요 없이 우리의 생각을 바로 프로그램으로 만들 수 있기 때문에 우리는 때로는 그 작업을 너무 쉽게 생각하는 경향이 있다. 이것이 소프트웨어 개발에 대한 낙천적인 생각의 근원이다. 우리는 결점이 없는 사고를 하기 힘들다. 하지만 소프트웨어 개발은 많은 세분화된 작업과 그것들의 단계로 이루어지는데, 우리는 우리가 완벽하지 않음을 잊어버리고 그 점을 간과하기 때문에 프로젝트는 일정은 지체된다.

  우리가 소프트웨어를 아무 문제 없이 개발 할 수 있다는 생각 자체가 프로젝트 수행 기간을 잘못 예상하는 가장 큰 문제이다. 소프트웨어 개발 작업은 세분화 될 수 있기 때문에 일반적으로 사람을 프로젝트에 많이 투입함으로써 그 기간은 단축되리라고 생각한다. 하지만 개개인이 맡은 일에 들어가는 노력과 프로젝트의 진행이 비례하지만은 않는다는 사실을 우리는 기억해야 한다. 소프트웨어 개발 작업이 세분화 되어 세분화된 작업을 투입된 사람들이 각각 자기가 맡은 일을 하게 되면, 모든 작업이 유기적으로 이루어져야 한다. 그래서 사람들은 서로 communiate해야 할 필요가 있는데, 사람이 많으면 많아질 수록 communication이 이루어지는데 부하가 걸리게 된다. 따라서 투입된 사람의 수에 따라 프로젝트가 단축될 수 있는 시간에는 한계가 있다. 사람 수가 어느 한계점을 넘어서게 되면 communication 때문에 걸리는 부하가 장애로 작용하기도 한다. 

 바람직한 개발 계획 일정은 다음과 같이 각각의 단계에 시간을 다음과 같은 비율로 할애하여 계획하는 것이 바람직하다.

  1. 1/3은 계획하기
  2. 1/6은 구현하기
  3. 1/4은 컴포넌트 테스팅과 초기 시스템 테스팅
  4. 1/4은 전반적인 시스템 테스팅
  이런 방식으로 프로젝트 일정을 계획하는 것은 기존의 방법과 다음과 같은 면에서 다르다고 할 수 있다.
  1. 일반적인 경우보다 계획 단계에 많은 시간이 할애 된다. 그럼에도 불구하고, 구체적인 사양서 및 섬세한 기술 검토를 위한 시간은 부족하다.
  2. 테스팅과 디버깅에 할애된 기간은 전체의 반을 차지한다.
  3. 구현이 가장 작은 비율을 차지한다.
  거의 극소수의 프로젝트들만이 테스팅에 전체 개발 기간의 반을 할애한다. 하지만 결과적으로는 대부분의 프로젝트는 원래의 전체 개발 기간의 반이라는 시간이 걸리게 된다. 테스팅 및 디버깅에 너무 짧은 시간을 할애 하게 되면, 대부분의 일정 지연이나 문제점들은 프로젝트 막바지에 나타나기 때문에 치명적일 수 밖에 없다.

  간혹 개발 일정이 지연되면, 인력을 더 추가하는 경우가 다반사인데, 새로 투입된 인력의 훈련과 교육, 그리고 추가된 인원 사이에서 이루어져야 하는 communication의 부하 때문에 일정은 단축되기 보다는 점점 지연되는 불상사가 발생한다. 이것이 수많은 프로젝트들이 개발 일정에 뒤쳐지는 가장 큰 이유이다. 지연된 프로젝트에 추가적인 인원을 투입하는 것은 그 프로젝트를 더 지연시키는 결과를 낳게 된다.


  두번째 단원 요약입니다. 실제로 책을 읽어보면 소단원이 여러개로 나뉘어 있는데, 읽다보면 공감이 가는 부분이 많음에도 불구하고, 각 소단원의 연관성은 잘 못찾겠네요 ㅡ.ㅡ;
그래서 대충 소단원별로 순차적으로 요약했습니다. 제가 요약한 것을 읽어보셔도 내용전개가 약간 부자연스러울지도 모르겠습니다.

 책의 내용중에 빼먹은 사소한 것들도 있고. 책에는 일정 지연과 인력 투입에 대해서 좀더 자세하게 다루고 있으니 관심있으신 분은 꼭 책을 읽어보시기 바랍니다. ^^

Posted by Dansoonie