엉터리 스프린트를 많이 목격한다. IT원주민들의 스프린트를 훔쳐보자.
스프린트 절망편 : 원준's CASE
from 내 최애 만화 데브경수 @watergalsstoon
백엔드 엔지니어 원준은 게시판형 애니메이션 커뮤니티 제품을 담당하고 있다. 이번 스프린트에서 원준은 메인 화면에서 고객이 좋아할 만한 인기 게시글을 해시태그별로 보여주는 API를 연동해야 한다. 그런데 작업을 마무리할 즈음에 프론트 엔지니어와 기획자가 자리로 찾아온다.
원준님 죄송한데 지금 해시태그별로 게시글이 많지가 않아서요.. 원O스 게시판과 귀멸의O날 빼면 인기게시글라고 할만한 게 없네요. 상위 몇 개 게시판 외에는 숨김처리를 하던가 해야겠어요. 관련해서 기획을 수정하는 회의를 잡을게요
스프린트 마지막날 작업을 마치고 QA 일정을 앞두고 여전히 어느 해시태그를 노출할지 정해지지 않았다. 콘텐츠팀에서는 원0스와 귀멸의0날 등 소수의 태그를 노출하는 게 아니라 현재 이벤트 기획 중인 0파이패밀리를 포함한 인기가 적은 태그들을 활성화시켜야 한다는 입장이다.
결국 콘텐츠팀의 손을 들어주기로 하고 기술요건서를 처음으로 롤백한다. 이러한 논쟁은 메인화면 문제뿐 아니라 스프린트 내내 발생한다. 결국 원래 목표했던 5개의 기능 대신 3개만 배포하게 된다. 그리고 기획자는 다음 스프린트에 2개의 기능과 다른 백로그 기능을 몇 개 구겨 넣고 바로 다음 스프린트를 시작한다.
몇 주가 지났다. 0파이패밀리를 포함한 소규모 게시판은 얼마나 활성화되었을까? 스프린트팀은 배포 1주일 이후까진 게시판 관련 지표를 트래킹 했지만, 큰 변화는 없었고 커뮤니티란 본래 활성화되려면 시간이 걸리니 지켜보자고 말했다. 물론 다들 자기 일이 바빴기 때문에 이를 지켜보는 사람은 없었다.
몇 달이 지나고 애니메이션 덕후 신입사원이 들어온다. 그리고 커피를 마시며 팀원들에게 묻는다.
제가 지켜보니 예전엔 트래픽이 거의 없었던 0격의 거인이 게시판이 흥행하고 있더라구요. 지금 메인에 노출되는 게시판은 원0스랑 귀멸의0날인데 게시글은 많은데 다 예전 게시물이네요. 실시간 트렌드로 바꾸면 안 되나요?
오! 좋은 아이디어라며 무릎을 친 기획자는 다음 스프린트 백로그로 아이디어를 집어넣는다. 물론 0파이패밀리의 게시판의 성과는 여전히 아무도 모른다.
이러한 스프린트가 계속 반복되지만 게시판의 순서나 형태만 엎치락뒤치락할 뿐 서비스는 크게 성장하지 못한다. 유사하게 서비스를 시작한 경쟁사는 애니메이션 굿즈를 스스로 만들고 파는 창작자들을 데려와 새로운 커뮤니티를 만들고 이를 중개해서 수익화에 성공해 승승장구를 한다.
그리고 이 즈음 트래픽을 담당하는 백엔드 엔지니어로서 성장의 한계를 느낀 원준은 이직을 위해 퇴근 후에 이력서를 작성하기 시작한다.
열정도 넘치고 야근도 하고 월급 루팡도 없고 모두가 최선을 다했다. 원준 팀은 무엇이 잘못이었을까?
2주마다 배포하기로 하고 배포 일정을 못 지켜서? PM이나 PO가 기술요건서를 작성을 꼼꼼히 안 해서? 엔지니어와 디자이너 사이의 소통의 부족한 것? 스펙을 더 간소화하지 못한 것? 경쟁사의 전략보다 우수하지 못했던 것?
모두 그럴듯한 이유긴 하나 핵심은 아니다. 원준팀의 제품이 성장하지 못한 이유는 스프린트 운영에 있다. 그것은 1) 우선순위가 아니라 리소스 위주로 의사결정하고 2) 문제해결과 학습이 아니라 기능과 배포를 위해 스프린트가 존재했기 때문이다.
"00님, B일을 하려고 하는데 A일과 우선순위를 조정해야 할 것 같아요" 대신에 "00님 A일 하려는데 리소스 괜찮으신가요?"라는 말이 하루에 5번 이상 들리거나, 배포를 하고 학습을 위한 회고를 제대로 하지 않는 팀이라면 위험 신호(Red Flag)다.
스프린트 방법론에 대해 다양한 의견이 많다. 2주에 해야 된다, 4주에 해야 된다, 빨리 해야 된다, 자주 배포해야 된다 등등. 그러나 내 생각에 핵심은 그보다 중요한 것이다. 문제해결을 목표로 하는 것, 이를 통해 학습하고 성장하는 것
원준 팀의 몇 가지 아쉬운 점을 지적해 보자.
학습 목표의 부재
수업을 시작하기 전에 교사가 칠판에 학습 목표를 적는 이유는 무엇일까? 수업(스프린트)이 진행된 후 평가나 돌아보기를 통해 우리가 배우고자 했던 것을 잘 배웠나 알기 위함이다. 학습 목표를 달성하지 못했다면 그 수업(스프린트)은 의미가 없다.
원준팀은 우리가 관찰한 첫 번째 스프린트부터 문제해결이 아닌 기능에 집중했다. 인기게시글을 해시태그별로 모아서 보여주는 기능을 왜 필요했을까? 이 작업을 통해 원준팀은 어떤 문제를 해결하고자 했을까? 무엇이 학습되어야 했을까?
스프린트 중에 알게 되었지만 두 개의 태그를 제외하고 게시글 수가 많지 않었다. 이런 개인화, 고도화 작업이 정말 필요한 시기였을까? 그럼에도 목표한 것이 있었다면 무엇이었을까? 와 같은 것이었을 것이다.
(문제1) 관심 있는 게시물을 찾고 싶지만 주제가 뒤섞여서 원하는 주제를 찾기 어렵거나
(문제 2) 재미없는 글에 실망한 고객들을 위해
(학습)주제별 인기 게시물이 고객에게 관심이 있는 주제에 재밌는 반응을 이끌어내는지 검증
스프린트를 진행할 때는 이러한 학습 목표가 뚜렷해야 하지만 이러한 배경은 아무도 모르거나 구전으로만 전해진 후 알맹이도 없이 "주제별 인기게시글 정렬 API 개발"이라는 Jira 티켓만 남는다. 누구도 이것을 왜 하는지 모르기 때문에 정보 불평등으로 인해 주도적으로 문제제기를 할 수 없고 이 일로 얻어질 결과(고객의 만족)에 대해 잘 모르기 때문에 낮은 동기부여를 지니게 된다.
중요하기 때문에 다시 반복한다. 일이 성과가 없었기 때문이 아니라 일을 왜 하는지 몰랐기 때문에 팀원들은 사기를 잃는다
학습 방법의 부재
이야기에는 드러나지 않았지만, 명확한 학습 목표가 있었다고 가정하자. 그럼에도 문제가 있다. 학습 목표를 달성할 전략이 무엇인지, 달성했다는 증거를 무엇으로 삼을지 정하지 않았다는 것이다.
증거
학습 목표를 달성했을 때 결과(주제별 인기 게시글 모아서 노출하기)는 있다. 그러나 학습 목표는 고객의 문제 해결이다. 배포 후 고객들이 재미를 느꼈는지, 원하는 주제를 찾았는지 어떻게 검증할 것인가??
아마 재미를 느꼈는지?를 보려면 게시글의 반응도(댓글 비율이나 개수) 보는 것이 일반적이고 원하는 주제를 찾았는지 보려면 커뮤니티에 입장했을 때 주제에 입장한 비율(클릭한 사람 비율)을 측정하면 된다. 우리는 이걸 유식한 용어로 성공지표(Sucess Metric)이라고 부른다.
성공 지표를 정하면 끝이 아니다. 이를 어떻게 측정할 것인지(로그는 어떻게 개발할 것인지, 분석기간은 어떻게 정할 것인지) 설계하고 혹시나 이 기능을 배포함으로써 문제가 생길 수 있는 지표, 즉 가드레일 지표(Guardrail Metric) 또한 설정해야 한다.
전략
때로는 전략은 지표보다 중요할 수 있다. 혹시나 전략이 너무 거창한 말이라 어렵게 느껴진다면 쉽게 풀어서 설명하겠다. 전략이란, 목표에 도달하기 위해 1) 예상되는 걸림돌과 2) 한정된 자원을 이해하고 3) 집중할 것과 포기할 것을 정하는 것이다.
1) 예상되는 걸림돌
가장 큰 걸림돌은 고객의 문제에서 비롯된 어려움이다. 고객이 재미를 느끼지 못하는 포인트가 정확히 무엇인가? 주제별로 분류해서 제공한다 한들 우리 플랫폼에서 이를 찾아볼 이유는 무엇인가? 이 어려움을 정확히 이해해야 우리의 자원을 어떻게 사용할지 똑똑하게 정할 수 있다.
2) 한정된 자원
시간이 부족하고 돈과 인력이 늘 모자라다는 뜻이다. 우리는 늘 그렇다. 고객에 대한 이해가 부족한데 고객과 연락 수단이 없을 수 있고, 백엔드 엔지니어가 한 명뿐이고 다른 작업이 겹쳐 있어서 몹시 바쁘다는 점, 가용 가능한 마케팅 예산에 50만 원이라는 점 등이다.
3) 집중할 것과 버릴 것
우리가 문제 해결을 위해 예상되는 걸림돌과 현재 현실적인 한계를 통해 우리는 무엇에 집중하고 무엇을 버릴 것인지 정할 수 있다. 대부분의 조직이 무엇이 중요한지는 쉽게 이야기하지만 무언가를 포기하라고 하면 유독 마음이 약해진다. 인간은 자신의 선택으로 인한 손해에 더 민감하게 대응하기 때문이다. 예를 들면 배포 일정도 챙기면서 버그도 모두 고치고 디자인도 깔끔하게 만드는 것이다. 그러나 이 모든 과정이 지켜지는 과업은 열에 하나도 없다. 좋은 전략이란 집중할 것과 포기할 것 모두 분명히 정하는 것이다.
우리는 이러한 전략을 정리해서 "의사결정 원칙"을 만들 수 있다. 그리고 의사결정 원칙은 되도록 '가설검증', 즉 우리가 학습할 내용에 초점을 두는 것이 좋다. 예를 들면 이런 것이다.
이번 스프린트 의사결정 원칙 :
고객에게 재미있는 게시글을 찾게 하는 것이 이번 스프린트 목표입니다. 따라서 이번에 개발할 것은 기술적 완성도가 아니라 '재밌는 게시글 보는 경험'에 초점을 맞춥니다.
가령, 디자인 작업이 부족하거나, API 개발이 부족하더라도 직접 손으로 재밌어 보이는 게시글을 상위에 노출합니다. 이 부분에 관한 협업을 1순위로 하며 스프린트 시작과 동시에 마케팅, 디자인, 개발자가 모여 문제해결을 논의할 것입니다.
의사결정 원칙을 만드는 이유는 간단하다. 직급과 직군과 상관없이 균일하고 높은 퀄리티의 의사결정을 할 수 있기 때문이다. 또한 스스로 결정할 수 있으니 쓸데없는 회의를 축소하고 주도적인 업무를 통해 생산성을 높일 수 있다.
스프린트(Sprint)는 말 그대로 "전력질주"라는 뜻이다. 스프린트는 목표와 원칙이 뚜렷하게 정렬된 상태로 최소한의 미팅으로 전력질주해서 성과를 낼 수 있도록 설계되어야 한다.
학습과 성장 부재
https://www.theseosprint.com/p/agile-delivery-lessons
사실 이것이 가장 큰 문제이고 악의 근원이다. 학습은 모든 스프린트의 알파이자 오메가이다.
흔히들 위의 그림처럼 배포를 할 때마다 조금씩 지표가 오르고 몇 번의 배포가 지나면 분기나 연간 목표를 자연스럽게 달성하는 모습을 상상한다. 하지만 실제로는 그렇지 않다. 왜 그런가? 아래 그림을 보자.
https://www.theseosprint.com/p/agile-delivery-lessons 세로축은 학습(Learning), 가로축은 시간(time)이다. 그리고 초록색 그래프는 주기적으로 회고(Retrospectives)를 한 경우, 빨간 점선은 아무런 논의도 회고도 하지 않은 경우의 그래프를 보여주고 있다. 이제 요점이 보이는가?
학습과 성장을 만들어내는 것은 배포가 아니라 회고다.
스프린트의 마무리는 배포가 아니라 학습이다. 스프린트를 마치기 위해서는 반드시 회고를 해야 한다.
이번 스프린트에 목표는 무엇이었는지(고객들에게 재밌는 게시글 보여주기)
그 목표를 달성했는지, 달성하지 못하였는지?
달성하지 못했다면 그 이유는 무엇인지?
스프린트 과정에서 배운 점은 무엇인지? (프로세스나 팀, 고객에 대해)
회고를 통해 1) 팀이 성장하고 2) 개인이 배우며 3) 제품이 나아가야 한다.
제품이든 팀이든 초기에는 오합지졸로 시작한다. 주어진 자원도 없다. 하지만 빠르게 학습하며 성장해서 초격차를 만드는 것이 핵심인 것이다. 이런 이유로 스프린트를 짧게 (2~4) 하는 것을 장려하는 것이다. 자주, 빠르게 학습하기 위해. 그러나 프로세스와 학습 주기는 산업군과 팀마다 천차만별이다. (이 조차 학습을 통해 최적화해야 한다.) 유튜브는 6개월 단위로 전략을 세우고 6주 스프린트를 사용했다. (https://www.grownbetter.com/article/28)
마무리
마무리로 원준팀의 이야기로 돌아오자.
원준팀의 프로세스는 엉망이었지만 운은 따랐던 모양이다. 0격의 거인이 게시판이 자발적으로 흥행한 덕분에 소위 말하는 '네임드' 유저들이 몇몇 생겨났다. 네임드 유저들은 2차창작 게시물을 올리면서 유명해졌는데, 게시판에는 자신의 2차창작물을 만드는 과정을 블로그처럼 매일매일 올리고 이를 커뮤니티 유저들과 소통하는 행위가 유행했다.
열정 넘치고 기민한 원준팀은 이를 놓치지 않았다. 2차창작자들을 위해 '크리에이터' 계정을 만들고 이들이 창작활동에 대해 후원받을 수 있는 장치를 만들었다. 동시에 인기 많은 2차창작물을 원저작자와 연결해서 새로운 창작물을 만들 수 있도록 공모전을 열기도 했다. 이러한 열기에 힘입어 적어도 0격의 거인에 관해서는 가장 훌륭한 커뮤니티가 형성되었고 이러한 전략을 다른 게시판으로 확장할 수 있었다.
어쩌다 보니 애니메이션 고객들을 대상으로 '2차창작 크리에이터 이코노미 산업' 대열에 합류하게 된 것이다.
자, 이제 원준팀의 다음 스프린트에는 어떤 백로그로 시작하면 좋을까? 그들의 우당탕탕 스프린트 여정은 계속된다!!