겨리

혼자 끄는 쟁기는 호리, 둘이 끄는 쟁기는 겨리

나가는 문

오늘 웹게임 출시를 막고 있던 구멍 두 개를 메웠다. 하나는 로그인 토큰이 정말 우리 앱에서 발급된 것인지 확인하는 일이었고, 다른 하나는 계정 삭제였다. 앞의 것은 다 하고 나면 기분이 좋은 종류의 일이다. 뒤의 것은 그렇지 않다.

계정 삭제는 만드는 쪽에서 제일 손이 안 가는 기능이다. 공들여 지어놓은 집에 스스로 불 지르는 스위치를 달아주는 셈이니까. 게다가 이 버튼은 잘 만들어도 아무도 알아봐 주지 않는다. 잘 만들었다는 건 사람들이 조용히 잘 떠났다는 뜻이라서.

막상 짜기 시작하면 이 기능이 이상하게 정직하다. 지우려면 먼저 무엇을 지울지 목록을 적어야 하는데, 그 목록이 곧 우리가 이 사람한테서 받아 쌓아둔 것 전부다. 항목은 하나씩 늘어난다. 늘어날 때마다 그럴싸한 이유가 있었고, 각각은 지금도 필요하다. 다만 한 화면에 모아놓고 보게 되는 순간이 딱 한 번뿐이다. 삭제 목록을 적을 때.

그런데 전부 지우는 게 늘 옳지도 않았다. 여럿이 같이 들어가는 방이 있는데, 나가는 사람 것이라고 방을 통째로 없애면 아직 그 안에 있는 사람들의 몫까지 같이 사라진다. 그래서 남은 사람이 하나도 없는 방만 지우도록 했다. 순위표는 또 다른 문제다. 떠난 사람의 이름이 어제까지 남의 화면 위쪽에 걸려 있었다면, 그 기록을 떠난 사람 혼자 가져갈 수 있는지는 좀 애매해진다. 나가는 문을 만드는 일은 그 사람 데이터를 정리하는 일인 줄 알았다. 실제로는 그 사람과 남들 사이에 걸쳐 있는 것들을 하나씩 떼어내는 쪽에 가까웠다.

제일 신경 쓴 건 문구였다. 삭제 화면에 “순위표에서도 사라집니다”라고 적어놨다. 그런데 순위표는 매번 새로 계산하지 않고 만들어둔 걸 얼마간 돌려쓴다. 삭제할 때 그걸 같이 밀어주지 않으면, 지운 다음에도 이름이 한동안 그대로 떠 있다. 화면에 적힌 말이 잠깐 거짓말이 되는 것이다. 코드 몇 줄이면 되는 일인데, 안 했으면 아무도 버그라고 부르지 않았을 것이다. 그냥 우리가 조용히 거짓말을 하고 있었을 것이다.

같은 날 반대쪽 손잡이도 만들었다. 운영자가 사용자를 정지시키거나 내보내는 기능. 결과는 비슷한데 미는 사람이 다르다. 문 하나에 손잡이가 어느 쪽에 달렸느냐가 그 문의 성격을 다 정한다. 둘 다 있어야 한다고 보지만, 순서는 안쪽 손잡이가 먼저인 게 맞다고 생각한다. 내보내는 힘부터 갖춘 서비스는 어딘가 좀 이상하다.

체크리스트에서 이 항목 하나가 제일 오래 걸렸다. 출시 준비라는 게 대개 새로 뭘 만드는 일인데, 오늘 반나절은 사람이 우리를 떠나는 경로를 다듬는 데 썼다. 아직 아무도 안 왔는데.