달력에서 실패를 표현할 색을
뜯어낸 이유
계속하게 만들려고 붙인 장치들 — 스트릭, 달성률, 빨간 미완료 표시 — 이 정확히 당신이 떠나는 순간에 가장 크게 울립니다.
할 일의 절반쯤만 끝낸 채 눕는 밤이 있습니다. 분명 뭔가를 했는데, 머릿속에 남는 건 못 한 절반입니다. 이상한 건, 아무 계획 없이 흘러간 날엔 이런 자책이 없다는 겁니다. 뭔가 해보려던 날에만 옵니다.
무너지는 지점을 오래 관찰하니 패턴이 있었습니다. 목표가 어려워서 무너진 적은 거의 없습니다. 무너짐은 늘 한 번 놓친 다음에 왔습니다. 헬스장을 하루 빠지면 반년을 안 가고, 다이어트 한 끼를 어기면 그날을 통째로 포기하는 — 심리학이 all-or-nothing이라고 부르는 기제입니다. 어긋남을 직면하는 게 포기보다 아파서, 뇌가 시도 전체를 조용히 폐기합니다. (이 기제는 앞 글에서 자세히 썼습니다.)
그리고 제 할 일 앱을 다시 봤습니다. 스트릭 카운터, 이번 주 달성률, 일주일 만에 열면 기다리고 있는 빨간 미완료 칸. 전부 내가 얼마나 못 했는지를 재는 계기판이었고, 하필 내가 가장 떠나기 쉬운 순간에 가장 크게 울렸습니다. 계속하게 만들려는 도구가 떠나게 만드는 장치였던 겁니다.
그래서 반대로 만들었습니다. 실제 설계 결정 네 가지입니다.
1. 캘린더에 미달성을 표현할 색이 없다
옅은 빨강으로 바꾼 게 아니라, 인코딩 자체를 없앴습니다. 놓친 날은 빈칸으로 렌더링됩니다. 지난 날짜의 못 한 일에는 취소선 대신 "해보기" 배지가 붙습니다. 빚이 아니라 초대입니다. 일주일 만에 앱을 열어도 움찔할 게 없어야 합니다.
2. 분모가 어디에도 없다
하루의 끝 카드는 "3가지 해냈어요"라고 말하지, "3/40 완료"라고 말하지 않습니다.
코드베이스에는 No %, no N/M, no progress bar라는 주석이 박혀
있습니다. 숫자 하나를 빼는 건 쉽습니다. 어려운 건 그 결정을 제품 전체에서 끝까지
지키는 것이었습니다. 잴 수 있는 것은 재고 싶어지고, 새 기능을 붙일 때마다 비율을
되살리고 싶은 유혹이 왔습니다.
3. 축하받는 사건은 완주가 아니라 돌아옴이다
스트릭이 없습니다. 대신 며칠 비우고 돌아온 날, 앱은 공백을 추궁하는 게 아니라 돌아온 것 자체를 축하합니다. AI 코치에게는 공백 후 첫 대화에서 "왜 안 왔어요"를 묻지 못하게 프롬프트에 규칙으로 박아뒀습니다. 분위기가 아니라 하드 룰입니다.
4. 코치는 한 일의 이름을 부른다
코치는 3계층 메모리로 당신의 목표와 오늘의 할 일을 알고 있습니다. 그래서 "힘내세요" 같은 일반론 대신 오늘 실제로 한 일의 이름을 말합니다. 두루뭉술한 격려는 튕겨 나가고, 구체적인 알아봄만 남습니다. 아무것도 못 한 날에도 저녁 카드는 옵니다 — 괜찮다고, 내일 다시 작은 한 걸음부터라고.
1인 개발로 한국어 버전을 먼저 만들어 운영했고, 이번 주에 영어판을 열었습니다. 가입 없이 바로 볼 수 있습니다.
다음 글 — '반밖에'와 '반이나', 해석이 결과를 가른다
시크릿코치 둘러보기