소프트웨어를 개발하는 데는 3개의 역할이 필요합니다. 개발자, 기획자, 테스터가 그들입니다. 회사 특성에 따라 몇몇 직업군이 더 붙기도 하지만 기본은 이 세 개라고 봅니다.
개발의 시작은 기획자로부터 이뤄집니다. PM이라고 불리기도 하는데 아마 Program Manager의 줄임말일 겁니다. 이들은 소프트웨어의 기능들을 정의하고 그렇게 상세하진 않더라도 대략적인 기술적 요구사항들도 명시합니다. 산출물은 Spec document 가 되겠습니다.
그다음은 개발자(Developer) 가 앞서 기획자의 스펙문서를 바탕으로 실제 구현에 들어갑니다. 개발자의 최종 산출물은 코드이며 그 외의 코드를 쓰는 데 필요한 약간의 문서 작업도 있습니다. 소프트웨어 구현에 필요한 기술들을 숙지하고 있어야 하며, 끊임없는 버그와 싸워야 합니다.
마지막으로 검사자(Tester)가 구현된 소프트웨어를 확인합니다. 이들은 다양한 방법으로 소프트웨어의 기능을 테스트합니다. 테스트는 대부분 Automation 프로그램을 통해 자동화되어 이뤄집니다. 그래서 검사자도 코드를 만들 수 있어야 하며 소프트웨어에 잘 알고 있어야 할 뿐 아니라 제품 자체도 잘 파악하고 있어야 합니다.
[caption id="" align="aligncenter" width="500" caption="개발의 삼권분립(?)"][/caption]이 세 개의 관계가 서로 물고 물립니다. 마치 가위 바위 보 처럼요. 그런 묘한 균형이 이뤄져야 소프트웨어 개발에 속도가 붙습니다. 다만, 가끔 이 균형이 깨어지기도 하는데요. 예로 '정치'가 끼어들어 프로세스의 진행속도를 강제로 조절하려고 하는 경우를 들 수 있겠습니다. 이럴 때는 매니저가 적절히 조절을 해줘야 하지만 세상이 그런 똑똑한 매니저들로만 가득할 리가 없을 테니, 이런 잡음을 최소화 하는 방법을 개발프로세스 내에 도입해야 합니다.
이 세 가지 역할 중 다른 두 개에 비해 그 중요성이 많이 간과되고 있는 것이 검사자 입니다. 제품의 품질을 결정짓는 중요한 역할임에도 제대로 대접받지 못하고 있지요. 어떤 회사는 축구의 토탈사커 처럼 개발자들이 개발을 끝내고 모두 테스트 작업에 올인하는 경우도 있는데, 중이 제 머리 못 깎듯 개발자들은 자신의 프로그램을 제대로 테스트해 낼 수 없습니다. 자기가 아는 한도내에서만 행동을 취하기 때문이죠. 그래서 프로그램 내부를 모르는 블랙박스 테스트를 수행할 사람들이 필요한 겁니다. 여기서 프로그램 내부를 모른 다는 것이 프로그래밍을 모르는 사람이란 뜻은 아닙니다. 검사자는 프로그래밍에도 능숙하고 소프트웨어의 특성도 잘 이해하고 있어야 되거든요.
이 세가지 역할들이 톱니바퀴처럼 잘 끼워져 맞물려야 프로젝트가 순풍에 돛 단 듯이 진행될 수 있겠지요.