배민 '앱 친구'의 스프린트 이야기
📩 다음 릴리즈를 준비할 때가 왔음을 알리는 메일이 도착했네요.
배달의민족 앱 개발자들은 주로 다음 과제와 관련된 메일을 받고 다음 앱 업데이트 준비를 시작합니다.
여러분의 한 단위 앱 업데이트를 위한 과정은 어떻게 시작되시나요?
이터레이션이라고 부르기도 하고, 스프린트라고도 칭하는 용어들을 사용하고 계신가요 :-)
배달의민족을 개발하는 팀에서는 스프린트라는 용어를 주로 사용하고 있습니다.(스크럼을 응용해서 개발 프로세스를 진행하고 있다는 의미도 내포되어 있어요-) 주된 스프린트의 목표는 역시 고객님께 배포되는 앱을 릴리즈 하는것이랍니다. 우리 팀은 성공적인 앱 배포를 위해 흥미롭게 짜여진 스크럼 진행 과정을 따르고 있는데요. 오늘 여러분께 그 과정을 소개해드리고자 합니다.
앱 친구?
우리 팀은 앱 개발자와 서버 개발자가 반반정도의 비율로 함께 일하고 있고, 서로를 앱 친구들 & 서버 친구들이라고 부르곤 한답니다. 한 ‘앱 친구’(앱 개발자)의 페르소나를 투영해서 릴리즈 준비를 시작하는 시점부터, 최종 릴리즈까지 거치게 되는 흐름들을 함께 흘러가고자 합니다.
이제부터 마치 과제를 담당하게 되는 개발자처럼 생각해보세요. Shell We? ;-)
다음 릴리즈 예고편 구경하기
“우리 언제 모일까요~?”
글 초반에 보여드렸던 다음 릴리즈 과제 담당자 지정에 대한 메일이 오면, 우리는 메신저에서 과제 담당자 관련된 논의를 위해 모일 시간을 정하자고 이야기 해봅니다.
그리고, Confluence Wiki(기획자분들은 기획문서를 모두 wiki에 올려주십니다. 꽤나 미리 전부터요~) 에서 과제를 검색해 그 과제의 스펙들은 어떤 것인지 미리 살펴봅니다. 여러 과제들이 어떤 목표와 기획을 가지고 있는지, 특별한 개발 기술들을 필요로 하는지 고민하는 시간을 가지곤 합니다.
과제 담당자 정하기
동료들과 모여서 다음 과제 이야기를 나눌 때는 마치 모여서 잡담을 하는 것 처럼 편안합니다.
자유롭게 과제에 대해 이야기 하는 분위기는 전매특허 수준이예요~
각 과제가 어떤 난이도가 있는지, 이번엔 이런 결과를 위해서 어떤 기술을 사용하겠다 등등 과제 관련해서 할 수 있는 이야기는 이 때 가장 많이 나누는 편입니다. 그리고 우리는 각자의 모든 것을 고려해서(선호도, 개발 실력, 개인 휴가… 개인의 현재 상태까지!)과제 담당자들을 지정합니다. 이 과정에서 잡음이 있었던 적은 전혀 없습니다. 아마도, 우리 팀이 일과 관련되서는 서로에 대해 잘 알고있다라고 할 만큼 투명하게 지내는 분위기를 가지고 있기 때문 인 것 같아요. (정말 좋은 팀이죠~? :-D)
보다 자세한 스프린트 수행 계획 세우기!
다음은 플래닝포커를 통한 일정산출입니다!
포커카드 없이 점수표를 보면서 각 과제의 난이도나 사용하는 기술을 고려해 얼마의 공수가 필요할 지 머릿속으로 미리 시뮬레이션 해봅니다. 점수를 말하면서 각자의 생각을 공유하고, 내가 생각하지 못한 부분도 듣게 되면서 과제수행에 대한 현실감 게이지가 슬슬 달아오르게 됩니다.
그러면서 점수가 이정도니 일정은 얼마나 걸리겠다까지 연장선으로 함께 논의하게 됩니다. 릴리즈 목표일이 확정은 아니지만 어느정도 정해져서 공유가 되는데요. 개발자들은 그 릴리즈 목표일을 생각하며 그 일정 안에 Design QA(품질개선팀에서 수행하는 QA전에, 디자이너와 함께 디자인이 잘 반영되었는지 확인하는 과정을 Design QA라고 지칭)와 QA까지 모두 고려하며 개발 일정은 얼마나 나오는지 역산해 봅니다.
이 과정을 통해서 개발팀 내부에선 목표일을 지킬 수 있다, 시간이 더 필요하다, 더 단축시킬 수 있다라는 의견을 정해서 프로젝트 리더에게 공유합니다. 대게 개발자들이 의견이 잘 반영되어 릴리즈 목표일이 확정되곤 합니다.
우아한형제들 개발실의 또 다른 플래닝포커를 보고싶다면… 클릭해보세요!
이제, 과제를 위한 준비체조가 끝난 격이예요!
본격적인 개발을 위해 아래와 같은 작업을 시작합니다.
- 브랜치 생성(브랜치를 각각 어떻게 따고 어떻게 머지할 지 논의하면서)
- Backlog 지라 티켓 만들기(최대한 세세하게, 추정포인트도 적으면서)
- 코딩 시작~
…을 하고 있으면 노티피케이션이 옵니다!
일일 스탠딩 회의 or 리모트로 메신저에서 회의
기획 리뷰회의가 잡혀서 5분전 알림이 울렸네요 ㅎㅎ
이제 각개전투 시작입니다!
각 과제 앱 담당자들과 서버 담당자들, 기획자와 QA분들이 모여서 함께 회의하고 기획과 관련된 부분을 논의합니다.
같이 모인 메신저방도 생기고 이렇게 회의도 같이하니 궁금하거나 문제가 되는 부분은 바로바로 이야기 할 수 있고, 그로 인해 전달하는 형식의 커뮤니케이션 코스트도 줄어들고 분위기는 훈훈해지는 효과를 얻습니다! ㅎㅎ
과제에 따라 매일 스탠딩 회의를 진행하는 경우도 있고, 메신저를 통해 리모트로 작업 진행 과정을 공유하기도 한답니다.
개발하기, 그리고 코드리뷰
본격 코딩을 시작합니다~! 때로는 페어로 개발할 때도 있지만,
속해있는 팀원이 홀수라면 페어없이 혼자 한 과제를 도맡아 할 때도 있습니다.
그런데, 혼자 개발한다는 느낌이 1도 들지 않습니다.
왜일까요? 나의 코드를 지켜보는 동료들이 있기 때문입니다.
안드로이드 개발자들의 치밀한 코드리뷰는 우리 팀의 자랑거리 입니다 :-)
동료들이 서로 리뷰해준 리뷰 내용들, 세세한 실수부터 리팩토링 할 수 있는 것들을 댓글로 달아주는 덕에 결국에 머지되는 코드는 프로페셔널 향기가 날 수 있답니다. 그 과정에서 서로 많이 배우는 것은 굳이 말하지 않아도 될 정도이구요. 이렇게 서로의 코드를 리뷰하며 과제 개발의 마무리를 향해 달려갑니다.
릴리즈를 향해, 개발자도 QA를 함께
그러다 보면 또 다른 노티피케이션이 도착합니다.
바로 품질개선팀이 작성하신 QA TC를 함께 리뷰하는 회의를 위한 소집인데요. 우리팀에서 개발완료라고 부르는 시점은 개발자가 기획된 모든 기능을 개발하고, 디자이너와 Design QA를 진행하고, 품질개선팀이 작성해주신 TC까지 스스로 테스트 해보는 과정을 모두 마쳤을 때 입니다. 이 이후에 본격적인 QA가 진행된답니다.
TC를 리뷰하면서, 개발자는 테스트가 필요한 내용들을 품질개선팀에 추가로 전달할 수 있고, 앱의 스펙과 테스트 기대결과들을 최종적으로 점검합니다. 그리고 돌아와서 개발자는 TC를 하나하나 수행하며 체크합니다. 스스로 만든 💩 을 자발적으로 치우며 아름다운 반성의 시간도 가지게 됩니다. 마치 개발 후, 명상의 시간을 갖는 것 같습니다 ㅎㅎㅎ
그리고 나면…
본격적인 QA기간이 시작되고, QA 이슈 티켓이 작업자에게 할당됩니다. 개발이슈 티켓을 쳐내기에 열중했다면, 이제는 QA이슈 티켓을 완료시키기 위해 집중합니다. 이 과정에서 기획단에서 다시 고민이 필요한 부분들도 나오는데요. 이런 이슈들은 모두가 모여있는 메신저에서 자유롭게 이야기하며 빠른 기대결과 적립 및 수정을 진행하게 됩니다.
릴리즈가 눈앞에!
릴리즈 목표일이 다가오면 프로젝트 리더분에 의해 앱 릴리즈 목표일 즈음에 남아있는 QA이슈들이나 빠진 작업이 없는지 확인되고, 일정이 추가적으로 필요한지 검토해서 목표일 수정이 유연하게 이뤄지는 편입니다.
그렇게 빠진 부분이 없는지 잘 챙기다 보면… 어느새 앱 출시 완료!
릴리즈 후에는 과제의 특성에 따라 회고가 이뤄지기도 하고, 생각치 못한 오류들로 인해 패치를 준비하기도 합니다.
그렇게 한 번의 릴리즈를 마무리 하고 나면…
어느새 다음 과제 대상자 관련 메일이 또 도착📬하게 되겠죠? 다음엔 어떤 과제를 하게 될 지 궁금해지네요~
배달의민족 앱 친구의 스프린트 수행과정 어떠셨나요? 저희 잘 하고 있는 것 같나요~? :-)
혹시나 이 글을 읽고, 함께 스프린트를 수행하고 싶은 마음이 불끈 생기셨다면…지체 마시고 클릭해보세요
Happy Sprint!