Microsoft에서 주최하는 SQL Server 관련 세미나에 참석하면 가끔 공짜로 받을 수 있는 잡지, Windows & .NET MAGAGINE 2004년 7월호에 실린 컬럼이다.
소프트웨어 개발 프로젝트에도 파레토 법칙이 적용된다는 그의 주장에 귀 귀울여보자.
소프트웨어를 개발하는 작업은 복잡한 업무이다. 프로젝트의 규모가 커지고 복잡해짐에 따라 프로젝트를 정확한 시점에 완료하는 것은 점점 더 어려워 진다. 대규모 프로젝트의 경우에는 반복적인 지연이 일반화되어 있다. 하지만 다음에서 소개한 80/20의 법칙을 준수하게 되면 애플리케이션 개발 프로젝트에서 더 이상 지연이 필수인 것처럼 여겨지는 관행을 불식시킬 수 있다.
이탈리아의 경제학자인 Vilfredo Pareto는 1900년대 초에 국민의20퍼센트가 전체 국가의 부의 80 퍼센트를 점유한다는 수익 분배에 대한 80/20의 법칙을 고안해냈다. 이 80/20의 법칙은 놀랍게도 많은 환경과 상황에도 그대로 적용되고 있으며, 소프트웨어 개발 부분에서도 적용된다. 소프트웨어 측면에서는 20 퍼센트의 작업을 통해 전체 프로젝트의 80퍼센트 수준까지 작업을 진행할 수 있으나 나머지 20 퍼센트를 위해 전체 프로젝트 기간의 80 퍼센트가 투입된다.
프로젝트의 초기 진척도에 근거하여 매우 낙관적으로 프로젝트 종료시점을 설정하게 되면 실패할 가능성이 높다. 대부분의 프로젝트가 초기에는 매우 빠르게 잘 진행되기 마련이다. 프로젝트 개발작업의 주요부분을 수행하는 과정에서도 매우 쉽게 작업이 진척될 가능성도 있다. 하지만 프로젝트의 초기에 빠른 진행은 IT 분야에서 피해야만 하는 과도한 요구사항에 대한 수용약속과 성급한 납품을 야기시킬 원인이 될 수 있다는 것에 유념해야 한다. 비록 프로젝트가 초기에는 빠르게 진척된 경우라 할지라도 프로젝트의 가장 큰 문제가 잠재되어 있을 수도 있고 최종 산출물에 대한 오류와 개발관련 문제로 인해 많은 프로젝트가 난항에 빠질 수 있는 가능성은 얼마든지 발생할 수 있다. 예상보다 빠른 업무의 진행속도가 갑자기 둔화되면 낙관적으로 설정된 프로젝트의 종료시점은 달성되기 어려워지는 문제가 발생하게 된다. IT 분야에서 호언장담한 프로젝트 종료시점을 지키지 못하게 되면 IT 담당 부서와 상위 관리부서간에는 균열이 발생하게 된다.
반면에 요구사항을 축소하고 기대했던 것보다 납기가 좀 지연될 것이라고 생각하는 것은 아주 바람직하다. 매우 방대한 프로젝트 과업에 대해서 납기를 지연시킨 다음에 왜 기한내에 정확히 완료하지 못했는가를 일일이 해명하는 것보다는 사전에 충분하게 프로젝트의 납기가 지연될 수 있다는 것에 대해서 현업과 지속적으로 협의하는 것이 오히려 바람직하다고 할 수 있다. 80/20법칙을 적용하면 프로젝트의 마지막 20 퍼센트의 부분에 대해서 앞부분에 진행된 80퍼센트의 프로젝트의 과업에 투자된 시간의 네 배가 소요된다고 예측하는 것이 안전하다. 요구사항을 수집하고, 데이터베이스를 설계하고, UI를 설계하는 것과 같은 개발절차의 처음 부분은 상대적으로 쉽게 그 성과를 나타낼 수 있다. 또한 비주얼 스튜디오와 같은 현대화된 개발도구를 사용하게 되면 이 단계의 작업은 더욱 쉽게 진행할 수 있다. 하지만 애플리케이션이 실제 환경에서 운영할 준비가 완료된 상태에서 기존에 잠재되어 있던 기초적인 부분에 문제가 발생하는 상황이 개발 프로젝트의 성공여부를 판가름하는 가장 중요한 관건이 될 수 있다. 실제 운영환경에 적용할 애플리케이션 코드의 품질수준은 기술서적, 잡지, 마이크로소프트 웹 문서에서 소개하고 있는 에러처리 절차나 방어적인 코딩 기술과는 차이가 발생할 수 있다. 에러 처리코드가 제대로 되어 있지 않을 수도 있고, 혹시 누락된 부분이 있을 수 있으며 그 원인을 규명하기 어려운 경우도 발생할 수 있다. 이러한 문제는 애플리케이션과 상관이 있기 마련이다. 애플리케이션에 적절한 에러처리와 방어적인 코딩 기술을 충분하게 반영하였다면, 최종 사용자의 오류나 예상하지 못한 데이터 조건으로 인해 발생하는 예측하지 못할 상황에서도 어느 정도 수준의 품질을 보장할 수 있게 된다.
테스트와 배포와 같은 개발 업무와 종합해서 볼 때, 왜 프로젝트의 마지막 부분 20 퍼센트가 그렇게 많은 시간투자를 필요로 하는지 알 수 있다. 프로젝트의 마지막 20 퍼센트에 문제상황을 해결할 만한 적합한 기간을 확보하지 못하게 되면 소프트웨어 품질 저하의 가장 큰 원인이 될 수 있다. 하지만 이러한 문제상황에 대한 해결책은 이미 우리의 손에 놓여져 있다. 프로젝트의 전체 기간을 산정할 때 마지막 20퍼센트의 업무에 적절한 기간을 배정하게 되면 문제상황이 발생하지 않게 할 수 있다. 마지막 20 퍼센트를 위해 시간을 충분히 확보하게 되면 좀 더 높은 수준의 품질을 보장하는 코드를 작성할 수 있고 사용자에게 좀 더 풍부한 적응기간을 줄 수 있으며 요구사항을 충분하게 지원할 수 있게 된다.