Chapter 05

사용자 흐름

손님이 찾는 책을 맡겨 두려면 몇 번을 눌러야 할까. 화면 한 장 한 장은 그럴듯해도, 그 화면들을 지나는 길이 길면 사람들은 중간에서 하나둘 떠난다. 그리고 길은 늘 계획대로 흐르지 않는다. 책이 그사이 팔리고, 주인은 바빠서 확인을 못 하고, 손님은 약속한 날을 잊는다. 이 장은 화면이 아니라 화면 사이의 길을 설계한다. 단계를 그리고, 단계마다 빠지는 사람을 곱셈으로 세고, 계획에 없던 갈림길에도 출구를 낸다.

화면이 아니라 흐름

4장에서 정보를 어떻게 나누고 이름 붙일지 정했다. 정보 구조가 서비스의 지도라면, 이 장에서 다룰 것은 그 지도 위를 걷는 길이다. 사용자가 어떤 목표를 이루기 위해 서비스 안에서 지나가는 화면과 행동의 순서를 사용자 흐름(User flow)이라고 한다. 같은 말을 조금 좁게 써서, 특정한 과업 하나("찾는 책을 맡겨 두기")를 끝내는 데 필요한 단계만 그린 것을 과업 흐름(Task flow)이라고 부르기도 한다. 이 장에서는 둘을 크게 구별하지 않고, 그린 그림을 과업 흐름도라고 부른다.

흐름을 따로 그리는 이유는 단순하다. 화면을 한 장씩 그리면 각 화면은 잘 만들어져 보인다. 하지만 사용자는 화면 한 장을 보러 오지 않는다. 책을 맡기러 온다. 그 목표에 닿기까지 화면을 몇 장 넘겨야 하는지, 어디서 무엇을 결정해야 하는지, 결정이 틀렸을 때 어디로 돌아가는지는 화면을 나란히 놓아야 보인다. 3장의 여정 지도가 서비스 바깥까지 포함한 사람의 하루를 그렸다면, 과업 흐름도는 서비스 안쪽의 길을 단계 하나하나까지 그린다.

기호 시작·끝 화면 행동 결정 이동 예: 책이 있는지 찾아보기 책이 있는지 궁금하다 첫 화면(검색 칸) 책 제목을 입력한다 결과가 있나 있음 결과(책 단위) 빈 결과 화면 없음 맡아 두기로 빈 결과에도 다음 길이 필요하다
그림 1. 과업 흐름도의 기호와 작은 예. 둥근 상자는 흐름의 시작과 끝, 네모는 사용자가 보는 화면, 굵은 테두리 네모는 사용자가 하는 행동, 마름모는 길이 갈리는 결정이다. 기호는 팀마다 조금씩 다르다. 정보 처리 분야의 순서도 기호는 국제 표준(ISO 5807:1985)으로 정리되어 있지만, 사용자 흐름도에는 정해진 표준이 없어서 팀 안에서 범례를 하나 정해 두고 쓰면 된다. 중요한 것은 기호의 모양보다 갈림길을 빠뜨리지 않는 것이다. 결과가 없을 때의 화면도 흐름의 일부다.

흐름도에서 가장 먼저 그리는 길은 모든 일이 순조로울 때의 길이다. 검색하면 결과가 있고, 책이 그 책방에 있고, 주인이 바로 확인하고, 손님이 약속한 날에 찾으러 온다. 이런 길을 행복한 경로(Happy path)라고 한다. 처음에는 행복한 경로 하나만 그린다. 단계가 몇 개인지, 단계마다 사용자가 무엇을 알아야 하고 무엇을 결정해야 하는지가 보인다. 그 다음에 마름모마다 "만약 아니라면?"을 붙여 가며 다른 길을 그린다. 이 장의 뒷부분에서 다룰 예외 경로다.

화면 스케치를 흐름도의 네모 자리에 작게 붙여 놓은 그림을 와이어플로(Wireflow)라고 부르기도 한다. 와이어플로는 개발자와 이야기할 때 특히 쓸모가 있다. "이 버튼을 누르면 어느 화면으로 가요?"라는 질문에 그림 하나로 답할 수 있기 때문이다. 하지만 첫 단계에서는 화면을 그리지 않는 편이 낫다. 화면을 그리기 시작하면 단계의 수와 순서보다 버튼의 색과 글자 크기에 눈이 가기 쉽다.

포스트잇 한 장에 한 단계 흐름도를 처음부터 도구로 그리면 상자를 옮기기가 귀찮아서 첫 안을 고집하게 된다. 많은 팀이 벽이나 큰 종이에 포스트잇을 붙이는 것으로 시작한다. 화면은 노란색, 사용자의 행동은 파란색, 결정은 분홍색처럼 색을 나누고, 한 장에 한 단계만 쓴다. 단계를 빼거나 합치는 일이 포스트잇 한 장을 떼는 일이 되면, 팀은 단계 수에 훨씬 덜 집착한다. 다 붙인 뒤에는 손가락으로 행복한 경로를 따라가며 소리 내어 읽어 본다. "손님이 검색한다. 결과를 본다. 책방을 고른다. 그런데 여기서 회원 가입을 왜 해야 하지?" 소리 내어 읽으면 이유 없는 단계가 귀에 걸린다.

단계마다 조금씩 빠진다: 퍼널

흐름의 첫 단계에 들어온 사람이 모두 마지막 단계까지 가지는 않는다. 단계마다 몇 사람씩 떠난다. 단계별로 남은 사람 수를 위에서 아래로 막대로 그리면 깔때기 모양이 되어서, 이것을 퍼널(Funnel, 깔때기)이라고 부른다. 한 단계에 들어온 사람 가운데 다음 단계로 넘어간 사람의 비율을 그 단계의 계속 비율(Step continuation rate)이라고 하고, 떠난 사람의 비율을 이탈률(Drop-off rate)이라고 한다. 둘을 더하면 1이다.

첫 단계에 들어온 사람 중 끝까지 간 사람의 비율은 단계별 계속 비율을 모두 곱한 값이다. 1,000명이 들어와 첫 단계에서 90%가 넘어가면 900명, 다음 단계에서 80%가 넘어가면 720명이 남는다. 더하거나 평균 내는 것이 아니라 곱한다는 점이 퍼널의 핵심이다.

$$F = p_1 \times p_2 \times \cdots \times p_n = \prod_{i=1}^{n} p_i$$
\(F\): 첫 단계에 들어온 사람 중 끝까지 간 비율, \(p_i\): \(i\)번째 단계의 계속 비율(0~1), \(n\): 단계 수. 예: \(p\)가 0.9, 0.8, 0.5인 세 단계라면 \(F = 0.9 \times 0.8 \times 0.5 = 0.36\). 세 값의 평균(0.73)과는 거리가 멀다.

아래 시뮬레이터는 "맡아 두기"의 첫 흐름안이다. 서윤이 처음 그린 흐름에는 검색부터 요청 확인까지 아홉 단계가 있고, 그 가운데 회원 가입과 본인 확인이 끼어 있다. 각 단계의 계속 비율은 가상의 값이다. 단계 이름을 누르면 그 단계를 흐름에서 빼거나 다시 넣는다. 막대의 끝(손잡이)을 끌면 그 단계의 계속 비율이 바뀐다. 1,000명이 들어왔을 때 각 단계에 몇 명이 남는지 본다.

SIMULATOR

흐름도를 고치면 퍼널이 바뀐다

이름을 눌러 빼기 · 막대 끝을 끈다
흐름의 단계 수—
끝까지 간 사람(1,000명 중)—
가장 많이 떠난 단계—
해볼 것: ① 처음안에서 끝까지 간 사람 수를 본다. 단계마다 계속 비율이 80~90%대로 나쁘지 않아 보이는데도 1,000명 중 다섯에 하나 정도만 남는다. ② "회원 가입"과 "본인 확인"을 눌러 뺀다. 남는 사람이 크게 늘어난다. 가장 많이 떠나던 두 단계가 사라졌기 때문이다. ③ "단계 하나 추가"를 세 번 누른다. 계속 비율이 90%인 무난한 단계라도 셋이 붙으면 끝까지 가는 사람이 약 27% 줄어든다(0.9³ ≈ 0.73). ④ "가입 없는 안"을 누르고, "전화번호 인증" 막대를 끌어 그 단계가 얼마나 잘 넘어가야 하는지 본다. (모든 계속 비율은 가상의 값이다. 단계를 빼거나 더해도 다른 단계의 계속 비율은 변하지 않는다고 가정한다.)

처음안에서 가장 많은 사람이 떠나는 곳은 회원 가입이다. 찾는 책이 있는지 보러 온 손님에게 아이디와 비밀번호를 만들라는 요구는 목표와 상관없는 숙제처럼 느껴진다. 본인 확인도 마찬가지다. 이 두 단계를 빼면 끝까지 가는 사람이 두 배 넘게 늘어난다. 단, 이것은 "빼도 다른 단계는 그대로"라는 가정 아래의 계산이다. 가입을 빼면 가게 쪽에서는 손님이 누구인지 어떻게 아느냐는 문제가 남는다. 단계를 빼는 결정은 그 단계가 하던 일(손님을 알아보고, 연락하고, 약속을 지키게 하기)을 다른 방법으로 해낼 수 있을 때만 할 수 있다.

시뮬레이터의 "가입 없는 안"은 그 질문에 대한 서윤의 첫 답이다. 회원 가입, 본인 확인, 연락처 입력, 약관 동의를 전화번호 인증 한 단계로 묶는다. 전화번호로 문자를 받아 여섯 자리 숫자를 넣으면, 가게는 연락할 번호를 얻고 손님은 아이디를 만들지 않아도 된다. 4장에서 결과를 책 단위로 묶고 책방을 그 아래에 두기로 했으니, 책방 고르기도 결과 화면 안에서 책방 줄 옆의 "맡아 두기"를 누르는 일로 합쳐진다.

곱셈의 무서움

퍼널이 곱셈이라는 것은 단계 수가 지수로 작용한다는 뜻이다. 모든 단계의 계속 비율이 같은 값 \(p\)라고 단순하게 두면 \(n\)단계 뒤에 남는 비율은 \(p^n\)이다. 계속 비율이 90%인 단계는 하나만 보면 훌륭하다. 하지만 일곱 개가 이어지면 \(0.9^7 \approx 0.48\)로 절반이 떠난다. 남은 사람이 절반이 되는 단계 수를 반감 단계라고 부르면 다음처럼 쓸 수 있다.

$$n_{1/2} = \frac{\ln 0.5}{\ln p}$$
\(n_{1/2}\): 끝까지 가는 사람이 절반으로 줄어드는 단계 수, \(p\): 모든 단계에 같다고 둔 계속 비율. \(p = 0.9\)이면 약 6.6단계, \(p = 0.95\)이면 약 13.5단계, \(p = 0.8\)이면 약 3.1단계다.

아래 그래프의 굵은 곡선이 \(p^n\)이다. 슬라이더로 \(p\)를 바꾸고, 그래프 위를 끌어 단계 수 \(n\)을 고른다. 오른쪽 아래 두 칸은 같은 흐름에서 할 수 있는 두 가지 개선을 비교한다. 단계 하나를 아예 없애는 것과, 모든 단계를 조금씩(계속 비율을 2%포인트씩) 낫게 다듬는 것이다.

SIMULATOR

단계 수는 지수로 작용한다

그래프를 끌어 단계 수를 고른다
n단계 뒤 남는 비율—
반감 단계 n½—
한 단계를 없애면—
모든 단계를 +0.02 다듬으면—
해볼 것: ① p = 0.9에서 n을 9로 둔다. 남는 비율은 약 39%다. ② p를 0.95로 올린다. 같은 아홉 단계에서 63%가 남는다. 단계마다의 차이는 5%포인트뿐인데 끝에서는 24%포인트가 벌어진다. ③ n을 3으로 줄이고 두 개선을 비교한다. 단계가 적은 흐름에서는 한 단계를 없애는 쪽(+8.1%p)이 다듬는 쪽(+5.0%p)보다 크다. n을 15로 늘리면 거꾸로 다듬는 쪽(+8.0%p)이 없애는 쪽(+2.3%p)을 크게 앞선다. ④ p를 0.75로 내린다. 반감 단계가 2.4로 줄어, 셋째 단계쯤이면 이미 절반이 떠난다. (모든 단계의 계속 비율이 같다고 둔 단순 모형이다.)

단계 하나를 없애면 그 단계의 이탈이 통째로 사라진다. 그래서 약한 단계가 하나 있는 흐름에서는 그 단계를 없애는 것이 가장 큰 개선이 된다. 반면 단계가 많고 모두 비슷하게 괜찮은 흐름에서는 하나를 없애도 조금 나아질 뿐이고, 모든 단계를 조금씩 다듬는 일이 큰 차이를 낸다. 어느 쪽이 나은지는 흐름의 모양에 달렸다. 퍼널을 그려 놓으면 그 모양이 보인다.

곱셈 모형의 숨은 가정: 단계는 서로 독립인가 퍼널을 곱셈으로 계산할 때는 각 단계의 계속 비율이 앞 단계와 상관없다고 가정한다. 실제로는 그렇지 않은 경우가 많다. 앞 단계를 넘어온 사람일수록 목표가 분명한 사람이라서 뒤 단계를 더 잘 넘어가기도 하고(걸러진 효과), 앞 단계에서 지친 사람이 뒤에서 더 쉽게 포기하기도 한다. 그래서 "단계 하나를 빼면 그 단계의 이탈만큼 그대로 늘어난다"는 계산은 대개 상한에 가깝다. 단계를 합칠 때도 주의해야 한다. 두 화면의 내용을 한 화면에 몰아넣으면 단계 수는 줄지만 그 화면 하나의 부담이 커져 계속 비율이 떨어질 수 있다. "모든 것은 세 번 안에 눌러 닿아야 한다"는 이른바 3번 클릭 규칙도 널리 퍼진 통설이지만, 누르는 횟수 자체보다 매 단계에서 다음에 무엇을 할지 분명한가가 더 중요하다는 반론이 많고, 규칙으로 삼을 근거는 약하다. 단계 수는 줄일 대상이지만 유일한 목표는 아니다.

퍼널을 잴 때

실제 서비스의 퍼널은 사용 기록에서 센다. 각 단계에 들어온 사람의 수를 세고 나누면 계속 비율이 나온다. 간단해 보이지만 함정이 있다. 첫째는 표본이 적을 때의 흔들림이다. 하루에 스무 명이 들어오는 작은 서비스에서 어느 단계의 계속 비율이 80%로 나왔다면, 그 값은 70%일 수도 90%일 수도 있다. 같은 흐름을 같은 사람들이 다른 날 지나가도 숫자는 달라진다.

아래 시뮬레이터는 가입 없는 안(다섯 단계)의 참값을 정해 두고, 가상의 손님을 여러 명 지나가게 해서 퍼널을 "측정"한다. 막대가 이번에 잰 값이고, 가는 세로선이 참값이다. 회색 띠는 같은 인원으로 퍼널을 200번 다시 쟀을 때 가운데 90%의 값이 들어온 범위다.

SIMULATOR

몇 명으로 잰 퍼널인가

이번에 잰 끝까지 비율—
참값—
200번 중 90% 범위—
해볼 것: ① 손님 50명에서 "다시 재기"를 몇 번 누른다. 끝까지 비율이 40%대에서 60%대까지 오간다. 같은 흐름인데 숫자만 바뀐다. ② 손님을 2,000명으로 늘린다. 회색 띠가 참값 둘레로 좁아진다. ③ 다시 50명으로 돌아와, 뒤쪽 단계일수록 띠가 넓은지 본다. 뒤로 갈수록 그 단계까지 온 사람이 적어 계속 비율의 흔들림이 커진다. (손님마다 단계별로 동전 던지듯 계속·이탈이 정해지는 이항 모형이다. 참값은 가상의 값이고, 손님 사이의 차이는 없다고 둔다.)

작은 서비스일수록 퍼널 숫자 하나에 일희일비하기 쉽다. 하루치 숫자로 "이번 주에 인증 단계가 나빠졌다"고 판단하기 전에, 그 단계에 몇 명이 들어왔는지부터 본다. 숫자의 흔들림을 어떻게 다루는지, 차이가 우연인지 아닌지 어떻게 판단하는지는 9장에서 자세히 다룬다.

퍼널 숫자는 정의에 따라 달라진다 흔들림 말고도 퍼널을 읽을 때 확인할 것이 있다. ① 무엇을 한 사람으로 세는가. 같은 손님이 아침에 한 번, 저녁에 한 번 들어오면 방문(세션)으로는 두 번, 사람으로는 한 번이다. 방문 기준 퍼널은 사람 기준보다 계속 비율이 낮게 나오기 쉽다. ② 기간을 어떻게 자르는가. 오늘 요청하고 내일 인증을 마친 손님은 "오늘의 퍼널"에서는 이탈로 잡힌다. ③ 순서를 강제하는가. 결과 화면을 건너뛰고 공유받은 링크로 바로 책 화면에 들어온 사람은 앞 단계를 거치지 않았다. 이런 정의를 정하지 않고 숫자를 비교하면, 흐름이 아니라 세는 법이 바뀐 것을 개선으로 착각한다.

행복한 경로와 예외 경로

행복한 경로만 그린 흐름도는 서비스가 하는 약속의 절반만 담는다. 나머지 절반은 일이 틀어졌을 때 무슨 일이 일어나는가다. 이 길들을 예외 경로(Exception path, Unhappy path)라고 한다. 예외 경로를 그리지 않으면 실제로는 그 길이 없는 것이 아니라, 아무도 설계하지 않은 길이 생긴다. 손님은 요청 완료 화면을 본 뒤 아무 소식도 듣지 못하고, 가게에 갔다가 책이 없다는 말을 듣는다. 화면에는 오류가 하나도 없는데 서비스는 실패한 것이다.

"맡아 두기"에는 적어도 세 가지 예외가 있다. 서윤과 하린은 2장의 인터뷰와 관찰 기록에서 이 셋을 골랐다.

행복한 경로 요청 주인 확인 가게에 맡겨 둠 찾아감 예외 경로 확인 못 함주인이 바쁘다 재고 없음그사이 팔렸다 기한 지남손님이 안 온다 손님은 언제까지기다리나? 누가, 언제알려 주나? 책은 언제서가로 돌아가나? 모든 상자에는 나가는 화살표가 있어야 한다
그림 2. 맡아 두기의 행복한 경로와 세 예외. 위 줄은 모든 일이 순조로울 때의 길이고, 아래로 내려가는 붉은 화살표가 예외다. 처음 흐름안에는 예외 상자에서 나가는 화살표가 없었다. 아래 칸의 질문들이 답해야 할 것이다.

흐름도에서 나가는 화살표가 없는 상자를 막다른 길(Dead end)이라고 한다. 사용자가 그 상태에 들어가면 다음에 무엇을 할 수 있는지 알 수 없다. 예외 경로를 설계하는 기본 원칙은 단순하다. 모든 상태에는 출구가 있어야 하고, 그 출구는 사용자에게 보여야 한다. 출구는 대개 셋 중 하나다. 다시 시도하기, 다른 길로 가기(다른 책방), 깔끔하게 그만두기. 그리고 어느 쪽이든 사용자는 지금 무슨 일이 일어났는지 알아야 한다.

아래 시뮬레이터는 맡아 두기 요청 1,000건이 세 예외를 지나 어떤 결말에 이르는지 계산한다. "처리 없음"은 처음 흐름안 그대로다. 주인은 확인 버튼만 누를 수 있고, 손님에게는 요청 완료 뒤 아무 소식이 가지 않는다. "처리 있음"은 예외마다 출구를 낸 안이다. 처리 있음에서는 주인이 일정 시간 안에 확인하지 않으면 손님에게 "아직 확인 전"이라고 알리고 선택지를 준다. 그 시간 한도를 슬라이더로 바꾼다. 선의 굵기는 요청 수에 비례한다.

SIMULATOR

예외에 출구를 내면

책을 받은 손님—
헛걸음—
결말 없이 흐지부지—
확인 전 알림을 받은 손님—
해볼 것: ① "처리 없음"에서 헛걸음과 흐지부지를 본다. 재고가 없거나 주인이 확인을 놓친 요청의 손님 일부는 모른 채 가게에 가고, 나머지는 소식 없이 끝난다. 기한이 지난 책은 언제 풀어야 할지 몰라 서가 밖에 묶여 있다. ② "처리 있음"으로 바꾼다. 헛걸음과 흐지부지가 거의 사라지고, 대신 "알고 멈춤"이 늘어난다. 책을 받지 못한 것은 같아도, 손님은 이유를 알고 다음 행동을 고른다. ③ 기다리는 한도를 1시간과 24시간으로 바꿔 본다. 짧게 잡으면 확인 전 알림이 절반 넘는 요청에 나가고, 주인이 곧 확인했을 요청까지 손님이 취소하거나 옮겨서 책을 받은 손님이 오히려 처리 없음보다 줄어든다. 길게 잡으면 알림은 적지만 손님이 소식 없이 하루를 기다린다. (요청 1,000건의 기댓값 계산이다. 재고 없음 8%, 주인이 요청을 놓침 6%, 주인 확인 시간은 요청의 70%가 평균 1시간, 30%가 평균 6시간인 지수 분포, 확인된 책을 기한 안에 찾아가는 비율 85% 등 모든 비율은 가상의 가정이다.)

"처리 있음"에서도 책을 받은 손님 수가 크게 늘지는 않는다. 예외 처리는 마술이 아니다. 팔린 책은 팔렸고, 안 오는 손님은 안 온다. 바뀌는 것은 실패의 모양이다. 헛걸음은 손님에게 서비스 전체를 다시 쓰지 않을 이유가 되고, 흐지부지는 가게에게 책이 서가 밖에 묶여 팔 기회를 잃는 일이 된다. 반면 "그 책은 오늘 오전에 팔렸어요. 작은 숲에 같은 책이 있어요"라는 알림을 받은 손님은 실패를 겪었지만 서비스를 믿을 수 있다.

시간 한도는 정답이 없는 저울질이다. 한도가 짧으면 손님은 빨리 소식을 듣지만, 주인은 조금 늦었을 뿐인 요청까지 "확인 전" 알림이 나가 재촉받는 느낌을 받는다. 한도가 길면 손님이 기다린다. 이 저울질에는 네 책방의 사정이 들어간다. 주인 혼자 운영하는 한 줄은 손님을 응대하는 동안 휴대폰을 보지 못한다. 그래서 한도는 화면이 아니라 사람들과 합의해서 정할 값이다.

"만약 아니라면"을 표로 만든다 예외 경로를 빠짐없이 찾는 간단한 방법은 행복한 경로의 단계마다 세 질문을 던지는 것이다. 이 단계가 실패할 수 있는가(재고 없음, 인증 문자가 안 옴), 사람이 늦거나 사라질 수 있는가(주인이 확인 못 함, 손님이 안 옴), 사용자가 마음을 바꿀 수 있는가(취소, 다른 책방으로 바꾸기). 답을 표로 만들고 각 칸에 "누가 알게 되나, 무엇을 할 수 있나"를 적는다. 개발자에게는 이 표가 화면 시안보다 쓸모 있는 경우가 많다. 서버가 처리해야 할 상태와 알림의 목록이 그대로 들어 있기 때문이다.

되돌리기와 확인

사용자가 마음을 바꾸거나 잘못 누르는 것도 흐름의 일부다. 손님은 맡겨 둔 책을 취소할 수 있어야 한다. 그런데 취소 버튼을 실수로 누르면, 헌책방 나무처럼 재고가 한 권뿐인 가게에서는 그 사이 다른 손님이 책을 맡길 수도 있다. 실수를 막는 흔한 방법은 두 가지다. 누르기 전에 묻는 확인 대화상자(Confirmation dialog)와, 누른 뒤에 되돌릴 수 있게 하는 되돌리기(Undo)다.

야코프 닐센의 사용성 휴리스틱 열 가지(Nielsen 1994) 가운데 "사용자 통제와 자유"는 실수로 들어간 상태에서 빠져나올 비상구, 즉 되돌리기와 다시 하기를 갖추라고 권한다. 인터페이스 설계자 제프 래스킨(Jef Raskin)은 『인간적인 인터페이스』(The Humane Interface, 2000)에서 확인 대화상자의 약점을 지적했다. 늘 같은 질문이 나오면 사람은 곧 질문을 읽지 않고 "예"를 누르는 습관을 들이고, 그러면 대화상자는 실수를 막지 못하면서 매번 한 번 더 누르게만 한다는 것이다. 래스킨은 그 대신 되돌리기를 권했다.

아래 시뮬레이터는 맡김 취소 100건을 점 100개로 그린다. 그 가운데 일부는 실수로 누른 것이다. 보호 방식을 바꾸면 실수 가운데 몇 건을 되찾는지, 그 대가로 사람들이 몇 번을 더 누르는지가 달라진다.

SIMULATOR

확인 대화상자 대 되돌리기

되찾은 실수—
잃은 맡김—
모두가 더 누른 횟수—
해볼 것: ① "확인 대화상자"에서 멈출 확률이 30%일 때 잃은 맡김을 센다. 100명 모두 한 번씩 더 눌렀는데도 실수의 대부분이 그대로 지나간다. ② 멈출 확률을 100%로 올린다. 대화상자가 모든 실수를 막는다. 하지만 같은 질문을 매번 꼼꼼히 읽는 사람은 드물다는 것이 래스킨의 지적이다. ③ "되돌리기"로 바꾼다. 실수한 사람만 한 번 더 누르고, 실수의 대부분을 되찾는다. (되돌리기에서는 실수한 사람의 80%가 알아채고 되돌린다고 가정한다. 멈출 확률과 이 80%는 측정값이 아니라 모형의 가정이며, 결론은 이 값에 달려 있다.)

되돌리기가 늘 정답은 아니다. 되돌릴 수 없는 일에는 되돌리기를 붙일 수 없다. 문자 메시지를 이미 보냈거나, 다른 손님이 그 책을 이미 맡겼다면 시간을 되돌릴 수 없다. 이럴 때는 되돌리기 대신 일을 조금 늦추는 방법을 쓴다. 취소를 누르면 바로 책을 풀지 않고, 화면 아래에 "맡김을 취소했어요 · 되돌리기"를 몇 초 동안 띄운 뒤에야 실제로 처리한다. 그리고 확인 대화상자는 드물고 무거운 일, 되돌릴 수 없고 대가가 큰 일에 아껴 쓴다. 대화상자가 드물게 나올수록 사람들은 그것을 읽는다.

끊겨도 이어지게

흐름도는 사용자가 한 번에, 처음부터 끝까지 지나간다고 그리기 쉽다. 실제 휴대폰 사용은 끊김의 연속이다. 버스에서 내리고, 전화가 오고, 아이가 부른다. 특히 전화번호 인증은 흐름 안에 스스로 끊김을 만든다. 인증 번호를 보려고 문자 앱으로 갔다가 돌아오면, 휴대폰 브라우저가 메모리를 아끼느라 페이지를 새로 불러오는 일이 있다. 그러면 입력해 둔 것이 사라지고 손님은 검색부터 다시 해야 한다. 휴대폰 운영체제가 문자로 온 인증 번호를 키보드 위에 제안해 주는 기능도 있지만, 모든 기기와 브라우저에서 되는 것은 아니다.

끊긴 흐름을 지키는 방법은 임시 저장(Draft saving)과 이어 하기(Resume)다. 사용자가 입력하거나 고른 것을 그때그때 기기나 서버에 남겨 두고, 돌아왔을 때 떠난 자리에서 다시 시작하게 한다. 아래 시뮬레이터는 다섯 단계 흐름에서 두 종류의 끊김을 둔다. 단계마다 일정한 확률로 일어나는 일상의 끊김, 그리고 인증 단계에서 문자 앱을 다녀오는 동안 페이지가 처음으로 돌아가는 일이다.

SIMULATOR

끊긴 흐름을 이어 가기

끝까지 간 사람(1,000명 중)—
끊긴 뒤 처음부터 다시 한 사람—
이어 하기 없이 잃은 사람—
해볼 것: ① 이어 하기를 끈 채로 "문자 앱을 다녀오면 처음으로"를 0에서 0.6까지 올린다. 인증 단계 막대가 뚝 떨어진다. ② 이어 하기를 켠다. 같은 끊김에서도 인증 단계의 손실이 거의 사라진다. ③ 일상의 끊김을 0.3까지 올리고 이어 하기를 켜고 끈다. 끊김이 잦을수록 이어 하기의 효과가 커진다. (끊김은 계속 비율과 따로 일어난다고 둔다. 저장이 없으면 끊긴 사람의 절반이 처음부터 다시 하고(문자 앱 다녀온 경우는 70%), 저장이 있으면 끊긴 사람의 80%가 그 자리에서 이어 간다. 다시 하는 두 번째 시도에서는 끊김이 없다고 둔다. 모두 모형의 가정이다.)

이어 하기의 비용은 크지 않다. 고른 책과 책방, 입력한 전화번호를 기기에 잠시 남겨 두는 것으로 대부분 해결된다. 다만 무엇을 얼마나 오래 남길지는 신중하게 정한다. 전화번호 같은 개인정보를 기기에 오래 남기면, 같은 휴대폰을 쓰는 다른 사람이 볼 수 있다. 임시 저장은 흐름을 이어 줄 만큼만, 짧게 남긴다. 무엇을 모으고 얼마나 보관할지는 12장에서 다시 다룬다.

내 하루의 과업 흐름 그리기 최근에 휴대폰으로 해 본 과업 하나를 고른다. 택배 반품 신청, 병원 예약, 동네 도서관의 책 예약처럼 단계가 여러 개인 것이 좋다. 종이에 그 과업의 행복한 경로를 그림 1의 기호로 그리고 단계 수를 센다. 다음에 그 서비스를 실제로 다시 열어 화면을 하나씩 넘기며, 그린 흐름도와 다른 곳(빠뜨린 단계, 생각보다 많은 결정)을 빨간 펜으로 고친다. 마지막으로 단계마다 "만약 아니라면?"을 하나씩 붙이고, 그 예외에서 서비스가 실제로 무엇을 보여 주는지 확인한다. 출구가 없는 상자가 몇 개인지 세어 본다. 대부분의 사람은 처음 그린 흐름도보다 실제 단계가 많다는 데 놀란다.

처음부터 손에 든 책까지

퍼널의 끝을 어디에 두느냐도 설계다. 처음안의 퍼널은 "요청 확인" 화면에서 끝났다. 그런데 손님이 원한 것은 요청 완료 화면이 아니라 손에 든 책이다. 요청을 많이 받는 서비스와 책을 많이 건네는 서비스는 같지 않다. 아래 종합 시뮬레이터는 이 장에서 본 모형을 이어 붙인다. 검색을 시작한 손님 1,000명이 흐름(퍼널)을 지나 요청을 남기고, 예외를 지나 결말에 이른다. 흐름안, 예외 처리, 이어 하기를 바꿔 가며 마지막 칸이 어떻게 달라지는지 본다.

SIMULATOR

검색에서 손에 든 책까지

요청을 남긴 손님—
책을 손에 든 손님—
헛걸음 · 흐지부지—
해볼 것: ① 처음안에서 요청과 책을 받은 수를 본다. ② "가입 없는 안"으로 바꾼다. 요청이 두 배 넘게 늘고, 책을 받은 손님도 그만큼 는다. ③ 예외 처리를 켠다. 책을 받은 수는 조금 늘 뿐이지만 헛걸음과 흐지부지가 거의 사라진다. ④ 이어 하기를 켠다. 문자 앱을 다녀오는 인증 단계의 손실이 줄어 요청이 조금 더 는다. 셋을 다 바꾼 상태와 처음 상태를 비교해 본다. (앞의 시뮬레이터들의 가정을 이어 붙인 모형이다. 퍼널의 계속 비율은 이어 하기가 없는 지금 흐름에서 잰 값이라고 두고, 이어 하기는 문자 앱(처음안은 본인 확인 앱)을 다녀오는 단계의 계속 비율을 0.05 올린다고 둔다. 예외의 결말 비율은 확인 한도 3시간일 때의 앞 모형 값을 쓴다. 모든 값은 가상이다.)

어느 하나의 개선도 혼자서 모든 것을 바꾸지 않는다. 단계를 줄이면 들어오는 요청이 늘고, 예외 처리는 요청 뒤의 실패를 정직한 실패로 바꾸고, 이어 하기는 끊긴 사람을 데려온다. 흐름을 설계한다는 것은 이 셋을 한 그림 위에 놓고 보는 일이다. 그리고 그 그림의 마지막 칸은 화면이 아니라 사람의 결말이어야 한다. "요청 수"를 목표로 삼으면 요청만 늘리는 설계(예를 들어 재고가 불확실한 책도 일단 요청을 받기)가 좋아 보이게 된다. 무엇을 목표 숫자로 삼을지는 9장에서 다시 본다.

흐름도에 사람을 둘 이상 그린다 맡아 두기는 손님 혼자 하는 과업이 아니다. 요청은 손님이 하고, 확인은 주인이 하고, 약속은 둘이 함께 지킨다. 이런 서비스에서는 흐름도를 사람마다 한 줄씩 나눈 수영 레인(Swimlane) 모양으로 그리면 좋다. 위 줄은 손님, 아래 줄은 주인, 가운데 줄은 시스템(문자, 알림)으로 두고, 한 사람의 행동이 다른 사람의 화면을 어떻게 바꾸는지 화살표로 잇는다. 손님 쪽 흐름만 그리면 주인의 확인이 늦을 때 무슨 일이 일어나는지가 그림에서 빠진다. 손님과 주인처럼 서비스를 쓰는 사람이 둘 이상이면 흐름도도 둘 이상의 줄을 가진다.

서윤의 서비스 노트

CASE 서윤서비스 노트 · 5장

아홉 단계를 다섯 단계로, 막다른 길 세 곳에 출구를

4월 말, 서윤은 4장에서 정한 첫 화면(검색 하나)과 결과 화면(책 단위로 묶고 책방은 그 아래)을 이어 "맡아 두기"의 첫 흐름도를 그렸다. 검색, 책 고르기, 책방 고르기, 맡아 두기 누르기, 회원 가입, 본인 확인, 받을 날과 연락처 입력, 약관 동의, 요청 확인. 아홉 단계였다. 회원 가입은 네 주인 가운데 두 사람이 "단골을 알아보고 싶다"며 넣어 달라고 한 것이었다.

하린이 포스트잇 아홉 장을 벽에 붙이고 단계마다 가상의 계속 비율을 적었다. 2장의 관찰에서 손님들이 가게에 전화해 재고를 묻던 모습을 떠올리며, 하린은 이렇게 말했다. "전화 한 통이면 되는 일을 아홉 단계로 만들면, 사람들은 그냥 전화해요." 이 장의 퍼널 모형으로 계산하자 1,000명 중 끝까지 가는 사람이 약 206명(20.6%)이었다. 가장 많이 떠나는 곳은 회원 가입(계속 비율 0.60으로 가정)과 본인 확인(0.75)이었다.

지후가 개발 쪽 사정을 보탰다. 통신사 본인 확인은 외부 업체 연동과 비용이 들고, 회원 가입은 비밀번호 찾기와 탈퇴까지 화면이 줄줄이 따라온다. 주인들이 원한 "단골 알아보기"는 전화번호만 있어도 된다. 서윤의 선택은 가입과 본인 확인, 연락처 입력, 약관 동의를 전화번호 인증(문자로 온 여섯 자리 숫자 입력) 한 단계로 묶는 것이었다. 책방 고르기는 결과 화면에서 책방 줄 옆의 "맡아 두기"를 누르는 일로 합쳤다. 같은 가정으로 다시 계산하자 약 529명(52.9%)이었다. 하린은 "단계를 뺀 만큼 그대로 오른다는 건 상한이에요"라고 메모를 달았다.

다음은 예외였다. 처음 흐름도에서는 확인 못 함, 재고 없음, 기한 지남의 세 상자에서 나가는 화살표가 없었다. 헌책방 나무 주인은 "한 권뿐인 책이 맡긴 사이에 팔리면 어떻게 하냐"고 물었고, 한 줄 주인은 "손님 응대할 때는 휴대폰을 못 본다"고 했다. 서윤은 예외마다 손님에게 알리는 문장과 다음 선택지를 정했다. 확인을 기다리는 한도는 시뮬레이터에서 1~24시간을 오가며 저울질한 끝에, 네 주인과 상의해 영업시간 기준 3시간으로 정했다. 확인 대화상자를 겹겹이 쌓으려던 취소에는 되돌리기를 붙였고, 인증 문자를 보러 다녀와도 고른 책과 입력한 번호가 남게 했다.

항목서윤의 선택근거(가상 자료)
흐름① 검색 → ② 결과에서 책과 책방 고르기 → ③ "맡아 두기" → ④ 전화번호 인증(문자 6자리) → ⑤ 요청 확인퍼널 모형 20.6% → 52.9%(상한)
재고 없음주인 화면에 "없음" 버튼. 누르면 손님에게 바로 알리고, 같은 책이 있는 다른 책방을 함께 보여 준다. 요청은 자동으로 닫힌다헛걸음 제거
주인이 확인 못 함영업시간 기준 3시간 안에 확인이 없으면 손님에게 "아직 확인 전" 알림과 세 선택지(더 기다리기 · 다른 책방 · 취소), 주인에게 다시 알림. 다음 영업일까지 확인이 없으면 자동 취소하고 손님에게 알림한도 1~24시간 비교, 주인 네 명과 합의
기한 지남맡김 기한은 최대 3일. 기한 하루 전 손님에게 알림, 기한이 지나면 맡김을 풀고 손님과 주인 모두에게 알린다. 책은 서가로책이 서가 밖에 묶이는 일 제거
취소확인 대화상자 없이 바로 취소하고, 화면 아래에 "되돌리기"를 몇 초 띄운 뒤 처리실수한 사람만 한 번 더 누른다
이어 하기고른 책·책방과 입력한 번호를 기기에 남겨, 문자 앱을 다녀와도 인증 단계에서 이어 간다. 요청이 끝나면 바로 지운다인증 단계의 손실 감소
이 장에서 정한 것가입 없는 다섯 단계 흐름(검색 → 책과 책방 고르기 → 맡아 두기 → 전화번호 인증 → 요청 확인)과 예외 세 가지의 처리(재고 없음: 즉시 알림과 다른 책방 제안, 확인 못 함: 영업시간 기준 3시간 뒤 알림과 세 선택지·다음 영업일 자동 취소, 기한 지남: 하루 전 알림·3일 뒤 해제와 양쪽 알림). 취소는 되돌리기로, 인증 단계는 이어 하기로 지킨다. 손님과 주인을 두 줄로 나눈 흐름도를 지후에게 넘겼다.
아직 남은 문제지후가 흐름도대로 만든 시험판을 하린이 책방 E 단골 두 사람에게 써 보게 했다. 한 사람은 "맡아 두기"를 누른 뒤 화면에 아무 변화가 없자 두세 번 더 눌렀고, 주인 화면에는 같은 요청이 세 건 들어왔다. 주인 쪽 확인 화면에서는 "수락"과 "거절" 버튼의 자리가 요청마다 달라 보였다. 흐름은 맞는데, 화면과 사람 사이의 주고받음이 어긋나 있다.
다음 단계6장: 누른 뒤의 반응, 버튼의 자리, 사람이 머릿속에 그리는 서비스의 모습을 살핀다.

핵심 정리

  1. 사용자 흐름은 목표에 닿기까지 지나는 화면과 행동의 순서다. 과업 흐름도는 시작·끝, 화면, 행동, 결정의 기호로 그리고, 결정마다 갈림길을 빠뜨리지 않는다.
  2. 끝까지 가는 비율은 단계별 계속 비율의 곱 \(F = \prod p_i\)다. 단계 수는 지수로 작용해서, 90%짜리 단계도 일곱 개면 절반이 떠난다.
  3. 약한 단계 하나는 없애는 것이 가장 큰 개선이 되고, 비슷한 단계가 많으면 모두를 조금씩 다듬는 것도 크다. 단계를 빼는 계산은 독립 가정 아래의 상한이며, 그 단계가 하던 일을 다른 방법으로 해낼 수 있을 때만 뺄 수 있다.
  4. 적은 인원으로 잰 퍼널은 크게 흔들린다. 뒤 단계일수록 더 흔들린다. 퍼널 숫자는 사람·방문 기준, 기간, 순서의 정의에 따라 달라진다.
  5. 행복한 경로만 그린 흐름도는 약속의 절반이다. 예외 경로에서 모든 상태에는 보이는 출구(다시 시도, 다른 길, 깔끔하게 그만두기)가 있어야 한다. 예외 처리는 실패를 없애기보다 실패의 모양을 정직하게 바꾼다.
  6. 자주 나오는 확인 대화상자는 습관적으로 넘겨져 실수를 잘 막지 못할 수 있다. 되돌릴 수 있는 일에는 되돌리기를, 끊김이 잦은 흐름에는 임시 저장과 이어 하기를 둔다. 퍼널의 끝은 화면이 아니라 사람의 결말에 둔다.

확인 퀴즈

1. 세 단계로 된 흐름의 계속 비율이 차례로 0.9, 0.8, 0.5다. 첫 단계에 들어온 사람 중 끝까지 가는 비율은?

퍼널은 단계별 계속 비율을 곱한다. 0.9 × 0.8 × 0.5 = 0.36이다. 평균(0.73)은 각 단계에서 떠난 사람이 쌓인다는 사실을 무시한 값이고, 가장 낮은 값(0.5)은 앞 두 단계에서 이미 떠난 사람을 빠뜨린 값이다.

2. 아홉 단계 흐름에서 두 단계를 빼고 다른 단계는 그대로 두면 끝까지 가는 비율이 두 배가 된다고 계산했다. 실제로 그만큼 오르지 않을 수 있는 이유로 가장 알맞은 것은?

\(F = \prod p_i\)는 각 단계의 계속 비율이 다른 단계와 상관없다고 둔 모형이다. 실제로는 단계를 합치면 한 화면이 무거워지고, 앞 단계가 걸러 주던 사람들이 뒤 단계에서 떠나기도 한다. 그래서 단계를 뺀 계산은 상한에 가깝다. 퍼널은 덧셈이 아니며, 반감 단계가 늘어나는 것은 오히려 남는 비율이 커진다는 뜻이다.

3. 맡김을 취소할 때마다 "정말 취소할까요?" 대화상자를 띄우자는 의견이 나왔다. 이 장의 설명과 가장 맞는 판단은?

래스킨(2000)이 지적했듯이 자주 나오는 확인 대화상자는 읽히지 않고 "예"로 넘겨지기 쉽다. 그러면 모두가 한 번씩 더 누르면서도 실수는 그대로 지나간다. 되돌리기는 실수한 사람만 한 번 더 누르게 한다. 닐센의 휴리스틱 "사용자 통제와 자유"도 실수에서 빠져나올 비상구를 권한다. 대화상자를 겹쳐도 습관은 그대로 옮겨 간다.

4. 맡아 두기 요청 뒤 주인이 몇 시간째 확인하지 않고 있다. 예외 경로의 처리로 가장 알맞은 것은?

예외 경로의 원칙은 모든 상태에 보이는 출구를 두고, 사용자가 무슨 일이 일어났는지 알게 하는 것이다. 그대로 두면 손님은 소식 없이 기다리거나 헛걸음을 한다. 손님 몰래 다른 책방으로 옮기면 손님이 모르는 약속이 생기고, 오류 코드는 이유도 다음 행동도 알려 주지 않는다.