Jdd는 사실 주니어개발자 주도 개발이거든요 — 투표 시스템 개발기 2편

Jdd는 사실 주니어개발자 주도 개발이거든요 — 투표 시스템 개발기 2편

투표 시스템 개발기 1편 보러가기

리얼월드 투표 시스템

안녕하세요. 유니크굿컴퍼니의 백엔드 개발자 용태입니다.

저는 올해 초부터 자사 앱 내 투표 시스템 도입을 위해 기획과 개발을 맡아 진행했었습니다. 이 기능은 현재 리얼월드 내부 제작 게임에서 통계를 산출하거나, 플레이어와 상호작용하는 역할을 맡아 다양한 방법으로 사용되고 있습니다.

유니크굿컴퍼니 용태의 업무공간

지난 글에서는 제가 투표 시스템을 개발하기 위한 문제 발굴부터 프로젝트 킥오프까지의 여정을 그렸습니다. 간단히 요약하자면, 처음에 문제를 발견하자 POC를 만들어 동료들과 공유하였습니다. 그리고 프로토타입을 만든 다음에 팀 내에서 프로젝트를 진행하도록 합의하였습니다. 이후 디자이너님과 두 프론트엔드 개발자님이 합류하여 결국에는 투표 시스템 프로젝트가 킥오프 미팅을 하기에 이르렀습니다. 저는 지난 글에 이어 제가 투표 시스템 프로젝트를 어떻게 진행했는지 말씀드리도록 하겠습니다.

킥오프

프로젝트의 시작을 알리는 킥오프 미팅에서 저는 현재까지 진행되고 있는 상황을 자세히 공유했습니다. 구체적으로 투표 시스템의 프로토타입을 어떻게 만들었고, 부족한 부분은 어느 것이며, 앞으로 실제 기능을 만들 때 어떤 방향으로 만들지 설명했습니다. 그 다음으로는 큰 틀에서 작업을 분배했는데요. 투표 시스템은 서버와 투표가 진행될 리얼월드 게임 내 웹뷰, 투표 편집기로 이루어져 있습니다. 그 중 웹뷰와 편집기를 두 분의 프론트엔드 개발자 분들에게 할당 드렸습니다.

출처

그러나 킥오프 미팅은 실무적이기보다는 상징적인 의미를 가지고 있습니다. 이 때에는 구성원 모두 방금 막 모인 상태이기 때문에, 자세한 태스크 분배나 정밀한 일정 산출이 불가능합니다. 그러니 킥오프 미팅은 ‘우리 이제 이런 일을 시작할 것이다’라는 목표만 공유하면 되는 가벼운 목적을 지닌 것입니다. 본격적인 작업은 킥오프 미팅이 끝나고 시작되었습니다.

출처

킥오프 이후에는 각자 자신의 태스크를 검토하거나 가볍게 작업을 진행했습니다. 이 기간의 목표는 완벽한 결과물을 만드는 것이 아니라 각자 자신이 맡은 부분을 살펴보며 태스크를 작게 쪼개고, 최종적인 일정을 어떻게 산정할지 가늠했습니다. 대략 일주일 동안 이런 작업 준비 과정을 거치자 함께 모여서 상당히 구체적인 작업 일정을 그릴 수 있게 되었습니다. 그리고 나서 일정 산정 미팅을 열고 정밀한 일정을 결정하여 본격적인 작업을 시작했습니다.

개발

개발 단계에서는 잘게 쪼개놓은 태스크를 일정에 맞춰 각 구성원이 작업합니다. 우선 UX/UI 디자이너님은 사내 디자인 시스템을 활용한 컴포넌트 디자인을 맡아주셨습니다. 프론트엔드 작업은 크게 2가지로 나누었는데요. 리액트 웹앱으로 만드는 투표 편집기 작업과, 앱에서 사용자에게 직접 노출되는 투표 웹뷰를 구현하는 작업이었습니다.

리얼월드 투표 편집기 화면

한편 이 투표 시스템 프로젝트에서는 스프린트를 일주일 단위로 끊어가며 하지는 않았습니다. 여러 가지 이유가 있었지만, 가장 큰 것은 모두가 스프린트에 익숙하지는 않았다는 것이었습니다. 그리고 일주일 간격으로 스프린트를 끊기에 예상된 총 기간이 충분히 길지 않았습니다. 잘게 쪼갠 태스크를 스프린트 단위로 나누기 어색했으며, 억지로 끊어봤자 스프린트의 강점을 제대로 살리지 못할 것이라고 예측하여 실행하지는 않았습니다.

리얼월드 투표 편집기 상세 화면

저는 일주일마다 스프린트 회고를 하는 대신, 직접 비정기적으로 구성원 분들과 소통하며 진행 상황을 파악했습니다. 이것은 제가 프로젝트를 처음부터 기획했고 대부분의 코드를 작성하여 이해도가 매우 높다는 특수한 상황에서만 적용할 수 있는 방법이었으나, 그만큼 효율적이기도 했습니다. 이러한 셀프 트래킹 덕분에 저는 반복적인 회의와 보고로 인한 시간 낭비를 줄일 수 있었습니다.

마무리

이렇게 한달 여 간의 개발을 마치고, 투표 웹뷰와 투표 편집기로 이루어진 투표 시스템이 완성되었습니다. 개발이 끝나면 QA를 해야 하죠. 개발이 끝나갈 때 쯤 구성원들과 함께 다양한 상황을 가정한 QA 테스트 목록을 작성하였습니다. 그러고 나서 팀 내 슬랙에 QA 지원을 요청했더니 모든 팀원이 회의실에 모여서 TV 스크린에 투표 웹뷰를 띄워놓고 다양한 상황을 가정하여 입력해주었습니다.

리얼월드 투표 시스템을 QA하는 저와 동료들

특히 백엔드 개발자 강현우님은 기상천외한 조작으로 생각치도 못한 버그들과 기획의 허점들을 발견해주셨습니다. 이를 통해 엣지케이스에 대한 피드백을 반영하여 투표 시스템의 완성도가 매우 올라간 것은 물론입니다.

투표 시스템을 활용한 리얼월드 게임 “Dr. Fanu의 스케치북“의 한 장면

QA 이후 투표 시스템을 실서버에 배포하고 전사에 공유했습니다. 이로써 투표 시스템 프로젝트는 공식적으로 완료되었고, 사내 게임 크리에이터님들께 사용 방법을 전파하면서 시스템이 본래 목적을 잘 이룰 수 있도록 유도하였습니다.

슬랙에 올린 투표 시스템 완료 공지

모든 일이 끝나고 마지막으로 프로젝트 구성원을 모아 회고 미팅을 했는데요. 따뜻한 기억, 차가운 기억, 앞으로 고쳐야 할 점과 한 줄 평을 공유하며 다음 프로젝트에 배울 점을 남기는 시간이었습니다. 저는 회고 미팅을 통해서 다음 프로젝트에 어떻게 기여할 수 있을지 구체적인 방법을 터득할 수 있었고, 개발과 협업과 매니징이 유기적으로 조합되어 결과를 완성하는 과정을 복기할 수 있었습니다. 물론 이 글도 회고의 도움을 많이 받아서 쓰여졌구요!

유니크굿컴퍼니 노션의 회고 미팅 페이지

요약: 프로젝트 킥오프에서 회고 미팅까지의 여정

  1. 킥오프 미팅에서 공통된 목표의식과 현재까지의 진행상황을 공유하고 작업을 분배합니다.
  2. 며칠 동안 각 구성원이 맡은 파트를 간단히 작업하며 태스크를 쪼개고 일정을 가늠합니다.
  3. 일정 산정 미팅을 열어서 일정을 논의하고 결정사항을 확정합니다.
  4. 개발을 진행합니다. PM은 비정기적으로 구성원과 소통하며 업무 상황을 트래킹합니다.
  5. 개발이 끝나면 QA를 진행하고, 그 과정에서 발견된 버그를 픽스함과 더불어 놓친 엣지케이스를 고려합니다.
  6. 정해진 배포 일자가 되면 실서버에 배포하고 전사에 공유합니다.
  7. 회고 미팅을 열고 좋았던 점, 고쳐야 할 점과 앞으로 시도할 점을 논의하여 기록합니다.

누구나 프로젝트를 주도할 수 있는 업무 환경에서 일하고 싶으신가요? 저와 함께 컨텐츠의 미래를 주도할 플랫폼을 만들고 싶나요?

인터렉티브 스토리텔링 플랫폼 리얼월드를 만드는 유니크굿컴퍼니에 지원하세요! → 지원하기

작성자의 다른 글을 구경하고 싶다면? → 보러가기

투표 시스템 시리즈

1편. 문제 발굴에서 프로젝트 출범까지

2편. 프로젝트 킥오프에서 회고 미팅까지