첫 5분의 마찰 — 입력은 줄이고, 다음 행동은 보이게
신규가 머물지 않고 떠나는 시기에 손댄 작은 일들 — 랜덤 닉네임, 서베이 직후 ‘이게 뭘 의미하는지’ 미리보기, 그리고 빈 화면에서 깜빡이는 +.
첫 5분의 마찰 — 입력은 줄이고, 다음 행동은 보이게
요즘 액티브 유저 그래프가 내려가고 있습니다. 인디 메이커가 거치는 익숙한 골짜기지만, 막상 본인이 그 골짜기에 들어가면 전혀 익숙하지 않습니다.
원인은 보통 두 갈래로 나뉩니다 — 모객이 약하거나, 들어왔는데 머물지 않거나. 구멍 난 양동이에 더 부어 봐야 같은 비율로 새는 법이라, 모객보다 retention 쪽을 먼저 손보기로 했습니다. 사용자가 가입 직후 처음 마주치는 5분에 어떤 마찰이 있는지부터 짚어 보았습니다.
세 가지가 보였습니다.
1. 닉네임 입력 — 빈 칸을 마주하는 부담
가입 직후 사용자는 닉네임 입력 화면을 만납니다. 빈 입력칸 하나에 “닉네임을 설정해 주세요”. 별것 아닌 것 같지만, 생각해 본 적 없는 입력을 강제로 받는 자리입니다. Apple 로그인이라면 본인 이름이 자동으로 들어와 있지만, Google이나 이메일 가입자에겐 빈 칸만 남습니다.
빈 칸이 사용자에게 주는 부담은 의외로 큽니다. “뭘 적어야 하지? 본명? 별명? 실명?” 잠깐의 막힘이 *“나중에 하지 뭐”*로 이어지고, 이 화면에서 떨어지는 사람이 생각보다 많았습니다.
그래서 이 화면에서 빈 칸을 없앴습니다. 진입하면 Brave Fox 같은 영문 형용사+명사 조합이 이미 채워져 있고, 사용자는 그대로 *“다음”*만 누르면 됩니다. 마음에 안 들면 우측의 새로고침 아이콘으로 다른 조합을 받을 수도 있고, 직접 수정해도 됩니다. 핵심은 빈 칸으로 사용자에게 부담을 떠넘기지 않는 것.
처음엔 형용사 100개 × 명사 100개로 만 개 조합이었는데, 같은 닉네임을 본 적이 있다고 하면 인상이 약해질 것 같아 각 300개씩으로 늘렸습니다. 이제 9만 개 조합. 통계적으로는 여전히 충돌이 일어나지만 (생일 문제), 닉네임은 식별자가 아니라 표시용이고 어차피 중복이 허용되니 충분합니다.
단어 풀은 모바일과 데스크톱 양쪽에서 같이 쓰여야 했습니다. 모바일에만 있던 유틸을 @fecit/shared/src/random/nickname.ts로 옮기고 양쪽에서 import하게 했습니다. 같은 단어 풀을 쓰니 두 플랫폼에서 받는 *“첫 이름”*의 결도 일관됩니다.
2. 서베이 답변 직후 — “이게 뭘 의미하는지”를 즉시 보여주기
다음 화면은 라이프스타일 서베이입니다. 세 페이지에 걸쳐 세 질문 — 어떤 일을 다루나요? 어떤 작업 방식을 선호하나요? 결과 지향? 과정 지향?
답변마다 Fecit이 내부적으로 기본 설정을 다르게 잡아주는데, 이 사실이 사용자에겐 안 보였습니다. 답을 골라도 *“그래서 뭐가 어떻게 된다는 거지?”*라는 의문만 남기 쉬운 구조였습니다. 마치 설문조사 같은 — 그러나 사용자는 이미 본인의 시간을 들인 상태고, 그 시간이 결과로 돌아오지 않으면 “이건 뭐 하는 앱인데 이렇게 묻기만 하지?” 의심이 듭니다.
그래서 답을 고르면 그 답에 맞춰 Fecit에서 너에게 어떤 기능들이 더 중요할지 미리보기 리스트가 펼쳐지게 했습니다.
도전적인 일을 다룬다 → 분석 (목표·기대·장애), 단계로 쪼개기, 사전 준비, 회고, 활동 분석, 프로젝트, 난이도 표시
일상적인 일을 다룬다 → 일일·주간 루틴, 꾸준함 streak, 활동 히트맵, 할 일 template, 시작 시간 알림, 업적 모으기
이 미리보기는 서베이를 *“너에 대한 정보를 받는 절차”*에서 *“너에게 맞춰 도구를 준비하는 자리”*로 결을 바꿔 줍니다. 같은 질문에 같은 답을 해도, 그 직후의 화면이 다릅니다.
만들면서 부수적으로 라벨 표기 문제 두 개를 발견했습니다.
첫째, 미리보기 리스트에 “의도 정리” / *“Intention”*이 들어 있는데, 다른 화면에서는 같은 섹션이 “분석” / *“Analysis”*로 노출되고 있었습니다. 코드 내부 명명은 intention이지만 i18n 값에서 *“Analysis”*로 번역되어 노출되는 패턴이었는데, 이 미리보기 텍스트는 영어 키와 한글 값이 혼재되어 *“의도 정리”*가 그대로 나오고 있었던 것입니다.
해결은 간단합니다 — 사용자에게 노출되는 텍스트만 *“Analysis / 분석”*으로 통일하고, 코드 내부 intention 명명은 그대로 둡니다. 저는 처음엔 코드까지 다 바꿔야 한다고 생각했지만, 실제로 사용자에게 보이지 않는 식별자를 굳이 손댈 필요는 없었습니다.
둘째, 같은 미리보기에 “Daily Review” / *“Weekly Review”*가 별도 항목으로 들어 있고, *“Daily routines”*도 따로 나와 있었습니다. 이건 단순히 “일일·주간 회고” / *“일일·주간 루틴”*으로 묶었습니다. 어차피 사용자에겐 한 결의 기능인데 두 줄로 차지할 이유가 없었습니다.
3. 빈 화면에서 — “여기 누르면 시작이에요”
가입 → 닉네임 → 서베이 → 메인 화면. 신규가 마지막으로 도착하는 곳은 텅 빈 Tasks 탭입니다. “오늘 할 일이 없습니다” 같은 텍스트도 없고, 그저 빈 리스트와 우하단의 작은 + 버튼.
해야 할 다음 행동이 명확하지 않으면 사용자는 멈춥니다. 그리고 멈추면 떠납니다.
가장 약한 손길로 시작했습니다 — FAB(우하단 + 버튼) 주위에 ring이 부드럽게 퍼져 나가는 애니메이션. 두 개의 ring이 300ms 간격으로 연속 퍼지며, 6초마다 한 번. *“여기 있어요”*를 조심스럽게 알려주는 신호.
조건이 중요합니다. task를 한 번도 만든 적 없는 사용자에게만 보입니다. 첫 task를 만드는 순간 서버 카운터가 증가하고, 클라이언트 atom도 즉시 갱신되어 ring은 영구적으로 멈춥니다. 한 번 발견한 사용자에게는 다시 보이지 않는, 정중한 신호.
처음엔 *“task 0개일 때만”*으로 트리거하려 했는데, 그러면 시드용 환영 task가 받혀 있는 신규에게는 ring이 안 보입니다. 다행히 서버는 사용자가 직접 만든 task만 카운트하는 별도 필드(task_records_created)를 이미 유지하고 있었고, 이걸 트리거로 쓰면 신규는 시드 task가 있어도 *“내가 만든 첫 task가 0”*이라 ring이 보입니다. 의도된 정확한 동작.
자칫 산만해 보일 수 있는 애니메이션이라 강도를 여러 번 조정했습니다. 처음엔 ring이 한 개였고, 6초마다 3번만 퍼지고 멈추는 안이었습니다. 화면에 띄워 보니 한 개만 퍼지면 “방금 뭐 지나갔나?” 싶고, 횟수 제한이 있으니 잠깐 못 본 사람에게는 영영 안 보입니다. 결국 ring 두 개가 연속으로, 무한 반복 — 단, 첫 task 만드는 순간 멈춤. 이게 가장 차분하면서도 빠뜨리지 않는 결이었습니다.
작은 손길들이 쌓이면
세 가지 모두 큰 기능 추가가 아닙니다. 빈 칸에 단어 한 줄 채우기, 서베이 답변 아래에 리스트 펼치기, FAB 주변에 ring 두 개 그리기.
그런데 이 셋이 모이면 신규의 첫 5분이 달라집니다. 입력의 부담 → 의미 없는 절차 → 텅 빈 메인 화면의 구간이, Brave Fox로 환영 → 너에게 맞춰 준비된 기능들 → 여기 누르면 시작이에요로 바뀝니다.
같은 가입 흐름인데, 사용자가 보는 풍경은 꽤 다릅니다.
물론 이걸로 retention이 갑자기 좋아지진 않을 겁니다. 첫 5분만 손본 거지, 매일 다시 돌아오게 만드는 daily loop 자체는 여전히 다음 과제로 남아 있습니다. *“Fecit에서 매일 하는 한 가지가 무엇인가”*라는 질문에 한 줄로 답할 수 있게 만드는 일.
그래도 첫 5분이 친절해진 건 시작점입니다. 떠나는 사람을 모두 붙잡지는 못하지만, 적어도 *“들어와 보니까 막막했어”*라고 떠나는 사람은 줄어들었으면 합니다.