지라 에픽 사용정책
새 마일스톤을 시작하면서 전투 기획서를 묶어둘 용도로 만든 것 같은 ‘전투 기획서 작성’이라는 에픽이 생성되어 있는 것을 봤습니다. 이 에픽을 보고 좀 불편한 기분이 들었는데 왜 그런 기분이 들었는지 생각해 보기로 했습니다. 지라는 자유도가 높아 다양한 정책을 포괄할 수 있습니다. 이거야말로 지라의 가장 큰 장점입니다. 반면 팀에 뚜렷한 정책이 없으면 아무렇게나 사용되어 비싼 요금을 내고 지라를 사용하는 의미가 줄어듭니다.
에픽은 마일스톤에 달성할 목표의 포괄적인 설명, 목표, 지향, 핵심 요구사항을 정의하는데 사용합니다. 가령 캐릭터 선택 기능이 필요한데 미리 만들어 둔 캐릭터 10마리 중 하나를 선택할 수 있어야 하고 각 캐릭터의 매력이 돋보여야 한다는 식입니다. 어느 목표 하나 구체적이지 않지만 모든 목표는 이후 중요한 평가 기준입니다. 에픽의 핵심은 구체적인 산출물 각각을 정의하기보다는 산출물의 집합이 빌드에서 나타낼 결과와 의도를 정의해야 합니다. 이를 스토리라고도 하는데 정책에 따라 스토리를 별도 타입으로 분류해 놓을 수도 있습니다. 지라 소프트웨어 프로젝트를 생성한 다음 이슈 타입을 추가하려고 하면 스토리 타입이 이미 정의되어 있는 것을 볼 수 있습니다. 다만 실제로 프로젝트를 진행해 보면 보통 에픽을 스토리처럼 사용하더라고요.
흔히 경험할 만 한 썩 좋지 않은 사례를 살펴봅시다. ‘아웃게임 기획서 작성’ 에픽이 있습니다. 이건 에픽보다는 에픽을 달성하기 위한 하위 태스크에 어울립니다. 또 ‘아웃게임'은 기획서들의 분류로써는 어울리지만 목표로 삼기에는 범위가 넓어 평가하기 어렵습니다. 에픽 하위에는 에픽을 달성하기 위한 태스크를 등록하는데 여기에는 기획서 작성, 리뷰 미팅, 무슨 기능 구현, 무슨 문제 해결, 무슨 기능 테스트 같은 것들이 어울리고 ‘기획서 작성’은 이런 ‘태스크’로 등록해 관리하기에 더 적합합니다.
‘전투 개발’이란 에픽을 생각해 봅시다. 프로젝트 초반에 아직 전투 기능이 없을 때 흔히 만들 수 있는 에픽입니다. 전투 기능은 여기에 관여하는 요소가 많고 또 각 요소의 상호작용에 의해 전투 기능이 완성됩니다. 그렇다고 ‘전투 개발’이라는 에픽을 만들면 하위 기능 별 개발을 평가할 수 없게 되기 쉽습니다. 플레이어, 몬스터, 무기, 레벨 등 전투 자체는 이런 각 구성요소들의 상호작용에 의한 결과이지만 에픽 각각은 독립적으로 평가할 수 있는 단위로 구분해야 관리 가능해집니다. 서로 상호작용을 일으켜 전투를 완성시키지만 그 각각의 진행상황을 독립적으로 평가할 수 있는 단위로 나눠 관리하고 이들의 상호작용을 평가할 별도 에픽을 만들어 관리하는 쪽을 추천합니다. 에픽의 핵심은 마일스톤이 끝날 때 에픽 각각의 완료 여부를 독립적으로 평가할 수 있는 단위어야 하는 것입니다.
이번에는 이런 에픽 사용 시나리오에서 지양할 방법을 이야기 해봅시다. 마일스톤 완료 시점에 ‘빌드에 도출될 기능’으로 구분할 수 없는 것을 에픽으로 만드는 것입니다. 기획서 작성, 시나리오 작성, 특정 기능의 QA 같은 것은 ‘빌드의 동작’을 만들어내기 위한 하위 또는 보조 업무로 에픽으로 구분될 업무가 아닙니다. 만약 이런 태스크를 묶고 싶으면 마일스톤에 해당하지 않는 태스크를 생성해 연결하거나 레이블이나 필터를 사용하는 쪽을 추천합니다. 기획서 각각은 마일스톤에 속한 에픽을 달성하기 위한 하위 태스크이므로 마일스톤 목표에 해당하지만 이들을 묶는 태스크는 단순 그룹핑 용도 및 진행상황 추적 용도이므로 마일스톤 목표에 해당하지 않을 가능성이 높습니다. 그래서 마일스톤에는 속하지 않아야 합니다.
직군이나 업무 단위로 에픽을 생성하려는 의도는 레이블이나 필터로 대신할 수 있는 ‘자신에게 편한 뷰’를 생성하는 것일 가능성이 높습니다. 때문에 에픽 대신 실제 용도에 맞는 기능을 사용해야 합니다. 에픽이 설계 의도에 어긋나게 활용되는 이유를 생각해봤는데 에픽을 ‘태스크를 묶는 일종의 디렉토리 개념’으로 인식하기 때문이 아닐까 싶었습니다. 처음에 지라는 자유도가 높아 여러 정책을 포괄할 수 있다고 했지만 지라에는 에픽, 태스크, 서브태스크로 ‘다른 태스크를 묶는 개념’에 제한이 있는데 이 제한을 구성하는 각각의 이슈타입은 사용될 방법에 어느 정도 의도를 가지고 있고 이는 단순히 이슈를 묶는 개념과는 다름에 유의해야 합니다.