룸톤 Roomtone TIL 23
한 번도 안 사 본 것을 팔고 있었다
웹에서 카드로 결제하는 길을 만들어 두고 한 번도 끝까지 밟아 보지 않았다. 코드는 다 있었고, 상품도 등록돼 있었고, 알림 받는 자리도 있었다. 그래서 「된다」고 여기고 있었다.
손님처럼 한 번 사 봤다. 결제는 한 번에 됐다. 걱정했던 자리 — 결제했다는 소식이 우리 서버에 닿아 구독이 켜지는 것 — 도 통과였다.
그런데 그 한 바퀴를 도는 동안 네 가지가 비어 있다는 걸 알았다. 어느 계정으로 결제하는지 화면에 안 보였고, 어디서 샀는지 안 보였고, 해지해도 확인 메일이 없었고, 해지할 자리가 없었다.
코드를 읽어서는 안 보이는 것들이다. 각각은 다 「있어야 할 화면 요소」인데, 기능 목록에는 그런 줄이 없다. 사는 사람의 자리에 서 봐야 빈 곳이 보인다.
- 만들어 둔 길은 「되는 길」이 아니다. 한 번 끝까지 밟기 전까지는 밟아 보지 않은 길이다.
- 밟아 볼 때 고장만 찾지 않는다. 고장이 아니라 없는 것이 더 많이 나온다.
결제 직전에 내가 누구인지 모르겠더라
로그인을 했는데 화면이 「로그인됨」이라고만 했다. 어느 계정으로 들어와 있는지가 없었다.
나는 시험용 계정과 내 계정을 왔다 갔다 하고 있었다. 그 상태로 결제 버튼을 누르려니 손이 멈췄다. 잘못 누르면 엉뚱한 계정에 구독이 붙는다.
매장도 똑같다. 지점이 여럿이면 계정도 여럿이고, 잘못 결제하면 돈은 나가는데 쓰던 자리는 안 열린다.
서버는 이미 그 정보를 보내고 있었다. 화면이 안 띄웠을 뿐이다.
- 되돌리기 어려운 버튼 앞에서는 「지금 누구로, 무엇에」를 보여 준다. 결제·삭제·전송이 다 그렇다.
- 서버가 이미 주는데 화면이 안 쓰는 경우가 있다. 없는 기능이 아니라 안 보여 준 기능이다.
샀는데 어디서 샀는지 모르면 끊을 수가 없다
결제를 마치고 보니 화면에 「구독 중」이라고만 떴다. 무엇으로 결제했는지는 없었다.
이게 왜 문제인지는 해지하려 할 때 드러난다. 우리는 파는 길이 둘이다. 웹에서 카드로 사는 길과 스토어에서 사는 길. 해지하는 곳도 그에 따라 다르다. 스토어에서 산 사람은 스토어에서 끊어야 하는데, 어디서 샀는지 모르면 우리 쪽을 뒤지다 「해지가 안 된다」고 결론 낸다.
파는 창구를 늘릴 때는 끝내는 창구도 같이 는다는 걸 생각 못 했다.
- 들어오는 길이 여럿이면 나가는 길도 여럿이다. 들어온 길을 기록하고 보여 줘야 나갈 길을 안내할 수 있다.
- 「구독 중」처럼 상태만 보여 주는 화면은 다음 행동을 못 정하게 한다. 상태 옆에 출처를 붙인다.
끊는 것도 혼자 할 수 있어야 한다
해지하려고 보니 할 데가 없었다. 결제사가 보낸 영수증 메일 안에 관리 링크가 하나 있었는데, 그게 유일한 길이었다.
메일을 지웠거나 못 찾는 손님은 우리에게 연락할 수밖에 없다. 그러면 내가 하나하나 처리해야 한다.
며칠 전에 같은 구조를 비밀번호에서 봤다. 잊어버리면 내게 연락해야 했고, 그래서 자동으로 바꿨다. 이번엔 해지다. 다음은 또 뭘지 모르겠다.
공통점이 보인다. 셀프로 들어오게 만들어 놓고 나가는 길만 사람 손에 걸어 두면, 손님이 늘수록 그 사람이 병목이 된다. 게다가 나가는 쪽은 더 급하다. 해지가 늦으면 돈이 더 나가니까.
- 셀프로 가입하고 셀프로 결제하게 만들었으면 셀프로 끊을 수도 있어야 한다. 짝이 맞아야 한다.
- 자동화할 때 「들어오는 길」부터 만들게 되는데, 나가는 길이 막혀 있으면 불만은 그쪽에서 터진다.
고장인 줄 알았는데 우리가 정한 규칙이었다
결제사 화면에서 「즉시 취소」를 눌렀다. 그런데 앱에서는 계속 곡이 나왔고, 우리 화면은 「해지 예정」이라고 했다.
버그로 보였다. 즉시라고 했는데 왜 계속 되는가.
규칙을 다시 보니 우리가 그렇게 정해 둔 것이었다. 해지해도 이미 낸 기간까지는 듣게 해 준다고 판매 페이지에 적어 뒀다. 결제사의 「즉시」는 자기네 과금을 멈춘다는 뜻이지 우리 서비스를 끊으라는 지시가 아니다.
고칠 게 없었다. 대신 해지 확인 메일에 「언제까지 들을 수 있다」를 넣기로 했다. 내가 헷갈렸으면 손님도 헷갈린다.
- 남의 서비스가 쓰는 말과 우리 규칙이 같은 단어를 다르게 쓸 수 있다. 어긋나 보이면 버그를 찾기 전에 규칙을 먼저 확인한다.
- 내가 쓰면서 헷갈린 자리는 손님도 헷갈린다. 고칠 게 없어도 설명은 필요하다.
결제사가 안 보내는 메일은 우리가 보내야 한다
해지하고 나니 아무 메일도 안 왔다. 결제사는 구독이 시작될 때만 메일을 보내고 끝날 때는 안 보낸다.
돈이 걸린 일인데 확인이 없다. 손님은 해지됐는지 확신할 수 없고, 다음 달에 또 빠져나갈까 봐 불안해한다. 그러면 문의가 온다.
다른 서비스는 어떻게 하나 봤더니 해지 메일을 보내고 있었다. 들어 있는 게 넷이었다 — 해지됐다는 확인, 더는 청구하지 않는다는 것, 언제까지 쓸 수 있는지, 다시 구독하는 길.
- 결제를 남에게 맡겨도 손님과의 대화까지 맡겨지는 건 아니다. 그쪽이 안 보내는 자리는 우리가 채운다.
- 돈이 움직이는 일은 끝났다는 신호를 반드시 준다. 조용히 끝나면 안 끝난 줄 안다.
물어봐 주는 사람이 없으면 모른 채 지나간다
전날 일이다. 다른 쪽에서 「방침에 적어 둔 보관기간 둘을 서버가 실제로 지우느냐」고 물어 왔다.
확인했더니 하나는 돌고 있었고 하나는 코드에 아예 없었다. 방침에는 「1년 뒤 지운다」고 적혀 있는데 그 일을 하는 코드가 없었다.
아직 1년이 안 지나서 어긋난 건 없었다. 묻지 않았으면 내년에야 알았을 것이고, 그때는 이미 약속을 어긴 상태다.
글로 적는 쪽과 그걸 실행하는 코드를 만드는 쪽이 다르면 이렇게 벌어진다. 적는 순간에는 적은 사람이 할 일이 끝나고, 만드는 쪽은 적힌 줄 모른다.
- 밖에 약속으로 내보내는 문장에는 그걸 실행할 자리가 붙어 있는지 같이 본다. 적는 것과 도는 것은 다른 일이다.
요약
- 만들어 둔 길은 한 번 끝까지 밟기 전까지 밟아 보지 않은 길이다. 밟아 보면 고장보다 없는 것이 더 많이 나온다.
- 되돌리기 어려운 버튼 앞에서는 「지금 누구로, 무엇에」를 보여 준다.
- 들어오는 길이 여럿이면 나가는 길도 여럿이다. 들어온 길을 보여 줘야 나갈 길을 안내할 수 있다.
- 셀프로 들어오게 만들었으면 셀프로 나갈 수도 있어야 한다. 나가는 쪽이 더 급하다.
- 어긋나 보이면 버그를 찾기 전에 우리 규칙을 먼저 본다. 같은 단어를 다르게 쓰고 있을 수 있다.
- 돈이 움직이는 일은 끝났다는 신호를 반드시 준다. 남이 안 보내면 우리가 보낸다.
- 밖에 내보내는 약속에는 그걸 실행할 자리가 붙어 있는지 같이 본다.