매일 하는 타자 연습은 하루 최소량이 작을 때 가장 잘 돼요. 이 사이트에서 연속 기록을 이어 가려면 UTC 기준 하루에 검증된 테스트 하나면 되고, 30초 테스트도 한 시간짜리와 똑같이 인정돼요. 이렇게 만든 이유는 타자 연습 연속 기록이 다시 찾아오게 만들되, 억지로 하는 귀찮은 일이 되지는 않아야 한다고 봤기 때문이에요.
저희가 가장 오래 논쟁한 기능은 레이스 트랙도, 부정행위 방지도 아니었어요. 연속 기록이었어요.
연속 기록은 효과가 있어요. 그리고 외국어 앱을 써 본 사람이라면 숫자가 초기화되지 않게 하려고 밤 11시 50분에 앱을 열어 문장 하나를 치는 기분도 알 거예요. 저희는 앞의 것은 원하고 뒤의 것은 원하지 않았어요. 저희가 내린 결정을 숫자와 함께 정리했으니, 잘했는지 직접 판단해 보세요.
타자 연속 기록에는 무엇이 인정될까?
연속 기록은 검증된 테스트를 하나 이상 완료한 연속 일수예요. 하나면 돼요. 4분짜리 세션도 한 시간짜리와 똑같이 기록을 이어 주고, 그날 나중에 무엇을 하든 바뀌지 않아요. 젠 모드는 인정되지 않아요. 젠 모드 결과는 업로드되지 않고, 측정이 없는 모드에 습관 지표를 맡기고 싶지 않았어요.
하루의 기준은 UTC예요. 질문이 가장 많이 나올 거라고 예상하는 결정이에요. 이유와 그 대가는 아래에서 설명할게요.
알림, 그리고 알림이 하지 않는 것
마지막으로 인정된 날이 어제이고 오늘 아직 타자를 치지 않았다면, 연속 기록은 "위험" 상태가 되고 홈 페이지의 연속 기록 칩에 그렇게 표시돼요. 알림은 그게 전부예요. 푸시 알림도, 이메일도, 아이콘 위의 빨간 배지도 없어요. 주간 요약을 직접 신청한 경우에만 일주일에 한 번 평범한 텍스트 한 줄로 연속 기록을 언급해요.
일부러 이렇게 했고, 아마 다시 찾아올 방문자 일부를 놓치고 있을 거예요. 연속 기록이 끊긴다는 푸시 알림은 습관 앱에서 흔히 쓰는 재방문 유도 수단이고, 저희 경험상 가장 미움받는 수단 중 하나이기도 해요. 저희 계획에는 "신청하지 않은 사람에게 연속 기록 끊김 알림을 보내지 않는다"라고 적혀 있었고, 그대로 지켰어요.
마지막으로 인정된 날보다 이전 날짜로 결과가 들어오면(노트북 시계가 틀렸거나, 오프라인 결과가 늦게 동기화된 경우) 테스트는 인정하고 연속 기록은 건드리지 않아요. 시계가 어긋났다고 누군가 100일을 잃어서는 안 되니까요.
XP와 레벨은 어떻게 계산할까
XP는 연습 시간을 나타내는 화폐예요. 일부러 순위로 쓰지 않는데, 그 이유는 뒤에서 설명할게요.
검증된, 젠 모드가 아닌 모든 테스트에 대해:
- 기본 XP는 실제로 타자를 친 1초당 2이고, 정확도를 곱해요. 정확도 95%로 30초면 57 XP예요. "실제로 친"은 인정된 시간에서 키보드를 떠나 있던 시간을 뺀 거라서, 탭을 열어 두기만 해서는 아무것도 얻지 못해요.
- 테스트 하나당 인정 시간은 최대 600초예요. 30분짜리 테스트도 10분짜리와 같은 기본 XP를 받으니, 마라톤 세션이 판을 지배하지 않아요.
- 배수는 더해서 계산해요. 정확도 100%면 +50%, 인용문 테스트면 +50%, 문장 부호를 켜면 +40%, 숫자를 켜면 +10%예요. 문장 부호를 켠 인용문을 완벽하게 치면 2.4배예요.
- 고정 보너스는 UTC 기준 그날의 첫 테스트 +50, 일일 챌린지 도전 +50, 레이스 +25에 이기면 +25 추가, 개인 최고 기록 +20이에요.
레벨은 완만한 곡선을 따라요. 레벨 L에서 L+1로 가는 데 필요한 XP는 100 × L^1.3이에요. 누적하면 레벨 2는 100 XP, 레벨 5는 약 1,370, 레벨 10은 약 7,700, 레벨 20은 약 40,300, 레벨 50은 약 343,000 XP에서 도달해요.
레벨 50을 연습량으로 바꿔 볼게요. 완벽한 30초 테스트는 보너스 전에 90 XP를 받으니(기본 60에 완벽한 정확도 50%), 그런 테스트가 약 3,800번 필요해요. 정확도 95%로 하루 15분씩 치면 첫 테스트 보너스를 포함해 하루 약 1,760 XP를 받아서, 대략 6~7개월이면 레벨 50에 도달해요. 레벨 100에는 약 170만 XP가 필요해요. 레벨 이름은 새내기에서 시작해 타자수, 키 대장장이, 글 장인을 거쳐 50에서 전설, 100에서 불멸자예요. 네, 목록의 맨 위는 일부러 좀 우스꽝스럽게 지었어요.
게스트일 때는 브라우저가 같은 규칙을 로컬 사본에 적용해요. 연속 기록과 일일 순위를 계정에 보관하려면 로그인해야 하고, 새 계정으로 로그인하면 로컬 진행 상황이 한 번 합쳐지는데, 상한은 5,000 XP, 테스트 500개, 연속 기록 30일이에요. 이 상한은 합치기를 이용해 기록을 만들어 내지 못하게 하려고 있는 거고, 100일 배지를 받으려면 로그인한 계정이 꼭 필요한 이유이기도 해요.
연속 기록 마일스톤은 3, 7, 14, 30, 60, 100, 180, 365일이고, 배지는 3, 7, 30, 100, 365일에 있어요. 365일 배지는 거의 아무도 받지 못할 거라고 예상하는데, 그게 바로 이 배지의 목적이에요.
연속 기록을 이렇게 만든 이유
연속 기록은 다섯 가지 규칙으로 이뤄져 있어요. 각각은 습관 지표가 무엇에 보상해야 하는지 묻는 데서 나왔어요.
순위에 양으로 쌓는 점수는 없다
XP는 쓴 시간을 재니 양에 보상해요. 두 사람을 예로 들어 볼게요. 한 사람은 60 WPM으로 하루에 30초 테스트 하나를 정확도 98%로 쳐서 약 59 XP에 첫 테스트 보너스 50을 더해 하루 약 110을 받아요. 다른 사람은 45 WPM으로 하루 15분씩 정확도 95%로 연습해서 약 1,760을 받아요. 느린 사람이 열여섯 배를 받아요.
연습 화폐로서는 옳은 답이에요. 연습에 필요한 게 바로 키보드 앞에서 보낸 시간이니까요. 하지만 누가 가장 빠르고 깔끔하게 치는지 보여 줘야 하는 순위로서는 틀린 답이에요. XP 보드라면 두 번째 사람이 1위가 되고, 순위를 올리는 방법은 시간을 늘리는 것뿐이에요.
그래서 XP로는 아무도 순위를 매기지 않아요. 리더보드는 정확도 하한을 두고 속도로 순위를 매기고, XP는 결과 화면과 프로필에만 나오고 보드에는 절대 나오지 않아요. 레이스 결과 화면도 같은 논리를 따라요. 순위, WPM, 정확도가 먼저 나오고, XP 줄은 작게 그 아래에 있어요.
살 수 있는 건 없다
쓸 수 있는 화폐도, 상점도, 꾸미기 업그레이드도 없고, 로그인하지 않는다고 줄어드는 것도 없어요. 연속 기록은 연습한 날들의 기록이에요. 그중 일부라도 돈으로 살 수 있게 되는 순간 그 숫자는 "연습했거나, 돈을 냈거나"라는 뜻이 되고, 더 이상 아무것도 알려 주지 못해요. 상점이 생기면 사이트가 진행 상황을 잃을까 봐 불안하게 만들 이유도 생겨요. 불안이 보호 상품을 팔아 주니까요. 저희는 그런 동기가 코드에 들어오길 원하지 않았어요.
유료로 잠긴 기록은 없다
기록은 무제한이고 무료이며, 연속 기록은 돈을 내야 하는 어떤 것에도 의존하지 않아요. 연속 기록은 기록 페이지의 90일 추세를 만들기 위해 있고, 그 차트가 습관이 효과가 있는지 확인하는 유일한 정직한 검사예요. 옛날 결과를 잠가 두면 가장 봐야 할 정체기가 가려져요.
실패 화면은 없다
연속 기록이 끊기면, 언젠가는 끊기겠지만, 칩은 1을 표시하고 최고 연속 기록 숫자는 그대로 남아요. 되살려 주겠다는 제안은 없어요.
습관 연구도 여기서 너그러워지는 쪽을 지지해요. Phillippa Lally가 이끈 유니버시티 칼리지 런던(UCL) 연구에서, 연구진이 모델링할 수 있었던 참가자들은 새로운 습관을 형성하는 데 평균 66일이 걸렸고, 한 번 기회를 놓친 것은 "습관 형성 과정에 유의미한 영향을 주지 않았다"고 해요. 하루 놓친 걸 재앙처럼 다루면 사람들은 습관이 깨지기 쉽다고 배우고, 일부는 1부터 다시 시작하느니 그만둬 버려요.
외국어 앱이 파는 "연속 기록 보호권(streak freeze)"도 고려했지만, 잃어버린 연속 기록을 놓친 구매처럼 느끼게 만드는 것이야말로 저희가 만들지 않으려던 것이라고 결론 내렸어요.
UTC 기준 하루
하루의 경계는 모두에게 같아야 해요. 그래야 리더보드와 일일 챌린지가 같은 경계를 쓸 수 있어요. 현지 시간을 쓰면 오늘의 인용문이 방문자마다 다른 순간에 바뀌고, "오늘 가장 빠른" 목록은 서로 다른 날을 비교하게 돼요. UTC는 서버가 브라우저에 묻지 않고 계산할 수 있는 유일한 경계예요.
대가도 있어요. 캘리포니아에 사는 사람에게는 오후 4시나 5시에, 델리에 사는 사람에게는 오전 5시 30분에 날짜가 바뀌어요(한국에서는 오전 9시예요). 계정별 시간 오프셋도 고려했지만 첫 버전에서는 하지 않기로 했어요. 설명할 규칙이 하나 늘어나고, 설명에 한 문단이 필요한 연속 기록은 이미 지고 있는 거니까요. 일일 챌린지의 카운트다운은 현재 날짜가 얼마나 남았는지 보여 줘요. 이 결정을 다시 검토한다면 한 번만 정하는 오프셋이 될 거고, 이 글에도 그렇게 적을게요.
타자 연습은 얼마나 자주 해야 할까?
최소량을 낮게 정하세요. 15분이 필요한 연속 기록은 처음 바쁜 날에 끊겨요. 안 좋은 날에는 30초 테스트 하나면 충분해요. 40에서 80 WPM 연습 계획도 이걸 바탕으로 짜여 있어요. 전체 세션은 15분, 최소량은 테스트 하나예요.
자정에 첫 테스트 보너스를 쫓지 마세요. +50은 짧은 세션도 할 만한 가치가 있게 하려고 있는 거지, 밤을 새우라고 있는 게 아니에요. UTC로 밤 11시 55분이고 피곤하다면 연속 기록보다 잠이 더 소중해요.
일일 챌린지를 기본 세션으로 삼으세요. 인용문 하나이고, 보통 1분도 안 걸리며, 보드가 매일 초기화되니 상위권에 닿을 수 있어요. 게이미피케이션 디자이너 Yu-kai Chou도 같은 주장을 해요. "1위부터 꼴찌까지 늘어놓는 일반적인 순위는 상위권 근처의 소수에게만 힘을 준다." 그리고 초기화 주기를 사람들이 행동하는 빈도에 맞추라고, 자주 하는 행동이라면 매일 초기화하라고 권해요.
연속 기록이 아니라 추세선을 보세요. 연속 기록이 존재하는 이유는 기록 페이지의 90일 차트예요. 선이 올라가고 있다면 연속 기록이 끊기더라도 제 역할을 한 거예요. 한 달 동안 선이 평평하다면 연속 기록이 타자를 계속 치게는 하지만 빨라지게 하지는 못하고 있다는 뜻이고, 평소 테스트 대신 연습의 약한 키 연습을 열어 볼 신호예요.
저희가 지켜보는 것
아직 공개할 재방문 데이터는 없어요. 데이터가 생기면 물어볼 질문은 30일 연속 기록을 유지하는 사람들이 90일 추세로 볼 때 실제로 빨라지고 있는지, 아니면 연속 기록만 유지하고 있는지예요. 후자라면 설계가 틀린 거고, 가장 먼저 바꿀 것은 일일 챌린지를 인정 기준으로 만드는 일이에요.
자주 묻는 질문
타자 연습은 얼마나 자주 해야 하나요?
습관을 유지하는 데는 가끔 하는 마라톤보다 조금씩 자주 하는 게 나아요. 저희 연속 기록은 하루에 검증된 테스트 하나를 요구하고, 연습 계획은 시간이 있을 때는 15분, 없을 때는 짧은 테스트 하나를 권해요.
일일 연속 기록은 언제 초기화되나요?
UTC 자정이에요(한국 시간으로 오전 9시예요). 일일 챌린지 카운트다운이 현재 UTC 날짜에 몇 시간이 남았는지 보여 주니, 어디에 살든 "오늘"이 언제 끝나는지 알 수 있어요.
일일 챌린지는 완벽한 정확도가 필요한가요?
아니요. 원하는 만큼 도전할 수 있고 최고 기록이 반영되지만, 일일 보드에 순위가 매겨지는 건 정확도 90% 이상인 기록뿐이에요.