하지 말아야 되나? – 솔루션 개발에서 우선순위 상위에 부가기능이 섞이면 안된다.

이건 좀 제목이 어려우려나…. 어려운 이야기는 아니다.

패키지 솔루션을 개발할 때, 사실 컨설팅 경험이 있던 없던 간에 개발 단계에서 중요한 녀석이 있다면 바로 개발의 우선순위를 두는 것이다. 사실 기능은 이런 저런 기능들 다 요구된다. 그리고 그 중에서 우선순위를 정해서 해야 할 텐데, 부가 기능(없어도 되는 기능이지만 요구사항에 의해서 새롭게 혹은 확장되어 만들어진 기능들. 사원의 출결 관리 기능이 개발의 주 기능인데 여기에 더해서 사원의 출결 이외에 교육 수료내용을 관리하거나 한다면 그런 것들은 부가 기능이 될 것이다.) 보다는 주 기능(솔루션의 본래 역할을 하는 기능. 사원의 출결 관리라면 사원 정보와 사원의 출근과 퇴근 정보에 대해서 기록하고 관리하는 기능이 될 것이다.)의 개발하는 데 프로젝트의 리소스를 우선적으로 두고 시작해야 한다. 즉 해당하는 솔루션 패키지의 마스터 데이터나 인증 방법, 각종 파라미터, 설정 내용, 메인 모듈 설계에 대한 안정화가 가장 기본이 되어야 한다. 그리고 이 기능이 프로토타입으로 만들어져야 한다. 그 다음에 부가적인 기능들을 하나 둘 만들어 나가는 것이 중요하다.

이렇게 적으니 뭔가 되게 당연해 보인다. 당연한 이야기를 왜 굳이 이렇게까지 적어야 하냐고 물을 수 있을 것이다.

왜냐면 메인이 되는 모듈들이 개발이 완료되어 안정화까지 된 후에, 부가 기능을 개발하다 보면 어딘가에서 메인 모듈 자체에서도 모순점이 발견되어 메인 모듈이 수정되고 할 수 있다. 실제로 테스트 단계에서 트랜잭션이 원활하게 동작하지 않거나 추가 처리에 대해서 연산 결과에 이상한 현상이 일어나는 경우가 생겨서 메인 모듈부분까지 다 검토해야 하는 상황이 일어나기도 한다. 이러한 이유는 본래 기능과 부가 기능 중 어딘가에서 문제를 일으키고 있는 것이라는 내용이지만 사실 어디서 문제가 일어나는지 판단하기 어려운 문제이다. 그냥 각각을 개발하면서 각각에 대한 테스트 케이스는 다 만들어겠지만 실제로 이 모듈들을 붙여보니 문제가 터지고 하는 건 여러모로 발생할 수 있다. 이에 따른 테스트 프로젝트 또 만들어서 해보고 해보고 하다보면 어떻게든 알아내겠지만… 일단 여러모로 쉬운 일은 아니다. 예상 이상의 시간을 잡아먹는 일이 발생한 것이므로….

게다가 이게 개발하는 패키지 솔루션이 규모가 크게 되면 하루라도 빨리 개발해야 하므로 일정 단축을 위해서 부가 기능을 같이 개발하고 그럴 수 있다. 이건 개발자 뿐 아니라 매니저들까지도 프로젝트 초기 단계에서 아예 부가 기능을 포함하여 일정을 막 짜고 그렇게 될 수 있다. 일정이라는 이유만으로….

생각만 해도 체한다….

이러다가 뭐 하나 꼬여서 맞냐 아니냐를 따지게 되면…. 그 뒤에 생길 지옥은 생각도 하기 싫다…

그러나 일단 프로젝트 도입쪽에 대해서는 메인 모듈을 만들어서 어느 정도 안정화를 시키는 것에 중점을 두면 부가 기능에 대해서는 프로젝트 관리에 따라 다르겠지만 일단 프로젝트 전체에 대한 실패를 하진 않게 된다.

가장 기본적이고도 당연한 내용이지만, 사실 의외로 맞추기 힘든 일이기도 하다. 특히 자기 솔루션을 개발하면서도 머리가 여럿이 되거나 하면 아주 쉽게 발생할 수 있다…ㅠㅠ