버튼을 눌렀는데 아무 일도 일어나지 않습니다. 화면이 멈춘 것인지, 내 권한으로는 안 되는 것인지, 아직 순서가 아닌 것인지 알 수 없습니다. 몇 번 더 눌러 보다가 옆자리에 묻고 결국 담당자에게 연락해서야 지금 단계에서는 원래 안 되는 것이라는 답을 듣습니다. 업무 프로그램을 받아 쓰는 자리에서 한 번쯤 겪을 만한 장면입니다.
이런 버튼은 시연 자리에서 잘 걸러지지 않습니다. 시연은 되는 것을 보여 주는 자리라서 눌리는 버튼은 눌러 보고 막힌 버튼은 건너뛰기 때문입니다. 만든 쪽이 옆에서 "이건 승인 뒤에 열립니다"라고 설명해 주면 그 자리에서는 아무 문제가 없어 보입니다. 문제는 설명해 준 사람이 곁에 없는 평일 오전에 드러납니다.
이 글은 「직원이 매일 쓰는 업무 화면」 연재의 세 번째 편입니다. 1편에서는 쓰던 내용이 사라지지 않는지, 2편에서는 상태 표시를 색만으로 하지 않는지를 다뤘습니다. 이번에는 통신 서비스 회사의 구매·자산 관리 시스템과 영업·텔레마케팅 시스템을 만들며 막힌 버튼과 가린 값을 어떻게 다뤘는지 적고 시연이나 검수 자리에서 직접 확인하는 방법을 정리했습니다.

숨기지 않고, 막아 두고, 이유를 답니다
못 쓰는 버튼을 다루는 가장 쉬운 방법은 화면에서 지우는 것입니다. 그런데 지우면 직원은 그 기능이 있다는 것조차 모르게 됩니다. 어제는 있던 버튼이 오늘 없으면 고장인지 권한 문제인지 구분할 수 없고 다시 담당자에게 묻게 됩니다.
저희 공통 업무 규칙은 반대로 정했습니다. 권한 때문에 볼 수 없는 값은 화면에서 지우지 않고 ***로 가린 뒤, 왜 가렸는지 설명을 답니다. 값은 보이지 않지만 그 자리에 값이 있다는 것, 그리고 내가 못 보는 이유는 보입니다.
등록 화면의 선택지도 같은 원칙입니다. 지금 고를 수 없는 선택지는 숨기지 않고 막아 둔 채 이유 안내를 붙입니다. "이 유형은 다른 관리 화면에서 관리합니다" 같은 안내가 그것입니다. 이 결정을 저희는 "쓰기는 막고 읽기는 연다"라고 불렀습니다. 막는 대상은 고치는 동작이지 보는 것이 아닙니다. 그래서 데이터를 지우는 일도 하지 않았습니다.
원칙은 한 줄이지만 지키는 것은 다른 문제였습니다. 아래는 점검에서 걸린 세 가지입니다.
막힌 버튼은 막힌 것처럼 보여야 합니다
영업·텔레마케팅 시스템의 상담 화면에는 전화 걸기 버튼이 있습니다. 특정 상황에서는 이 버튼이 막혀 있어야 했고 실제로 막혀 있었습니다. 그런데 생김새가 그대로였습니다. 파란 배경에, 마우스를 올리면 손가락 모양이 되고 흐려지지도 않았습니다. 눌리는 버튼과 구분이 되지 않았습니다.
그 요구의 핵심은 "그 버튼을 다시 누르지 않게 하는 것"이었습니다. 생김새는 정반대를 말하고 있었습니다. 누르라고 생긴 버튼이 눌리지 않으면 직원은 고장이라고 생각하고 몇 번 더 누르기 쉽습니다.
이때 자동 점검 셋이 모두 통과한 상태였습니다. 셋은 각각 다른 것을 봤습니다. 하나는 화면 정의에 적힌 것과 실제 구현이 맞는지, 하나는 버튼의 기본 모양 규칙이 있는지, 하나는 규칙이 담긴 파일이 있는지였습니다. "막혔을 때의 모양"은 아무도 보지 않았습니다. 점검이 셋이나 있다는 것과 이 질문을 보는 점검이 있다는 것은 다른 일이었습니다.

그래서 막힐 수 있는 버튼마다 막혔을 때의 모양 규칙이 있는지 보는 자동 점검을 새로 만들었습니다. 시연 때는 막힌 버튼 위에 마우스를 올려 보면 됩니다. 흐려져 있고 손가락 모양이 되지 않아야 정상입니다.
이유는 이 화면에 맞는 사실이어야 합니다
구매·자산 관리 시스템의 회수 장비 표에서, 잠긴 줄에 이런 안내가 떴습니다. "발행/수신된 회차는 삭제할 수 없습니다". 그 화면에는 회차라는 것이 없습니다. 다른 화면에서 쓰던 안내 문구가 이 화면에도 그대로 떠 있었던 것입니다. 사실이 아닌 이유였고 만들지 않은 쪽의 검수가 찾았습니다.
틀린 이유는 이유가 없는 것보다 나쁩니다. 직원은 안내를 믿고 없는 회차를 찾아다니게 될 수 있습니다. 이유를 다는 목적이 묻지 않게 하는 것인데, 틀린 이유는 더 어려운 질문을 만듭니다.
막히는 조건마다 다른 이유를 대도록 고쳤습니다. 권한이 없어서 막힌 것인지, 이 줄이 해당 계열이 아니어서 막힌 것인지, 조회 모드라서 막힌 것인지에 따라 안내가 다릅니다. 그리고 그 조건과 이유가 짝을 이루는지를 자동 점검이 봅니다. 조건은 셋인데 이유가 하나뿐이면 두 조건에는 맞지 않는 말이 뜨기 때문입니다.
시연 때는 이유를 읽고 나서 그 말에 나오는 것이 이 화면에 실제로 있는지 봅니다. 할 수 있으면 조건을 바꿔 봅니다. 권한이 다른 계정으로 보거나 조회 모드로 열었을 때 이유가 그에 맞게 달라져야 합니다.
이유 칸에 내부 번호가 섞이지 않아야 합니다
저희 화면 정의에는 버튼마다 "막힌 이유" 칸이 있습니다. 이 칸은 사용자에게 그대로 보이는 설명입니다. 그런데 이 칸 39곳에 화면 번호가 들어가 있었습니다. 만드는 쪽이 화면을 부르는 내부 관리 번호입니다. 그대로 두면 막힌 버튼에 직원이 모르는 번호가 뜨게 됩니다.
만든 쪽에서는 화면 번호가 자연스러운 말입니다. 어느 화면에서 하는 일인지 번호로 적는 것이 짧고 정확하기 때문입니다. 직원에게는 그 번호가 암호입니다. 같은 칸을 두 사람이 다르게 읽는 것이 문제였습니다.
검수에서 찾았고 39곳을 고친 뒤 그 칸에 화면 번호가 들어가면 막는 자동 점검을 새로 만들었습니다. 시연 때는 이유 문구에 화면 번호처럼 직원이 모르는 번호나 약어가 섞여 있는지 보면 됩니다. 직원이 읽어서 어느 메뉴를 열어야 하는지 알 수 있는 말이어야 합니다.
막았다고 적혀 있어도 직접 눌러 봐야 합니다
등록 화면의 창고 선택을 막아 두었던 적이 있습니다. 결정 기록에도 막는다고 적혀 있었고 코드의 형식 검사도 통과했습니다. 그런데 선택 칸을 그리는 부품이 '막힘' 설정을 조용히 무시하고 있었습니다. 막았다고 적혀 있는데 실제로는 골라졌습니다. 화면을 직접 눌러 보는 확인에서 잡았습니다.
자동 점검은 "적혀 있는가"를 봅니다. 눌러 보는 확인은 "실제로 그러한가"를 봅니다. 앞의 세 가지는 자동 점검을 새로 만들어 막았지만 이 하나는 적힌 것과 동작이 어긋난 경우라 눌러 보지 않으면 알 수 없었습니다. 둘 중 하나만으로는 부족합니다.
본받을 화면도 있었습니다. 사용자 눈높이 점검 1차에서 구매·자산 관리 시스템의 배정 요청 상세와 과금 상세 화면은 막힌 버튼마다 이유를 설명으로 달아 두어 "숨기지 않고 사유를 단다"는 원칙을 잘 지키는 모범으로 꼽혔습니다. 다른 화면도 이 수준에 맞추라는 판정이었습니다. 시연 때도 같은 방식을 쓸 수 있습니다. 잘된 화면 하나를 먼저 찾아 기준으로 삼고 다른 화면이 그 수준인지 비교하면 됩니다.
시연 때 막힌 버튼과 가린 값을 확인하는 방법
볼 것은 다섯 가지입니다. 막힌 것처럼 보이는가, 이유가 뜨는가, 그 이유가 이 화면에 맞는 사실인가, 내부 번호가 섞이지 않았는가, 가린 값은 숨기지 않고 이유와 함께 보이는가. 눌러 볼 행동으로 풀면 아래 표가 됩니다.
| 시연 때 눌러 볼 행동 | 정상이면 |
|---|---|
| 막힌 버튼 위에 마우스를 올린다 | 흐려져 있고 손가락 모양이 되지 않는다 · 눌리는 버튼과 한눈에 구분된다 |
| 막힌 버튼의 이유를 읽는다 | 이유가 뜬다 · 이유에 나오는 것이 이 화면에 실제로 있다 |
| 권한이 다른 계정이나 조회 모드로 같은 화면을 연다 | 막히는 조건에 맞게 이유가 달라진다 |
| 이유 문구에 내부 번호·약어가 있는지 본다 | 화면 번호 같은 내부 번호가 없다 · 직원이 읽고 다음에 무엇을 해야 할지 안다 |
| 권한 없는 계정으로 값이 가려진 칸을 본다 | 칸이 사라지지 않고 별표로 가려져 있다 · 왜 가렸는지 설명이 붙어 있다 |
| 막아 둔 선택지를 실제로 골라 본다 | 골라지지 않는다 · 숨겨져 있지 않고 이유 안내가 붙어 있다 |
이 표도 지난 두 편처럼 프로그램을 만든 쪽에 미리 건네도 좋습니다. 막힌 버튼은 시연에서 눌러 볼 일이 없어서 만드는 쪽도 마지막까지 보지 않기 쉽습니다. 다음 편에서는 직원이 이해하는 안내 문구 이야기를 다룹니다.