월요일, 8월 06, 2007

[4부 2번 수필] 소프트웨어 생산성을 바라보는 새로운 방법

소프트웨어 생산성을 높이기 위해 여러 가지 이론과 기법과 제품이 등장했다. 물론 이런 여러 가지 방법을 동원해서 생산성을 수십, 수백 배로 높인 경우도 있을지 모르겠지만(혹시 이런 환상적인 경우를 아는 사람이 있다면, 알려주기 바란다), 대부분 몇 % 상승에 그치고 만다. 베리 뵘이 말하듯이 생산성에 관한 한 방법론, 언어, 기타 기술적인 방법은 사소한 향상밖에 가져오지 못한다.

자 그렇다면, 생산성 향상을 위해 무엇을 해야 하나? 로버트 L. 글래스 큰 형님은 _사람_에 주목한다. 소프트웨어 제작 인력이 우수하면 생산성이 높아진다는 말이다. 결국 소프트웨어 분야에서 기술 사회학에 주목해야 생산성 향상을 달성한다. 그렇다면 우수한/숙련된/전문 인력과 덜 우수한/미숙한/초보 인력의 차이점은 무엇인가? 사람과 관련하여 어떤 요소가 생산성에 강력한 영향을 미쳤는지 정리한 내용을 여기에 요약해보겠다.

  1. 목표와 하위 목표를 더 많이 설정했고, 목표로부터 하향식으로 일했다.
  2. 과거에 풀었던 문제와 유사성을 밝혔고, 밝혀낸 유사성을 기반으로 모델을 만들었다.
  3. 더욱 체계적이었다. 더 많은 전략을 말로 표현했으며, 가정과 제약과 기대치를 기록했다. 최종 제품을 더 구체적으로 묘사했다(즉, 시스템 분석가는 요구사항을 더 많이 작성했다)
  4. 더 많은 가설을 세우고, 시도하고, 포기했다. 더 많은 전략을 수정했다.
  5. 여러 방면에서 좀더 사람을 고려하는 성향을 보였다. 시스템 분석가는 사용자 관계를 더욱 효율적으로 관리했다. 유지보수 담당자는 원래 코드를 짠 개발자의 구현 방식과 성격을 분석하며 사람과 코드를 연관지었다.

요즘 나오는 여러 가지 소프트웨어 공학 책을 읽다보면 위에서 제시한 각종 요소를 알기 쉽게 풀어서 설명하는 내용을 접하곤 한다. 구체적이고, 반복적이고, 체계적인 접근 방법을 고려하면 소프트웨어 생산성을 높일 수 있으리라는 희망이 보인다. :)

'소프트웨어 컨플릭트 2.0: 시대를 뛰어넘는 즐거운 논쟁' 역자 박재호 올림

라벨: , , ,