산출물의 종류가 어느 정도 확정된 상태에서 프로젝트를 진행하는 경우에 산출물을 어떻게 관리하는가에 대한 문제입니다. 예를 들어 Trac으로 관리는 프로젝트가 진행중인데 갑에서 새로운 요구사항이 발생하였습니다. Trac을 통하여 등록하였고, 개발자에게 MyLyn을 통하여 할당하고, 완료되었을 경우 산출물은 어떻게 관리되어야 하는가에 대한 문제입니다. 일반적(기존과 같이)으로 요구사항 정의서에 추가하고, 객체모형기술서 등에 추가되는 클래스나 메소드를 기술하고, 데이터 모형 기술서에 데이터를 정의하고, MS 프로젝트의 WBS에 관련된 사항을 추가하고, 개발자에게 할당하게 됩니다. 그리고 진도를 체크하죠. 산출물도 작업의 순서대로 자연스럽게 작성되어 나옵니다.
여기서 Trac이란 넘이 끼는 순간 어떻게 작업의 흐름이 진행되어야 하는가에 대한 궁금증이 있었습니다. 마침 영회님의 강의를 들으면서 이에 관한 질문을 드린 것입니다. 사실 정답이 있다기 보다는 Trac이란 넘이 이러한 상황에 얼마나 적합하게 사용할 수 있을까에 대한 문제인 것 같습니다. 그래서 영회님의 사례를 듣고 싶었던 것입니다.
Trac이 모든 산출물을 만들어 낼 수 있다는 상상이 아닌, Trac과 함께 어떻게 공존하여 효과적으로 프로젝트를 완료할 수 있을까에 대한 노하우가 필요한 듯합니다. 이런 노하우나 좋은 사례(Best Practice)없이 명백한 산출물과 과정을 원하는 프로젝트에 Trac을 알아서 적용하라는 것은 사실 무리가 아닐까 싶습니다. 저도 경험상 새로운 방식을 도입하기보다 기존의 방식을 개선하여 적용하는 것이 더욱 좋은 결과를 만들어 냈기 때문입니다. 물론 각 프로젝트가 갑과 어느정도 산출물에 대한 타협을 합니다. Trac이 들어간다고 별로 달라질 것은 없겠지만, 여기서 PM은 Trac을 어떻게 사용하여 PL들에게 갑의 요구사항을 전달하고, 어떻게 산출물로 정리를 할 것인가에 대한 좋은 사례가 필요한 듯 합니다.
여기서 Trac이란 넘이 끼는 순간 어떻게 작업의 흐름이 진행되어야 하는가에 대한 궁금증이 있었습니다. 마침 영회님의 강의를 들으면서 이에 관한 질문을 드린 것입니다. 사실 정답이 있다기 보다는 Trac이란 넘이 이러한 상황에 얼마나 적합하게 사용할 수 있을까에 대한 문제인 것 같습니다. 그래서 영회님의 사례를 듣고 싶었던 것입니다.
Trac이 모든 산출물을 만들어 낼 수 있다는 상상이 아닌, Trac과 함께 어떻게 공존하여 효과적으로 프로젝트를 완료할 수 있을까에 대한 노하우가 필요한 듯합니다. 이런 노하우나 좋은 사례(Best Practice)없이 명백한 산출물과 과정을 원하는 프로젝트에 Trac을 알아서 적용하라는 것은 사실 무리가 아닐까 싶습니다. 저도 경험상 새로운 방식을 도입하기보다 기존의 방식을 개선하여 적용하는 것이 더욱 좋은 결과를 만들어 냈기 때문입니다. 물론 각 프로젝트가 갑과 어느정도 산출물에 대한 타협을 합니다. Trac이 들어간다고 별로 달라질 것은 없겠지만, 여기서 PM은 Trac을 어떻게 사용하여 PL들에게 갑의 요구사항을 전달하고, 어떻게 산출물로 정리를 할 것인가에 대한 좋은 사례가 필요한 듯 합니다.
질문에서 산출물과 Trac의 상충 관계를 의미하는 듯한 뉘앙스가 있어 오해했다. 다시 받은 질문인데, 산출물이라고 표현하셨으나 요체는 산출물을 활용하는 절차 즉, 프로젝트에서 이미 익숙한 개발 프로세스 하에서 Trac을 활용하는 방안을 묻는 듯하다. Trac를 처음 활용할 때 빠지기 쉬운 함정은 모든 작업을 넣어서 관리하려는 시도이다. 만일 시스템/솔루션 유지보수 조직이라면 Trac 활용이 원활할 수 있다. 그러나 개발 프로젝트에서는 대개 WBS나 PMS의 일정을 기준으로 진척을 확인한다. WBS의 하위 항목을 Trac에 넣으면 유용할까? 내가 Trac으로 작업관리를 해본 결과 Trac의 작업이 1일 이내의 작은 단위일 때 팀에 유연성을 제공했다. 과거에 우리 팀은 1, 2개월 간격으로 배포(release)를 했으나 지금은 매주 배포를 한다. 따라서, 매주 월요일에 고객이 기대할 기능이 빠져 실망하지 않게 하려고 목요일 이후쯤 조정을 해야 한다. 작은 단위의 일은 남은 이틀 안에서 조정할 수 있지만, 이틀을 넘어서는 일은 조정 자체가 힘들다. 테스트 주도 개발에서 켄트 벡이 보여준 것처럼 자신/팀의 리듬을 모르면 일단 작게 쪼개서 해라.
WBS와 Trac의 항목 일치는 힘들다는 사실을 알았다. 그렇다면, 서로 용도를 구분해서 사용해야 할까? 구분하는 방법과 연결 관계를 짓는 방법 모두가 있다. JCO 발표에서도 언급했지만 처음 Trac을 적용하는 경우라면 최대한 용도를 좁혀서 쓰는 방법을 권하고 싶다.
우리 팀은 처음에는 공식적인 작업은 백로그라는 엑셀 파일을 만들어 관리했다. Trac은 사전에 계획한 작업 이외에 반드시 추적할 필요는 없는 작업에 실험적으로 썼다. 대개는 코드 검사(Code Inspection) 이후에 테스트 누락이나 주석, 리팩토링 지시 등에 썼다. 용도에 대해 이름을 짓자면 개발팀 내 품질보증 활동을 위한 의사소통 도구 정도라고 할 수 있을까? 두 번째 쓰임새는 검수 과정에서 고객과의 의사소통 촉진용이다. 이미 개발자 테스트도 어느 정도 수행했고, 데모를 통해 정상 작동을 확인한 이후인지라 소소한 문제에 대한 보고이기 때문에 구체적인 설명이 필요했고, 경우에 따라서는 화면 캡처가 유용했다. 따라서, 시간을 정해서 회의하는 방식보다는 Trac에 관련 내용을 보고하고, 관계자가 해당 내용을 확인해서 바로 조치하는 방식은 시간을 절대적으로 절약해주었다.
후자는 고객의 적극적인 참여가 필수 전제 조건이다. 하지만, 웹이나 이클립스 화면(Mylyn 활용)을 써서 요구사항을 기록할 만큼 적극적인 고객을 만나기는 쉽지 않다. 적극성을 발휘하게 하려면 고객이 진심으로 관심을 가질만한 결과를 내놓아야 한다. 대개 요구 사항이나 화면 설계 등은 진정한 관심을 끌지 못한다. 요구 사항 검증이나 화면 설계서/정의서 검증에 고객을 참여시키려고 하면, 고객이 얼마나 관심이 없는지(?)는 확인할 수 있다. 하지만, 이는 고객의 문제로 보긴 어렵다. 동작하는 시스템을 써서 본인의 업무가 어떻게 바뀌고, 프로그램이 사용하는데 얼마나 편리한지/불편한지 느낄 때만 비로소 관심이 생긴다. 반복하지 않는 경우 프로젝트 막판에 가서야 구체적인 요구 사항을 들을 수 있다. 결국, 조기에 배포할수록 개발팀이 구체적인 피드백을 받는데 유리하단 이야기다. 조기 배포를 하려면 모든 기능을 한 번에 다룰 수는 없다. 애자일과 Trac의 시너지는 바로 이 부분에서 포착할 수 있다.
세 번째 활용 방식은 다른 질문 사항에 대한 답변이기도 해서 별도의 글로 나누어서 쓰겠다.

이올린에 북마크하기
이올린에 추천하기

