화요일, 11월 06, 2007

[6부 3번 수필] 소프트웨어 실패: 왜 실패할까?

이번에 '초난감 기업의 조건'을 번역하면서 느낀 바지만, 소프트웨어 쪽 실패를 탐구해서 교훈을 찾으려는 시도는 무척 중요하다. 실수하지 않고서는 성장할 수 없듯이, 소프트웨어 분야에서도 실패를 하지 않고서는 제대로 커나가지 못하지만 요즘 세상에서 실패는 댓가가 너무나 혹독하기 때문이다.

로버트 L. 글래스 큰 형님은 소프트웨어가 실패하는 원인을 크게 다음과 같은 세 가지로 나눈다.

  • 예측에 대한 무능: 걸음마 단계에 불과한 소프트웨어 분야를 아직 제대로 이해하지 못하기 때문에 생기는 현상으로, 어디에 얼마를 투입하고 어느 정도 기간이 걸리는지 소프트웨어 프로세스를 파악해야 해결이 가능하다. 예측을 '관리'하려는 노력 자체도 무척 가상한데, 서서히 '예산을 초과하고 일정보다 늦어진 프로젝트'는 버그 제거에 반드시 필요한 테스트 프로세스를 건너 뛰면서 '예산을 초과하고 일정보다 늦어진데다 불안정하기까지 한 프로젝트'로 변한다. 요구 사항 수집 단계 직전이나 도중에 예측을 한 다음에 이를 100% 고수하는 행위는 문제를 제대로 파악하지 못한 상황에서 어림짐작으로 값을 뽑아내어 여기에 목을 매달기 때문에 상황을 더욱 악화시킨다.
  • 불안정한 요구 사항: 좋은 사람이 되려다보니 고객이나 사용자가 원하는 변경 사항을 거절하지 못하고 받아들인 결과 설계 프로세스를 빗나가게 만들고 일정을 엉망 진창으로 만들어버린다. 문제 본질이 계속 바뀌는 상황에서 문제를 해결할 수 없는 사람은 없지만, 우리들은 소프트웨어가 부드럽다는 사실을 증명하기 위해 오늘도 부나비가 되어 불에 뛰어든다. 로버트 L. 글래스 큰형님은 이런 현실을 한탄하는 대신에 결국 소프트웨어 유지 보수 기간동안에 벌인 변경 작업을 통해 최고의 돈벌이를 해야 한다고 주장한다.
  • 일시적 유행과 오해: 은총알 논문이 나온 이후에도 여전히 소프트웨어 위기를 극복할 획기적인 기술이 있다고 떠들어대는 사람이 있기 마련이다. 로버트 L. 글래스 큰형님 이야기에 따르면 전산 분야처럼 급변하는 환경에서 현실을 말하는 사람보다 비현실적이더라도 최신 기술을 떠벌이고 다니는 사람에게 좀더 큰 보상이 돌아가는 듯이 보이기 때문에 이런 사이비 약장수들이 설칠 수 있다고 한다. '일시적 유행과 오해'를 부추기는 사람들은 연구원들, 장사꾼들, 유행에 목매는 관리자들이 있으며, 새로운 기술에 흥미를 보인다는 사실을 제외하고 공통점은 없다.

그리고 다음과 같은 해법을 제시한다.

  • 향후 예측을 개선할 자료 수집
  • 예측 프로세서를 분석해서 점진적인 예측이 다른 분야에서 사용하는 접근 방식과 유사하게 현실을 더욱 제대로 반영하는지 확인
  • 고객은 자신이 바라는 요구 사항 변화에 현실적인 비용을 지불한다
  • 연구자들과 장사꾼들이 내건 약속을 믿다가 뜨거운 맛을 보았던 관리자에게 더 나은 지혜가 있다고 설득
  • 실무자들이 유행과 오해를 무작정 쫓아서 협곡으로 빠지기 전에 이를 실험적으로 검증할 국립 소프트웨어 실험 연구소 설립

역시 최종적인 결론은 '은총알은 없다'로 판명이 난다. 가장 심각한 문제가 무엇인지 알기만 해도 이런 함정에 빠지지 않을텐데...

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

라벨: ,