Dashboard를 활용한 프로젝트 통합 관리
프로젝트 관리에서 가장 중요한 것은 프로젝트가 사전에 정의한 계획서 대로 수행되고 있는지 추적하고, 이슈 및 변경을 관리하는 것이다. 즉, 프로젝트 진행상황 및 변경에 대한 증적을 남기고, 일련의 승인 프로세스를 수립해야 한다. 그리고 우리는 이 모든 절차를 프로젝트 통합 관리라고 한다. 오늘은 OKR과 Jira Dashboard를 활용하여 프로젝트를 통합 관리하는 방법에 대해 정리했다.
OKR은 조직 차원에서의 목표(Objective)를 설정하고 그것을 어떻게 달성할지(Key Results) 정의하는 방법론이다. 1980년대 인텔에서 시작되어 구글을 거쳐 실리콘밸리 전체로 확대된 성과관리 기법이며, 요즘 국내 대기업에 많이 적용되어 있다. OKR의 목표를 설정할 때 100% 달성하기 어려운 Aim High한 목표를 설정하고, 70% 이상 달성하면 성공으로 본다. 이렇게 하는 이유는 불가능한 목표로 높게 설정할수록 목표 달성을 위한 직원 참여도가 올라간다고 생각하기 때문이다. OKR을 작성하는 방법은 다음과 같다.
Objective (What)
조직이 공동적으로 추구하는 목표이다. 직원들에게 동기부여가 되는 도전적인 목표를 설정한다.
* 이것은 쿠팡의 리더십 원칙 중 하나인 "Aim High and Find a Way"와 일치한다.
: 우리는 절충안 대신 근본적 해결책을 찾아내고, 고객의 기대를 100배 이상 뛰어넘을 때 진정한 고객감동이 이뤄진다고 믿는다. 오직 비현실적으로 보이는 목표만이 믿기지 않는 결과를 만든다. 진정한 리더는 변화와 혁신 없이는 이룰 수 없는 급진적이고 높은 목표를 제시해 고객을 위한 믿기지 않는 결과를 이뤄낸다.
Key Results (How)
목표 달성 여부를 측정할 수 있는 정량적인 성과 지표로 각 목표마다 최대 5개의 KR을 작성한다.
보통 기업에서 OKR을 엑셀 표로 만든 다음, Status를 수기로 업데이트하며 목표별 진행상황을 관리한다. 그런데 OKR 시스템을 BTS에 적용한다면, Dashboard를 통해 진행상황을 관리하고, 이슈 및 변경을 한눈에 확인할 수 있다. 또한 범위/일정/원가의 변경이 있는 경우 BTS에서 변경 요청 티켓을 생성하고, 의사결정권자가 승인해야만 다음 단계를 진행할 수 있도록 한다면 BTS를 통해 진행상황 및 이슈, 그리고 변경 통제까지 한 번에 할 수 있는 것이다. 그래서 나는 OKR을 BTS에 적용하고자 하며, 우선 아래와 같은 룰을 만들었다.
· 진행상황은 KR 및 Epic 단위로 관리되므로 Objective 티켓은 생성하지 않는다.
· KR은 OKR의 Key Results이며, 최상위 타입으로 티켓을 생성한다.
· KR별 Epic 티켓을 생성하고, KR 티켓과 Epic 티켓을 연결한다.
· Epic은 하나의 KR과 연결되며, 2개 이상의 KR과 연결될 수 없다.
· 개발 티켓(Story 및 Task)을 생성하고, 알맞은 Epic과 연결한다.
· 하나의 프로젝트 내 모든 개발팀은 동일한 Epic을 사용한다.
· 상기의 트리 구조를 모든 프로젝트/팀에 적용한다.
룰이 존재해야 모두가 혼선 없이 일을 진행할 수 있고, 더 빨리 조직 문화로 자리매김할 수 있다고 생각해서 상기와 같이 BTS 티켓 생성에 대한 가이드를 만들어봤다. 그런데 꼭 이 같은 트리 구조로 가야 하는지, 작은 규모의 KR도 Epic을 생성해야 하는지에 대한 의문이 있을 수 있다. 그래서 아래와 같은 변명도 준비했다.
1. 전사적으로 동일한 트리 구조를 가져가야 하나의 Dashboard를 통해 진행상황을 관리할 수 있다.
2. 개발 티켓을 KR에 바로 연결할 경우 KR 단위의 진행상황만 확인할 수 있는데 이것은 너무 큰 규모이다. 규모가 크면 어떤 Task가 블로커인지 파악할 수 없기 때문에 Epic이 필요하다.
3. 팀별 Epic 대신 프로젝트 단위의 Epic을 생성하고, 프로젝트 내 모든 팀에서 동일한 Epic을 사용해야 Epic별 진행상황을 확인할 수 있다.
대시보드를 만들기 앞서, 대시보드를 통해 내가 보여주고 싶은 게 무엇인지 고민해야 한다. 그다음 그것을 호출할 수 있는 필터(쿼리)를 만들고, 알맞은 가젯을 활용하여 최종적으로 대시보드를 구성한다. 나는 OKR 대시보드를 통해 아래 아이템들을 보여주고 싶었다.
1. OKR 전체 진척도
필터 : project = "KR 티켓이 생성된 프로젝트" AND type = "Key Result"
가젯 : Rich Filter Pie Chart
앞서 만든 룰처럼 Objective 티켓은 따로 생성하지 않았지만, Epic의 모든 합이 KR을 구성하듯 KR의 합은 OKR이므로 상기와 같이 KR 티켓들을 모두 호출하는 쿼리를 짠다면 OKR 전체 진척도를 확인할 수 있다.
2. KR 및 Epic별 진척도
필터 : issueFunction in epicsOf("filter=KR 티켓들의 집합 필터")
가젯 : Filter Results
KR 및 EPic별 진행상황을 보여주는 가젯이다. 상기 샘플은 KR별 진행상황이 맞는데, 티켓 타입을 Epic으로 생성해서 타입이 잘못 표시되어 있다. (BTS를 조금이라도 아는 사람이 본다면 타입을 지적할 수 있어서 이실직고)
3. Issue 또는 운영 배포된 티켓
필터 : project = "KR 티켓이 생성된 프로젝트" AND type = "Key Result"
가젯 : JIRA Issues Calendar
이슈 캘린더는 정말 유용한 가젯 중 하나이다. 배포 후 장애 모니터링 및 이슈 트래킹에 최적화된 가젯이므로 자주 활용하자.
이렇게 세가지는 대시보드를 구성하는 가장 기본 아이템들이다. 이외에 Epic별 Last comment를 보여주는 가젯을 만들어서 마지막으로 업데이트된 내용을 확인할 수도 있고, "승인 요청" 상태인 티켓들을 보여주는 가젯을 만들어서 변경 내용 및 사유를 확인하고, 그에 대한 승인 상태를 관리할 수도 있다. BTS를 통해 변경 통제 및 승인까지 관리한다면 이것은 분명 여러 감사에서 훌륭한 증적으로 사용될 것이다.
BTS Dashboard를 처음 만들 때는 막막하고, 쿼리를 어떻게 짜야 내가 원하는 티켓들이 보일지 몰라서 난감할 수 있다. 나 역시 학부 때 소스를 많이 짜서 쿼리 생성이 어렵지 않음에도 불구하고, 처음 BTS를 접했을 때 무엇을 어디서부터 시작해야 할지 감이 안 잡혀서 며칠 동안 백지상태로 있었으니까. 하지만 두려움을 극복하고 실행하는 사람만이 발전할 수 있다! 직접 몸으로 부딪히며 이것저것 만지작거리다 보면 어느샌가 나만의 대시보드가 만들어져 있을 것이다. 그리고 필터와 보드를 만드는 것이 더 이상 어려운 일이 아니게 된다면 그때부터는 승인, 개발, QA 등 프로젝트 관리를 위한 다양한 절차를 BTS를 통해 관리할 수 있게 된다. 중꺾마(중요한 것은 꺾이지 않는 마음) 정신으로 BTS 고수를 향해 달려가 보자.