거대한 어선에 오르다
회의실 문이 닫힌 후, 나와 김현승은 한동안 그 자리에 멍하니 서 있었다. 우리는 빙하를 부수지 못했다. 대신, 우리는 그 거대한 빙하의 항로를 바꾸는 데 성공한 것이다. 사무실로 돌아오자, 팀원들은 약속이나 한 듯 하던 일을 멈추고 우리를 바라보았다. 그들의 시선 속에는 더 이상 이전의 불안이나 호기심이 없었다. 대신, 거대한 파도와 싸우고 돌아온 두 명의 뱃사람을 향한, 낯선 종류의 경외감이 서려 있었다.
우리의 지위는 하룻밤 사이에 바뀌어 있었다. 차수진 팀장은 약속대로 움직였다. 그녀는 우리 두 사람을 ‘신규 UX 개선 TF’의 공동 책임자로 공식 임명했고, 팀의 모든 자원을 우리에게 전폭적으로 지원했다. 우리는 더 이상 탕비실에 숨어 비밀 작전을 펼칠 필요가 없었다. 대신, 사무실 가장 좋은 자리에 우리만의 작은 ‘작전실’이 생겼다.
하지만 그것은 결코 안락한 승선이 아니었다. 차수진이라는 선장은, 우리가 상상했던 것보다 훨씬 더 혹독하고 냉정했다.
“두 사람, 이제부터 이 배의 항해사는 당신들이야. 하지만 최종 키를 쥔 선장은 나라는 걸 잊지 마.”
새로운 TF의 첫 회의에서 그녀가 선언했다. 나는 그녀가 처음으로 우리에게 반말을 하고 있다는 사실을 깨달았다. 이전까지 지켜왔던 사무적인 존댓말의 벽을 허문 것이다. 하지만 그것은 결코 친근함의 표시가 아니었다. 오히려 더 서늘하고 절대적인, 완벽한 상하 관계를 규정하는 선언처럼 들렸다. 우리는 이제 그녀의 배에 올라탄, 그녀의 선원이 된 것이다.
“지난번의 그 6.2%라는 숫자는 잊어. 그건 동네 낚시터에서 낚은 피라미 한 마리에 불과해. 우리는 지금부터 태평향 한가운데로 나갈 거야. 그곳에서 월척을 낚을 수 있다는 걸 증명해야 해.”
그녀는 우리에게 전사의 모든 사용자 데이터를 열람할 수 있는 최고 등급의 접근 권한을 부여했다. 김현승의 눈이 반짝였다. 그것은 모든 개발자가 꿈꾸는, 가장 강력한 무기였다. 하지만 그녀는 동시에, 우리의 모든 행동을 실시간으로 감시할 수 있는 촘촘한 보고 체계를 설치했다.
“두 사람이 낚을 것은 단 하나, ‘유저 리텐션 5% 상승’이라는 이름의 고래야. 그걸 낚기 전까지는, 이 배에서 내릴 생각은 꿈도 꾸지 마.”
우리는 거대한 어선에 올라탔지만, 동시에 그 배의 가장 험한 노 젓는 자리가 우리에게 주어진 셈이었다.
첫 번째 과제는, 우리의 ‘하이브리드 채비’를 실제 서비스에 적용하여 대규모 A/B 테스트를 설계하는 것이었다. 김현승은 신이 난 듯했다. 그는 수백만 명의 사용자를 대상으로, 그의 기술을 마음껏 펼칠 수 있다는 사실에 흥분했다.
“박대리님, 이건 차원이 다른 게임입니다. 수십 명을 대상으로 한 소꿉놀이가 아니에요. 우리의 코드가 수백만 명의 행동에 어떤 파문을 일으키는지, 실시간으로 볼 수 있게 된 겁니다.”
그는 밤을 새워가며, 서버에 과부하를 주지 않으면서도 사용자들의 행동 패턴을 정교하게 추적할 수 있는 시스템 아키텍처를 설계했다. 그의 모습은 더 이상 빙하기에 갇힌 야수가 아니었다. 드넓은 바다를 만난 범고래처럼, 자유롭게 유영하고 있었다.
하지만 나는 그와 달리, 깊은 고민에 빠졌다. 우리의 작은 ‘비밀 낚시터’에서 이루어졌던 진솔한 소통은, 이제 수백만 명을 대상으로 하는 거대한 실험이 되어 있었다. 나는 과연 그들의 ‘다락방’을 지켜줄 수 있을까. 우리의 ‘윗바늘’이, 그들의 자유를 침해하는 거대한 감시의 눈이 되어버리는 것은 아닐까.
“너무 걱정하지 마세요.”
내 고민을 눈치챈 듯, 김현승이 말했다.
“우리는 그들의 일기장을 훔쳐보는 게 아니잖아요. 그저, 그들이 어떤 책을 꺼내 읽는지를 멀리서 지켜볼 뿐입니다. 그 사람이 로맨스 소설을 좋아하는지, 추리 소설을 좋아하는지를 알아야, 다음에 더 좋은 책을 추천해 줄 수 있는 거니까요.”
그의 말은 명쾌했다. 하지만 나는 여전히 마음 한편이 무거웠다.
그 주 주말, 나는 오랜만에 아버지와 함께 병원 옥상에 올랐다. 아버지는 이제 휠체어에 앉아 혼자서 팔을 들어 올릴 수 있을 정도로 회복되었다. 우리는 말없이, 저 멀리 보이는 도시의 스카이라인을 바라보았다.
“아버지, 제가 요즘 아주 큰 배를 타게 됐어요.”
나는 나직이 입을 열었다.
“선장님이 아주 무서운 분이라, 매일매일 파도랑 싸우는 기분입니다. 제가 과연 길을 잃지 않고, 항해를 잘 마칠 수 있을지 모르겠어요.”
아버지는 아무 말 없이, 마비되지 않은 왼손으로 내 손을 가만히 잡았다. 그리고는 아주 천천히, 힘겹게 입을 열었다.
“…큰… 배는… 멀리… 본다…”
나는 숨을 멈췄다. 아버지의 어눌한 몇 마디 단어가, 내 모든 고민을 꿰뚫고 있었다. 나는 지금까지 너무 내 발밑의 파도만 보고 있었다. 내가 하는 일이 혹시 잘못된 것은 아닐까, 내가 누군가에게 상처를 주는 것은 아닐까, 하는 두려움. 하지만 아버지는 내게 더 멀리 보라고 말하고 있었다. 이 항해의 끝에 우리가 마주하게 될 새로운 수평선을.
나는 깨달았다. 나는 더 이상 나 혼자만의 낚시를 하고 있는 것이 아니었다. 나는 거대한 어선의 항해사였다. 나의 역할은 모든 파도를 피하는 것이 아니라, 때로는 거친 파도를 정면으로 돌파해서라도, 이 배가 가야 할 목적지로 모두를 안전하게 이끄는 것이었다.
월요일 아침, 나는 이전보다 훨씬 더 단단한 눈빛으로 작전실에 들어섰다. 그리고 김현승에게 말했다.
“김대리님. 돛을 올립시다. 우리가 가야 할 곳은, 저 수평선 너머입니다.”
우리의 작은 ‘작전실’은 더 이상 우리만의 공간이 아니었다. 거대한 모니터가 벽면을 가득 채웠고, 그 위에는 수백만 명의 사용자들이 만들어내는 데이터의 물결이 실시간으로 넘실거렸다. 접속자 수, 페이지 체류 시간, 기능 사용 빈도… 숫자들이 폭포수처럼 쏟아져 내렸다. 이전의 비밀스러운 낚시가 고요한 저수지에서의 찌낚시였다면, 이제 우리는 태평양 한가운데, 거대한 고래를 잡기 위해 나선 어선의 조타실에 앉아 있었다.
“A/B 테스트, 오늘 10시부로 시작합니다.”
김현승이 선언했다. 그의 눈은 흥분으로 빛나고 있었다. 그는 수백만 명의 사용자를 대상으로, 그의 기술을 마음껏 펼칠 수 있다는 사실에 전율하는 듯했다. 그는 지난 며칠간, 서버에 과부하를 주지 않으면서도 사용자들의 행동 패턴을 정교하게 추적할 수 있는 완벽한 시스템 아키텍처를 설계했다. 그의 모습은 더 이상 빙하기에 갇힌 야수가 아니었다. 드넓은 바다를 만난 범고래처럼, 자유롭게 유영하고 있었다.
“A그룹 100만 명, B그룹 100만 명. 이제부터 이 숫자들은 단순한 데이터가 아니라, 살아있는 증언이 될 겁니다.”
정확히 오전 10시, 테스트가 시작되었다. 모니터 위로 새로운 그래프들이 그려지기 시작했다. 나는 마른침을 삼키며 화면을 응시했다. 우리의 ‘하이브리드 채비’가 과연 이 거대한 바다에서도 통할 것인가. 수백만 명의 익명 사용자들. 나는 그들의 ‘다락방’을 지켜줄 수 있을까. 우리의 ‘윗바늘’이, 그들의 자유를 침해하는 거대한 감시의 눈이 되어버리는 것은 아닐까. 아버지의 조언을 떠올리며 마음을 다잡았지만, 눈앞에서 실시간으로 요동치는 거대한 데이터의 파도 앞에서 나는 다시 길을 잃을 것만 같았다.
바로 그때, 작전실 문이 열리고 차수진 팀장이 들어섰다. 그녀는 우리에게 눈길도 주지 않은 채, 벽면의 메인 모니터 앞으로 다가갔다. 그녀의 날카로운 시선이 이제 막 그려지기 시작한 그래프의 한 지점에 꽂혔다.
“설명해 봐.”
그녀가 가리킨 것은, B그룹, 즉 우리의 ‘다락방’ 모델이 적용된 사용자 그룹의 초기 이탈률 그래프였다. 그래프는 테스트 시작과 동시에, A그룹보다 눈에 띄게 높은 이탈률을 보이며 아래로 꺾여 있었다.
“이 초기 이탈률, 어떻게 해석해야 하지? 당신들의 감성적인 다락방이, 사용자들에게는 그저 ‘불편하고 낯선 공간’일 뿐이라는 신호인가?”
그녀의 목소리는 얼음장처럼 차가웠다. 김현승이 당황하며 앞으로 나섰다.
“아닙니다, 팀장님. 그건… 새로운 UX에 대한 일시적인 콜드 스타트 문제입니다. 사용자들이 적응할 시간이…”
“변명 말고, 데이터로 말해.”
차수진은 그의 말을 잘랐다. 바로 그때, 내가 입을 열었다.
“팀장님. 낯선 낚시터에 도착한 물고기는, 처음부터 미끼를 물지 않습니다.”
모든 시선이 내게로 쏠렸다.
“그들은 경계하며, 새로운 공간을 탐색하는 시간을 갖습니다. 지금 저 그래프의 하락은, 사용자들이 우리 서비스를 ‘이탈’하는 신호가 아닙니다. 오히려, 그들이 이곳이 어떤 곳인지 알아보기 위해 ‘탐색’을 시작했다는 신호입니다. 그들은 기능을 수행하는 대신, 이곳이 과연 내가 머물러도 될 안전한 공간인지를 확인하고 있는 겁니다.”
“재미있는 비유네.”
그녀가 비꼬는 듯한 말투로 말했다.
“하지만 비유는 보고서에 쓸 수 없어. 그걸 어떻게 증명할 거지?”
“시간입니다.”
나는 그녀의 눈을 피하지 않고 말했다.
“단순 클릭률이나 초기 이탈률이 아니라, 그들이 이 공간에 얼마나 ‘오래’ 머무르는지, 그리고 다시 돌아왔을 때 어떤 ‘깊이’의 행동을 보이는지를 보면 알 수 있습니다. 저희에게 하루만, 아니 반나절만 시간을 주십시오. 이 그래프의 무늬가 어떻게 바뀌는지를 보여드리겠습니다.”
그것은 도박이었다. 하지만 나는 내 감각을, 그리고 김민지 씨의 목소리를 믿었다. 차수진은 잠시 나를 꿰뚫어보는 듯한 눈으로 바라보더니, 이내 아무 말 없이 작전실을 나갔다.
그 후 몇 시간은 지옥과도 같았다. B그룹의 이탈률 그래프는 좀처럼 회복될 기미를 보이지 않았다. 김현승조차 초조한 얼굴로 모니터만 바라보고 있었다. 나는 낚싯줄을 던져놓고, 폭풍우가 지나가기만을 기다리는 낚시꾼처럼, 그저 묵묵히 시간을 견뎠다.
그리고 마침내, 점심시간이 지날 무렵 변화가 시작되었다. B그룹의 이탈률은 여전히 높았지만, 완전히 다른 그래프 하나가 서서히 고개를 들기 시작했다. ‘평균 세션 유지 시간’ 그래프였다. A그룹의 사용자들은 짧게, 여러 번 방문하는 패턴을 보인 반면, B그룹의 사용자들은 한번 들어오면 아주 오랜 시간 머물렀다. 그들은 탐색을 끝내고, 그 공간을 자신들의 ‘다락방’으로 받아들이기 시작한 것이다.
“……왔습니다.”
김현승이 나직이 읊조렸다. 그의 목소리는 떨리고 있었다. 나는 대답 대신, 조용히 고개를 끄덕였다. 우리는 거친 파도 속에서, 우리가 가야 할 방향을 알려주는 첫 번째 등대 불빛을 발견한 것이다. 등대 불빛은 희미했지만, 분명했다. 나와 김현승은 ‘평균 세션 유지 시간’이라는 이름의 그 작은 불빛에 의지해, 며칠간 밤낮없이 데이터의 바다를 항해했다. 우리는 잠자는 시간도 잊은 채, B그룹 사용자들이 남긴 수백만 개의 행동 로그를 파고들었다. 김현승은 데이터를 시각화하는 대시보드를 구축했고, 나는 그 숫자들이 말하지 못하는 이야기들을 찾아 헤맸다.
우리의 작전실은 거대한 탐사선이 되어가고 있었다. 김현승이 화면에 새로운 그래프를 띄울 때마다, 우리는 환호하고 또 좌절했다.
“박대리님, 이것 좀 보세요! B그룹 사용자들의 ‘콘텐츠 생성 수’가 A그룹에 비해 압도적으로 높습니다. 평균 12.7개 대 1.3개. 게임이 안 되네요.”
“하지만 김대리님, ‘기능 공유 횟수’는 오히려 A그룹이 더 높아요. B그룹은 자신들의 다락방을 남들에게 보여주고 싶어 하지 않는다는 뜻입니다.”
우리는 수많은 지표 속에서 길을 잃고 있었다. 어떤 지표는 우리의 가설을 지지했고, 어떤 지표는 정반대의 이야기를 하고 있었다. 우리는 고래를 잡으러 나섰지만, 눈앞에는 수백 종류의 알 수 없는 물고기 떼만 어지럽게 흩어지고 있었다.
수요일 오후, 차수진 팀장이 유령처럼 작전실에 나타났다. 그녀는 우리가 만들어낸 화려한 그래프들을 훑어보더니, 단 하나의 질문을 던졌다.
“그래서, 리텐션은?”
그녀의 질문에, 김현승이 애써 준비한 ‘재방문율’ 그래프를 띄웠다. 그래프는 실망스러웠다. B그룹의 재방문율은 A그룹에 비해 아주 근소하게 높았지만, 우리가 약속했던 5%에는 턱없이 부족한, 통계적 오차 범위 수준의 미미한 차이였다.
“체류 시간은 긴데, 다시 돌아오지는 않는다… 이건 뭘 의미하지?”
그녀의 목소리에는 차가운 조소가 섞여 있었다.
“당신들의 아늑한 다락방이, 그저 하루 재미있게 놀고 버리는 일회용 장난감이라는 뜻인가? 우리는 ‘단골손님’을 만드는 방법을 찾아오라고 했지, ‘철새 관광객’을 모으라고 한 게 아닐 텐데.”
그녀의 비수는 정확히 우리의 심장을 꿰뚫었다. 우리는 반박할 수 없었다. ‘오래 머무른다’는 사실만으로는, 그들이 다시 돌아올 것이라는 보장이 되지 못했다.
그녀가 나가고, 작전실에는 무거운 침묵이 내려앉았다. 김현승은 처음으로 패배를 직감한 듯, 마른세수를 하며 한숨을 내쉬었다.
“결국, 여기까지인가 봅니다. 감성만으로는 숫자를 이길 수 없네요.”
나는 아무 말 없이, 모니터에 떠 있는 B그룹 사용자들의 행동 로그를 스크롤하고 있었다. ‘콘텐츠 생성’, ‘배경화면 변경’, ‘스티커 부착’… 무의미해 보이는 행동의 나열. 하지만 나는 그 속에서 무언가 이상한 점을 발견했다. 특정 사용자들이, 마치 약속이라도 한 듯 일정한 주기로 비슷한 행동을 반복하고 있었다.
“김대리님, 혹시… 사용자별로 로그를 시간 순서대로 다시 정렬해 볼 수 있습니까? 전체 평균 데이터 말고요.”
내 요청에, 김현승은 의아한 표정을 지으면서도 빠르게 데이터를 재가공하기 시작했다. 잠시 후, 우리 눈앞에 놀라운 광경이 펼쳐졌다. 사용자들의 행동에는 명확한 ‘리듬’이 있었다. 어떤 사용자는 매주 일요일 밤 11시가 되면 어김없이 접속해 ‘주간 계획’이라는 이름의 콘텐츠를 생성했다. 또 다른 사용자는 금요일 저녁마다 들어와, ‘감정 쓰레기통’이라는 폴더에 무언가를 쏟아내고 있었다. 그들은 정해진 시간에, 정해진 목적으로, 마치 썰물과 밀물처럼 우리 서비스에 들어왔다 나가기를 반복하고 있었다.
“이건…”
김현승의 목소리가 떨리고 있었다.
“이건 단순한 재방문이 아니에요. 이건… ‘회귀’입니다. 연어가 자기가 태어난 강으로 돌아오듯이, 이들은 자신의 삶의 리듬에 맞춰 우리 서비스를 찾아오고 있었어요.”
나는 깨달았다. 우리는 지금까지 ‘얼마나 자주 오는가’라는 빈도에만 집착했다. 하지만 중요한 것은 빈도가 아니라, 그들의 방문이 그들의 삶과 얼마나 깊이 연결되어 있는가 하는 ‘규칙성’이었다. 이것이야말로 진짜 ‘애착’의 증거였다.
“김대리님. 우리가 틀렸습니다. 우리는 모든 물고기가 매일 같은 시간에 밥을 먹을 거라고 착각했어요. 하지만 야생의 물고기들은 저마다 다른 활동 시간과 사냥 패턴을 가지고 있습니다. 지금부터 우리는, 이들의 ‘물때’를 역으로 추적해야 합니다.”
우리는 다시 희망을 찾았다. 우리는 밤을 새워, 사용자들의 행동 로그에서 그들만의 ‘파도의 리듬’을 추출해내기 시작했다. 그리고 그 리듬에 맞춰, 우리가 먼저 그들에게 말을 거는 새로운 시스템을 설계했다. 일요일 밤 10시 50분, ‘주간 계획’을 세우던 사용자에게는 ‘새로운 한 주를 준비할 시간이네요. 더 멋진 템플릿을 추천해 드릴까요?’ 하고 먼저 말을 거는 것.
금요일 아침, 우리는 차수진 팀장의 호출 없이 먼저 그녀를 찾아갔다. 그리고 새로운 그래프 하나를 그녀의 모니터에 띄웠다.
“팀장님. 저희가 찾은 파도의 리듬입니다.”
그래프 위에는, 요일별, 시간대별로 각기 다른 색깔의 파도들이 규칙적으로 넘실거리고 있었다. 그것은 더 이상 혼돈의 데이터가 아니었다. 수백만 명이 연주하는, 거대하고 아름다운 교향곡이었다.