지난 4월 10일, 우리 동네를 이끌 정치인을 뽑는 제22대 국회의원 선거가 있었죠. 32년 만에 최고 투표율을 기록했는데요. 지역 생활 커뮤니티 당근도 이웃들이 더 쉽고 편하게 투표할 수 있도록 선거 기간 동안 사용자 거주 지역 국회의원 후보자들의 정보를 한 눈에 볼 수 있는 ‘우리 동네 선거’ 서비스를 제공했어요. 그중에서도 우리 동네의 실시간 투표율이 전국 몇 위인지 볼 수 있는 ‘우리 동네 투표율 순위’가 커뮤니티에서 크게 화제가 되기도 했어요. 서로 우리 동네 등수를 비교하며 “더 많이 투표하자!”는 이야기가 돌았다고 해요.
당근의 우리 동네 선거 서비스는 과연 어떤 구성원이 모여 어떻게 만들어진 걸까요? 2024 총선 TF로 모여 한 달여간 멋지게 작업해준 구성원들을 만나 기획부터 협업까지 구체적인 이야기를 들어보았습니다.
우리 동네 선거 서비스 TF 구성원 Judy, Mirabel, Mayo
Mirabel: 안녕하세요. 선거 서비스 PM을 맡았던 Mirabel입니다. 부동산 팀의 PM으로 일하고 있어요.
Mayo: 저는 디자인 코어팀에서 프로덕트 디자이너 인턴으로 일하고 있는 Mayo예요. Notification Experience 팀에서도 겸직으로 근무하고 있어요. 반갑습니다.
Lea: 안녕하세요. 저는 프론트엔드 코어팀에서 프론트엔드 엔지니어로 일하고 있는 Lea예요. 일정상 인터뷰를 함께 하지 못해 서면 인터뷰로 참여하게 되었어요.
Judy: 저는 운영개발팀에서 서버 엔지니어로 일하고 있는 Judy라고 해요. 전사적으로 임팩트가 있는 프로젝트에 참여해 보고 싶어서 선거 TF에 지원했어요.
*이어지는 인터뷰에서 프로덕트 매니저는 PM, 프로덕트 디자이너는 PD, 백엔드와 프론트엔드 엔지니어는 각각 BE와 FE로 표기했어요.
Mirabel(PM): 당근은 올해로 5번째 선거 서비스로 ‘우리 동네 선거’ 서비스를 내놓고 있는데요. 기본적으로 사용자가 설정한 지역의 국회의원, 비례대표 국회의원, 구⋅시⋅군의 장 등 선거 종류별 후보자 정보와 공약, 투표소 위치를 볼 수 있는 서비스예요. 올해도 총선을 앞두고 TF를 만들자는 이야기가 나왔고, 각자 다른 팀에서 일하던 구성원들이 직접 지원하거나 다른 팀원들의 추천을 받아서 한 데 모이게 됐죠.
Mirabel(PM): 선거는 우리 동네의 미래를 선택하는 행사라고 생각해요. 특히 지역구 국회의원 선거는 우리 동네를 책임질 사람을 뽑는 거잖아요. 어떤 선택을 하느냐에 따라 동네의 미래가 바뀔 수 있죠. 이때 사람들이 더 나은 선택을 할 수 있게 돕는 것이 지역 생활 커뮤니티 플랫폼의 책임이자 역할이라고 봐요. 당근은 지역에 특화되어 있는 서비스이기 때문에 내 동네 후보자, 공약, 개표 상황과 당선 결과까지 높은 접근성으로 제공할 수 있어요. 올해는 특히 지역구별 실시간 투표율과 개표 현황, 당선자 정보까지 당근에서 확인할 수 있도록 했고요.
다른 플랫폼에서도 선거 정보를 보여주지만, 전국 단위로 쭉 보여주기 때문에 ‘우리 동네 후보자가 누구지?’ 하면 다시 검색을 해서 봐야 해요. 언론사에서 보여주는 선거 방송 같은 경우에도 ‘우리 동네 결과는 언제 나올까?’ 기다려야 하고요. 하지만 당근은 이미 내가 사는 동네 인증이 되어있고, 앱에 들어가자마자 버튼 하나만 누르면 우리 동네의 선거 정보가 바로 나오다 보니까 그런 부분에서 차별점이 있지 않았을까 해요.
Mirabel(PM): 이번 TF에서 가장 중요하게 생각한 건 ‘쉽고, 빠르고, 정확하게’ 우리 동네 선거 정보를 찾을 수 있도록 하자는 거였어요. 그리고 동시에 ‘당근이라서 더 잘할 수 있는 것들을 해보자’는 이야기도 나왔죠. 투표를 잘 이끌어내고 사용자를 더 재미있게 참여시킬 수 있는 여러 아이디어를 고민했는데요.
단순히 투표 인증을 하게 하는 것보다는 “선거관리위원회(선관위)에서 받은 지역 정보와 투표율 데이터를 잘 활용해서 투표를 독려할 순 없을까?” 고민하다가 지역별 투표율과 동네 순위를 생각하게 됐어요. 우리 동네의 실시간 투표율은 어디서도 보여주지 않잖아요. 주로 전국 투표율을 알려주죠. 전국의 253개 지역 중 우리 동네의 투표율이 어떻게 되는지, 순위는 몇 위인지는 당근이 잘 보여줄 수 있는 내용인 것 같더라고요. 그럼 사용자끼리, 동네끼리 경쟁 심리도 자극하여 투표 참여를 독려할 수 있지 않을까? 하면서 아이디어를 제안했어요.
Mayo(PD): 처음 스펙에서는 우리 동네 순위보다 ‘동네별 실시간 투표율’에 초점을 맞춰 보여주려고 했어요. 그런데 여러 디자인 시안을 만들다 보니, 당근이 잘 할 수 있는 건 ‘동네별 순위'를 강조한 화면이더라구요. 다행히도 이게 많은 사용자에게 인기를 끌며 입소문을 탔어요. 절대적인 투표율 숫자보다도 다른 지역구에 비해 우리 동네가 몇 위인지 보여주는 게 사용자들에게 더욱 흥미로운 요소가 됐던 것 같아요.
Judy(BE): 선거 당일에 친구가 오늘 휴일인데 뭐하냐고 물어봐서 선거 서비스를 만들고 있다고 답하니, “뭐야! 이걸 내 친구가 만들고 있었다니!” 하면서 놀라더라고요. 이렇게 지인들이 실시간으로 쓰고 있는 서비스를 만들었다는 사실에 정말 뿌듯했어요.
Lea(FE): 이번에 서비스를 배포하고 사용자 반응을 보며 다시금 체감하게 된 게 정말 많아요. ‘이런 포인트를 좋아하는구나’ 하고 당근 사용자에 대해 더 잘 알게 된 거죠. 사용자가 좋아하는 부분을 찾아내고 제품에 녹이는 건 정형화된 정답이 없는데, 이런 프로젝트를 통해 거듭 반복하고 발굴하며 사용자에 대한 이해를 높일 수 있어 좋았어요.
큰 인기를 끈 '우리 동네 투표율'을 개표 이후에도 볼 수 있도록 디자인을 변경하였어요.
Mayo(PD): 개표 직전, 한 3시간 전이었나요? 커뮤니티에서 우리 동네 투표 순위가 빠르게 바이럴되는 모습을 보면서 개표·당선 화면 디자인을 바꾸기로 결정했어요. 원래 우리 동네 순위는 본 투표가 끝나면 사라지는 정보였는데, 유저들의 반응이 너무 좋아서 계속 살려보자고 이야기가 나온 거죠.
Mirabel(PM): PM 입장에서 팀원들에게 감사했던 게, 사실 이렇게 배포 직전에 기획이 갑자기 바뀌면 실시간으로 다시 작업하고 반영해야 하니 압박감과 번거로움이 있을 수 있는데요. 모두가 ‘너무 좋아요’ 하고 다 같이 흥분해서 열심히 몰입하는 경험이 정말 좋았어요.
Mirabel(PM): 선거가 있던 날 당근 일일 사용자 DAU가 역대 최고치를 달성했어요. 그 주간도 마찬가지로 WAU 최고치를 찍었고요. 공휴일에는 아무래도 활성 사용자 수가 평일보다 조금 떨어지는 경향이 있는데요. 선거날은 공휴일이었음에도 지표가 이례적으로 확 튀었죠. ‘선거’라는 동네 기반 서비스를 사용자들이 즐거운 마음으로 이용했기 때문인 것 같아요. 정량적인 수치뿐만 아닌 정성적으로 파악한 성과도 있는데요, SNS에서 ‘당근 덕분에 편하게 투표했다’는 후기들이 올라오는 모습을 보며 실질적으로 도움이 됐다는 사실에 뿌듯하더라고요.
Judy(BE): 선거 서비스를 더 많은 사용자에게 알리기 위해 홈 피드 최상단에 진입점을 추가하거나 푸시 알림을 발송하기도 했는데요. 중고거래 홈 피드에 고정된 선거 서비스 진입점에서도 유의미한 전환 수를 기록했어요. 이 과정에서 마케팅 팀이나 알림 경험 팀 등 많은 팀에서 공휴일에 쉬는 날인데도 서로 나서서 계속 도와주시더라고요. 정말 감사했어요. 우리 동네 선거 서비스를 위해 TF뿐 아니라 당근 전체 구성원이 관심과 애정을 가지면서 함께 만들고 있다고 느껴졌어요.
Judy(BE): 안정적으로 느껴졌다니 다행이지만, 사실 작은 버그는 계속 있었어요. 투표나 개표 같은 경우에는 짧은 주기로 데이터가 제공되는데, 이걸 노트북 앞에서 대기하면서 매번 직접 손으로 업데이트할 순 없잖아요. 그래서 주기적으로 선관위 데이터를 다운로드 받아서 동네별로 필요한 데이터를 계산하는 부분을 자동화하는 크론잡을 만들었어요. 과정이 쉽진 않았지만, 그동안 잘 알지 못했던 기술을 적용해 보며 배운 게 정말 많아요.
Lea(FE): 정말 스펙타클했죠. 사용자에게 전달되는 끝단의 제품을 만드는 게 프론트엔드 엔지니어인데, 정해지지 않은 상황을 예측하고 대비하는 부분이 많이 어렵다고 느꼈어요. 그만큼 배운 게 많죠. 배포 당일에 처음 서버 데이터를 받아서 연동하는 경험이 쉽게 할 수 있는 경험은 아닌 것 같아요. 투표율, 개표율, 득표율 모두 휴먼 리소스가 들어가 예측할 수 없는 부분이 많거든요. 하지만 사용자들에게 그런 비하인드는 중요하지 않잖아요. 결국 잘 해내야 했어요. 사실 이 정신없는 상황에서 가장 힘들었던 분은 데이터를 실시간으로 받아 처리해야 했던 백엔드 엔지니어 Judy였을 것 같아요.
Judy(BE): 발견되는 버그를 그때그때 고쳐 나가는 수밖에 없었는데요. 그러면서도 많은 트래픽을 문제없이 받을 수 있었던 건, ‘우리 동네 선거’ 서비스만을 위해 서버를 따로 구성한 게 아니라 기존에 운영되던 중고거래 서버에 붙여서 나갔기 때문이었어요. 많은 트래픽을 처리할 수 있는 탄탄한 인프라가 있던 상황이라, 특별히 SRE팀과 추가로 보완해야 하는 부분은 없었죠. 이 과정에서 서버 쪽에서 가장 신경 썼던 것은 오히려 기존 중고거래 서비스에 영향을 미치지 않는 것이었어요. 선거 서비스 때문에 다른 서비스에 장애가 생기면 안 되니까요. 그 과정에서 설계에 대한 고민이 있을 때 중고거래실 엔지니어링 리드 Stark, 서버 리더 Zoo, 운영개발팀 리더 Django가 많이 도와주셨어요. 당근은 현재 일본, 미국, 캐나다 등에서도 서비스를 제공하고 있는데, 글로벌에는 선거 서비스가 제공되지 않으니 예외 처리도 잘 될 수 있게 꼼꼼하게 리뷰해 주었어요.
Mirabel(PM): 2주라는 짧은 기간 동안 모든 케이스들을 미리 생각하고 대비하기 어려웠어요. 그런데 여러 예측 불가 상황들에 빠르고 유연하게 대응을 했던 게 저희 TF의 강점이었던 것 같아요. 처음부터 완벽한 계획도 아니었고, 빈틈없는 구조를 잡고 들어간 것도 아니었죠. 하지만 작업하며 발견되는 여러 케이스들에 대해 굉장히 빠르게 대응하다 보니 결국에는 높은 완성도의 서비스를 만들 수 있었어요. 결과적으로 2주라는 짧은 시간과 적은 리소스를 투자한 것 대비 좋은 결과를 낼 수 있었고요.
Mirabe(PM): 이렇게 말하는 게 어떻게 들릴지 모르겠지만, 1~2주 동안의 실제 프로젝트 기간 때는 어떤 회의체나 프로세스는 없었어요. 개개인이 가진 뛰어난 역량과 몰입감이 9할이었죠. 한 가지 특징이 있었다면 자기의 역할은 자기가 온전히 맡아 진행하고 책임질 수 있게 한 거예요. 그래서인지 작업을 본격적으로 시작하면서는 거의 모두 자발적으로 24시간 교대 근무하듯 슬랙에 접속해 있었죠.
Lea(FE): 본격적인 작업을 했던 게 2주라면, 직전 한 달 정도는 지난 번 선거 TF를 진행했던 팀원들이 해주는 인수인계 미팅을 시작으로 킥오프 미팅과 아이데이션, 플래닝을 진행했는데요. 특히 이전 TF의 히스토리 덕분에 시작이 정말 좋았어요. 백엔드에서는 이번에 처음으로 선관위 데이터를 받는 등 새롭게 작업해야 하는 게 많았지만, 프론트엔드에서는 추가된 기능 외 기본적인 프로젝트 세팅에서 변동사항은 없었거든요. 그래서 이전 TF 프론트엔드 담당자가 작성한 코드를 많이 참고했어요. 의문을 품게 되는 코드에는 히스토리가 꼼꼼하게 쓰여 있어서, 특별한 도움 없이 프로젝트를 세팅할 수 있었어요. 또 지난 번 프로젝트에서 좋았던 점, 아쉬웠던 점, 다음에 시도해보면 좋을 점을 꼼꼼하게 회고한 기록을 다 공유해주셔서 더 잘 고민할 수 있었어요.
Mayo(PD): 정해진 회의 체계보단 모두가 ‘선거 서비스의 성공적인 배포’라는 목표를 가지고 몰두해 좋은 결과가 있었던 것 같아요. 물론 그 과정에서 서로의 역량을 믿고 존중하는 마음이 기본이 되었죠. 서로의 역할에 관여하지 않아도 잘 해낼 거란 믿음이 있었기에 내 일에만 몰두하면 충분히 서비스가 원활하게 흘러가겠구나 하는 확신을 가질 수 있었던 것 같아요.
사전투표·본투표·개표·당선으로 정해진 타임라인에 따라 실시간으로 달라지는 화면을 반영하기 위해 같이 밤도 새야 했는데요. 언제 서로가 필요할 지 모르니 ‘밥 먹고 올게요', ‘운동하고 올게요' 등 사소한 것까지 계속 공유했어요. 다들 워낙 몰입해서 그마저도 재밌게 느껴졌던 것 같아요.
Judy(BE): 4인의 싱크가 굉장히 잘 맞는다는 생각이 들었던 게, 저와 Mayo, Lea가 슬랙에서 이야기하고 있으면 Mirabel이 중간에 “저 타자가 느린가 봐요. 치고 있는데 다른 분들이 다 제가 하고 싶은 말들을 이미 치셔서 아무 말도 못 했어요.”라고 말한 적도 있어요. 그 정도로 서로 활발하게 소통하고, 의견이 잘 맞은 팀이었다는 생각이 들어요.
Judy(BE): 오히려 ‘연차가 더 많아지기 전에 시도를 해봐야 하지 않을까? 지금 아니면 못 해보지 않을까?’ 싶었어요. 저는 평소에 운영개발팀에서 사용자랑 직접 닿는 부분보다는 뒤에서 이뤄지는 작업을 많이 하는데요. 그래서 이번 기회에 사용자랑 맞닿는 서비스를 해보면 재밌겠다는 생각이 있었어요. 이런 큰 프로젝트에 참여할 수 있다는 점에서도 두려움보다는 설렘이 더 크게 다가왔어요.
Mirabel(PM): 주니어 입장에서 큰 임팩트를 만들어 낼 수 있는 프로젝트를 직접 리딩하고 결정할 수 있다는 게 정말 뜻깊고 좋았어요. 이렇게까지 큰 오너십을 펼칠 수 있어 감사했고요. 당근이 주니어를 신뢰하고 많은 기회를 주는 곳이라는 걸 느끼기도 했어요. 특히 총선 TF 4명뿐만 아니라, 회사 내 다른 구성원 분들도 ‘사용자에게 더 좋은 서비스를 제공하자’는 가치를 공유하며 자기 일처럼 관심을 가져주신 게 기억에 많이 남아요. 아무래도 선거라는 민감한 주제의 프로젝트다 보니, 대외협력팀이나 커뮤니케이션팀이 중간중간 꼼꼼하게 검토하면서 대외 소통이 필요한 부분을 정말 적극적으로 도와주셨어요.
Mayo(PD): 프로젝트에서 디자인을 리딩하는 경험은 처음이라 제 선택에 대한 부담감과 책임감도 있었어요. 예를 들면, 선거 서비스 내 컬러 사용의 경우 처음에 혼자 고민이 많았어요. 특정 정당을 상징하거나 떠올리는 컬러를 피해야 했는데, 그렇다고 모든 버튼이나 텍스트 컬러를 무채색으로 사용하는 것은 사용성에 있어 바람직하진 않다고 판단했죠. 이후 많은 디자이너분들께 조언을 구했고 특히 디자인 시스템팀 Yeni가 많은 도움을 주었어요. 결과적으로 기존 당근의 메인 컬러인 주황색 대신 중립적인 성격의 무채색을 사용하기로 했고, 결과를 나타내는 영역에서만 각 정당 컬러를 일부 사용했어요. 무채색으로 변경하는 과정에서는 회색을 주로 사용했는데, 이때 ‘비활성화’된 버튼이라는 느낌이 들지 않도록 많은 테스트를 했던 기억도 나요. 당근 구성원들의 도움과 지지가 없었다면 불가능했을 거라고 생각해요. 프로젝트를 믿고 맡겨준 디자인 리드, 동료 구성원들에게 좋은 결과를 보여 주고 싶었는데 TF 팀원 들 덕분에 잘 달성한 것 같아 기쁘고 뿌듯해요.
Lea(FE): 두려움보다도 즐겁겠다는 기대감, 잘하고 싶다는 욕심이 컸어요. 일하는 날, 쉬는 날, 개의치 않고 서비스 런칭에만 집중했어요. ‘이게 내 일이다’ 생각하면 쉬는 날 그런 게 없잖아요. 기간이 정해진 프로젝트이고, 넉넉하지 않은 시간에 비해 저희가 욕심내는 부분이 많았기 때문에 욕심과 자존심을 원동력 삼아 서비스에만 집중했던 것 같아요.
Mirabel(PM): 조금 더 이야기를 보태면, 최대한 잘 해내고 싶다는 생각이 있었어요. 핑계 대고 싶지 않았거든요. 기간이 짧아서, 주니어여서, 포털이 아니라서, 못했다는 변명을 하고 싶지 않았어요. 사용자에게 그런 핑계를 댈 수 없잖아요. 그냥 한 눈에 봐도 유용하고 좋은 서비스라는 걸 바로 느낄 수 있는 서비스를 출시하고자 했어요. 많은 수의 사용자를 대상으로 하는 프로젝트를 맡은 김에 최대한 큰 임팩트를 내려 했고요. TF 팀한테 받는 동기부여도 있었어요. 다들 너무 열심히 하셨거든요. ‘그냥 이건 이 정도로 마무리하시죠’ 하는 사람이 한 명이라도 있었다면 이렇게까지 못했을 것 같아요. 다들 더 나은 서비스를 만들고자 하는 열정으로 밤새가면서 정말 열심히 했어요. 다 같이 ‘이건 우리 자존심이 걸린 문제다’ 라면서 불타올라서 열심히 하니까 저도 막 불타올랐던 것 같아요.
Lea(FE): 저... 진짜 빈말 아니고 정말 재밌었어요. 사실 저는 이번 프로젝트를 마지막으로 퇴사를 하게 됐는데, 이렇게 재미있게 일한 기억을 마지막으로 나올 수 있어서 정말 감사해요. 저는 하고 싶은 것도 많고, 욕심도 열정도 많은 사람이라, 처음 시작할 땐 프로젝트의 규모를 가늠하지 못하고 쉽게 도전했던 것 같아요. 그런데 결과적으로 짧은 시간 많은 사람이 사용하는 서비스를 만들게 됐죠. 이번 TF는 각 직군에 한 명씩 배치된 소규모의 TF여서, 한 명이라도 제 역할을 다하지 않으면 프로젝트가 진행되지 않았을 텐데요. 모두의 책임감이 빛을 발했다고 생각해요.
Mayo(PD): 저도 정말 재밌었어요. 체력적으로 힘들기도 했지만 이번 프로젝트를 하면서 디자이너를 처음 시작했을 때의 두근거림이 다시 느껴지더라구요. ‘내가 왜 이 일을 시작했는지’ 부터 ‘역시 나는 디자인을 할 때 제일 재밌고 행복하구나’하는 생각을 많이 했어요. 새로운 아이디어가 나올 때마다 ‘왜 이렇게 일을 키워’라고 생각하지 않고, 다른 아이디어 더 없냐고 신나게 이야기하는 TF 팀원들 덕분이 커요.
Mirabel(PM): 그동안 당근에서 한 팀에서만 일해오다 보니 ‘내 경험이 이 팀으로 한정되면 어쩌지’ 하는 걱정과 고민이 있었어요. ‘내가 진짜 잘하는 PM일까, 현재의 팀이나 도메인 내에서만 유효한 PM으로 성장하고 있는 것은 아닐까?’ 같은 우려였죠. 그런데 이번 TF를 하면서 지금 제가 속한 팀이랑은 완전히 다른 성격의 팀원들을 만나고, 여기서 저만의 리더십이 나 일하는 방법을 생각해보고 경험할 수 있었어요. 그러면서 스스로 어떤 특징을 지닌 PM인지 객관적으로 파악하게 됐고, 앞으로 제가 될 수 있는 PM으로서의 영역도 확장된 느낌이에요. PM으로서 저만의 색을 찾고 있는 과정에 있다고 생각하는데, 이번 TF 경험이 큰 도움이 된 것 같아요.
Judy(BE): 저는 기존 팀에 디자이너랑 프론트엔드 개발자가 없어서, 이렇게 서비스를 만드는 모든 직군과 밀도 있게 일한 게 이번이 처음이었는데요. 이 협업 자체가 소중하고 의미 있었다고 느껴져요. 데이터를 실시간으로 받아 처리하면서 기술적으로도 새롭게 시도하고 배운 것도 많고요. 이번 기회에 배운 것들을 앞으로 팀에서 일하면서도 잘 쓸 수 있을 것 같아요!
Mayo(PD): 짧은 시간에 많은 내용을 담아내야 했던 만큼 우선순위를 판단하는 능력을 기를 수 있었어요. 목적조직의 디자이너로서 현명한 판단을 하기 위해서는 기획부터 배포, 그리고 사용자 피드백까지의 사이클을 많이 경험해보는 것이 중요하다고 생각하는데요. 이번 TF에서 해당 경험을 깊고 빠르게 해볼 수 있었어요. 이제 당근을 떠나게 되었는데 마지막을 총선 TF로 장식할 수 있어 영광이었습니다.
Lea(FE): 저는 지금까지 당근에서 총 4개의 TF를 경험했는데요. 그만큼 많은 기회를 얻었다는 생각이 들어요. 당근을 떠나며 아쉬움을 남기고 싶지 않았는데요. 이번 TF를 통해 하고 싶었던 것과 해보지 못한 것을 이 작은 서비스에서 다 풀고, 좋은 분들과 일하며 마지막까지 재밌게 놀다 가서 행복합니다.
당신 근처의 지역 생활 커뮤니티