Agile 애자일

완료한일과 아직 남은 일들 - 스크럼팀에게 지속적인 정보 제공 및 조정을 위한 도구 - GASP

twoslicesoftoast 2021. 3. 16. 07:51

프로젝트를 한다면, 프로젝트가 계획대로 잘 진행되고 있는지 추적할 방법이 필요하다. PM의 주요한 역할이 이러한 프로젝트가 잘 수행될 수 있도록 5개의 프로세스 그룹 속에 42개의 프로세스를 활용해서 관리하고 있다. 그렇다면, 애자일 팀의 경우는 어떻게 관리하는 것이 좋을까?

 

스크럼팀이 작업을 함께 계획하고 모든 사람들이 같은 내용을 이해하는데 도움을 주는 방법으로 GASP(Generally Accepted Scrum Practices) : 일반적으로 수용되는 스크럼 프랙티스를 보편적으로 사용하고 있다.

 

  1. 사용자 스토리(user story)와 스토리 포인트(story point) : 사용자가 소프트웨어에서 필요로 하는 것을 알수 있게 하고 사용자 스토리 하나를 구축하는데 노력이 얼마나 필요한지는 스토리 포인트로 알 수 있다.
  2. 태스크 보드(Task board): 팀의 모든 사람들이 현재 스프린트의 진행상황을 똑같이 인지할 수 있도록 한다.  모든 사람이 무엇을 하고 있는지 알려주는 빠르고 시각적인 방법
  3. 계획수립포커(Planning poker): 모든 사람들이 각 스토리의 크기를 정의한다.
  4. 번다운 차트(Burndown chart): 팀의 모든 사람들이 얼마나 일을 완료했고 어느정도 남았는지 알 수 있다.

사용자 스토리(User story) 와 스토리 포인트(Story point)

사용자들의 요구사항에 대해 상세한 명세서를 만들어 내는 예의 프로젝트 관리에서는 20여개의 프로세스가 관여되고 그에 따른 산출물의 수도 매우 많다. 애자일팀의 경우 이러한 복잡하고 상세한 산출물 대신 사용자 스토리라는 매우 짧은 문장으로 사용자가 원하는 것을 기술하는 방법을 이용한다. 문장의 구조는 "<사용자의 유형>인 나는, <취하고자 하는 특정 행동>을 통해 <그 결과로 발생하는 일>을 원한다." 와 같다. 

좋은 사용자 스토리 작성하는데 가이드라인으로는 INVEST라는 약어로 요약된다.

사용자스토리 구성

스토리 포인트는 상대적인 크기에 집중할 수 있어야 한다.  스토리를 개발하는데 걸리는 정확한 시간을 추정하기 보다는 상대적인 크기에 집중함으로써 스크럼 팀이 계획수립에 함께 참여하고, 그 계획의 불확실성도 허용한다.

피처들의 크기를 (XS, S, M, L, XL, XXL) 같은 티셔츠 크기로 구분하는 방법을 활용할 수 있다.

 

계획수립포커(Planning poker)

  1. 준비 - 추정 포인트가 적힌 카드를 스크럼 팀이 가지고 있다. (또는 다른 의사소통 방법을 찾는다.)
  2. 각 스토리 이해하기 - 팀은 제품 책임자와 함께 우선순위대로 스프린트 백로그에 있는 각 스토리를 검토하고 사용자가 필요로 하는 것을 파악하기 위해 스토리에 대한 질문을 한다.
  3. 스토리 포인트 값 할당 - 팀이 피처에 관한 논의를 하고 나면, 각 팀원은 카들르 한장 선택해 스토리 포인트 값을 할당하고 공유한다.
  4. 높고 낮은 값 설명 - 높고 낮은 값을 추정한 팀원들은 그 추정에 대해 설명한다.
  5. 추정 조정 - 팀 모두의 설명을 들은 후 추정카드를 다시 선택하여 제시한다. 
  6. 추정 수렴 - 5번의 과정을 서너번 겪으면 팀 전체가 동의하는 수치에 도달한다.

예의 프로젝트 관리라면 스프린트 백로그를 제한된 일정안에 집어 넣어 진행을 하였을 것이다. 그러나 애자일 팀에서는 스프린트 백로그로 정해졌다 하더라도, 우선순위와 포인트를 기준으로 일을 완료하는 것에 집중되어 있고, 이는 모든 스프린트 백로그가 완전히 끝나는 시점에 대해서는 명확히 알기는 어렵다. 다만 가장 최우선 순위에 해당하는 일부터 완료해나가는 것이고, 이를 스프린트가 종료되는 시점에 스프린트 리뷰를 통해 결과를 시연함으로써 프로젝트 진척도를 확인할 수 있다. 이러한 방법에 동의하는 것은 초반에 일정계획을 수립하는 것이 거의 잘 지켜지지 않기 때문이다. 분명 복잡한 문서들을 수정하는 변경관리계획이 수반되게 된다. 이러한 무의미한 노력을 배제하고, 완료된 일에 집중하는 것이 어쩌면 더 생산성 있는 결과물이 나오지 않을까 하는 생각이 든다. 그래서, 스크럼을 이용하여 프로젝트를 관리해보고자 한것도 있다. 

 

그러나, 실제 프로젝트 팀을 운영하다 보면 계획수립포커를 시행하는 것이 쉽지 않다는 것을 느낀다. 개발팀 대부분 할일을 포인트로 정하는 것에 어려움을 많이 느끼고, 사용자 스토리 내용만으로 추정한 경우 실제 구현 시에는 다른 예외사항으로 인하여 처음 추정한 값과는 많이 다른 결과가 나오기도 한다. 어느정도 경험치가 있는 개발팀이어야 더 효용성이 있을것 같다는 생각은 든다. 프랙티스를 하다보면 점점 나아지지 않을까 기대해본다.

 

* 스토리포인트는 경과시간과는 다르다는 개념을 가져야 하고, 우리팀만의 속도를 확인하는 과정이 필요하다.

 

태스크보드(Task board)

세 개의 칸이 있는 화이트보드에 상황을 반영하며 세 칸은 각각 할 일, 진행 중, 완료로 구분된다. 팀원은 스토리 작업을 시작하면서, 할일 칸에 있는 스토리를 진행 중 칸으로 옮기고 작업이 완료되면, 완료 칸으로 옮긴다.

 

pnp.so 협업 툴을 이용하여 칸반 형태로 프로젝트 관리

요즈음은 비대면/재택근무가 많아진 탓에 이전에 화이트보드에서 진행하던 것을 관리 툴로 옮겨와서 처리하고 있다.

 

백로그항목 : 사용자스토리, 버그 수정, 성능 향상, 비기능적 요구사항, 위험관리등 다양한 종류의 작업이 올 수 있다.

 

번다운차트(Burndown chart)

팀이 스프린트 백로그에 있는 모든 사용자 스토리에 포인트 값을 할당하고 나면, 팀은 프로젝트가 어떻게 진행되는지 파악하기 위해 번다운 차트를 이용한다. 스프린트 기간 중 매일 얼마만큼의 스토리 포인트를 완료하였는지 그리고, 얼마만큼의 스토리 포인트가 남았는지 확인할 수 있다. 

 

-. 스프린트 백로그에 추가한 모든 스토리 포인트를 더한 값이 X축, 스프린트 기간내 일수 Y축

-. 스프린트 기간 중 안정적인 진척도를 일할 경우, 포인트가 얼마만큼 소진되어야 하는지를 확인할 수 있는 선형 그래프

-. 스프린트 기간 중 일별로 완료 칸으로 이동한 포인트만큼 뺀 값을 선형 그래프(실제 팀이 소진한 포인트)

 

번업차트(Burn-up chart)

스프린트 중에 진행 상황을 추적하는 또 다른 방법인데, 추정한 총 포인트에서 완료한 숫자를 빼는 대신 스프린트 동안 완료한 총합을 표시한다. 스토리를 범위에 추가하거나, 제거하면 범위를 나타내는 선에 나타난다. 

태스크보드 완료 칸에 들어간 총 범위(포인트) = 번업된 총점

 

-. 포인트 X축,  스프린트기간내 일수 Y축

-. 스프린트 기간 중 매일 달성하는 스토리 포인트의 총점(=매일 완료칸으로 이동한 스토리 포인트 총점) 

-. 스프린트 기간에 할당된 모든 스토리의 총점

 

* 번다운, 번업 차트 자세한 내용은 Head First Agile 143~147 페이지 참조

 

GASP로 위 4가지외에도 아래와 같은 것들을 이용할 수 있다.

제품 백로그 정제(Product backlog refinement)회의 : 다음 스프린트 전 백로그의 모든 것이 제대로 정의되어 있는지 확인하고, 각 아이템별로 세부내용을 추가하고 추정을 추가하고 순서를 정비하는 일을 한다.

스토리 맵(Story map) - 백본(Backbone), 살아있는스켈레톤(Walking skeleton): 백로그를 시각화하여 배포계획을 용이하게 한다.

페르소나(Persona) - 인위적으로 만들어진 사용자 프로필로 사용자를 이해하는데 도움을 준다.

 

회고

스프린트의 마지막에 팀은 자신들이 경험한 것을 되돌아보고, 상황을 개선하기 위해 함께 노력함으로써 점점 좋아진다. 

  1. 무대설정 - ESVP(Explorer, Shopper, Vacationer, Prisoner) : 탐험가(배울것), 쇼핑하는 사람(개선점), 휴가자(휴식), 수감자(억지로온자,다른일)
  2. 데이터수집 - 타임라인, 컬러코드스티커(긍정,부정)
  3. 통찰력 생성 - 생선뼈(Fishbone) 다이어그램 - 원인과 결과 : 결함을 야기하는 원인 파악용, 팀원별로 10개의 스티커로 가장 먼저 다루었으면 하는 문제에 붙이기
  4. 할 일 결정 - 짧은주제(그만하기, 시작하기, 계속하기)

모여서 함께하는 대화를통해 번다운차트, 진척도, 백로그에 있는 스토리 포인트 투명하게 확인하고 점검하여 적응함으로써 점점 나아질 수 있도록 한다.

 

 

 

위 글은 <출처 : Head First Agile> 책을 참조하여, 내가 이해한 방식과 견해를 함께 정리함.