견적서 비고를 한참 적다가 확인할 것이 생각나서 옆 메뉴를 눌렀습니다. 돌아와 보니 적던 내용이 비어 있습니다. 업무 프로그램을 써 본 분이라면 한 번쯤 떠올릴 수 있는 장면입니다. 다시 적으면 되는 일이지만 이런 일을 몇 번 겪으면 직원은 프로그램을 믿지 않게 되기 쉽습니다. 긴 내용은 다른 곳에 적어 두었다가 붙여 넣고 저장 버튼을 습관처럼 여러 번 누르게 됩니다.
이런 문제는 완성된 뒤 쓰는 중에 드러나기 쉽습니다. 시연 자리에서는 "입력하고 저장하면 목록에 뜬다"까지만 보는 경우가 많기 때문입니다. 저장이 되는지는 누구나 확인하지만 저장하기 전에 다른 곳으로 움직였을 때 어떻게 되는지는 잘 눌러 보지 않습니다.
이 글은 「직원이 매일 쓰는 업무 화면」 연재의 첫 편입니다. 저희가 통신 서비스 회사의 구매·자산 관리 시스템을 만들면서 이 문제를 어떻게 찾고 막았는지 적고 시연이나 검수 자리에서 직접 눌러 볼 행동과 정상이면 어떻게 보여야 하는지를 정리했습니다.

입력이 사라지는 경우는 "다른 메뉴" 하나가 아니었습니다
처음에는 다른 메뉴로 이동할 때만 막으면 되는 줄 알기 쉽습니다. 저희는 "화면에서 벗어나는 이동"을 전부 찾는 데서 시작했습니다. 나열해 보니 생각보다 경우가 많았습니다.
- 다른 메뉴로 이동
- 브라우저 창 닫기, 새로고침
- 겹쳐 연 창(원래 화면 위에 뜨는 작은 창)을 나가기 키로 닫기
- 목록과 상세 사이를 오가기
- 같은 화면 안에서 다른 항목을 고르기 — 편집 중인 대상이 바뀌는 경우
- 키보드 입력 없이 고치는 화면 — 페이지 안 버튼으로 값을 바꾸는 곳, 창고 도면 위에서 끌어 옮기는 곳
마지막 두 가지는 놓치기 쉽습니다. 다섯 번째는 겉으로는 화면을 떠나지 않습니다. 한쪽 목록에서 다른 항목을 누르면 편집 칸이 그 항목으로 바뀌는 식인데, 이때 적던 내용이 함께 사라질 수 있습니다. 여섯 번째는 "입력"처럼 보이지 않습니다. 글자를 치지 않고 버튼을 누르거나 도면 위에서 끌어 옮기는 일도, 저장 전에는 똑같이 사라질 수 있는 작업입니다.
시연 때는 이 여섯 가지를 그대로 행동 목록으로 쓰면 됩니다. 정상이라면 어떤 방법으로 나가든 "저장하지 않고 나가시겠어요?" 같은 물음이 한 번 뜨거나, 나갔다 돌아와도 적던 내용이 그대로 있어야 합니다.
곁가지 이동은 화면을 떠나지 않게 했습니다
막는 것과 별개로, 애초에 떠날 일을 줄이는 쪽이 낫습니다. 입력하다가 거래처·품목 같은 기준 정보 화면을 열어 보는 것처럼 본 작업에 딸린 곁가지 이동은, 원래 화면 위에 새 창을 겹쳐 열었습니다. 그 창에서 할 일을 마치고 닫으면 원래 화면과 입력이 그대로 남습니다.

이 방식을 여러 화면으로 넓히는 중에 결함 셋이 드러났습니다. 그전에는 드물게만 쓰이던 동작이 자주 쓰는 동작이 되자 바로 걸린 것입니다. 그중 하나가 겹쳐 연 창에서 나가기 키를 한 번 누르면 작성하던 내용이 사라지는 결함이었습니다. 창을 닫으려고 습관처럼 누르는 키가 그대로 "버리기"로 이어지고 있었습니다.
시연 때 확인할 행동은 간단합니다. 겹쳐 연 창에 무엇이든 적은 뒤 나가기 키를 누릅니다. 정상이라면 적은 내용을 버릴지 묻거나, 창이 닫히지 않아야 합니다. 창을 닫은 뒤에는 원래 화면의 입력이 남아 있는지도 함께 봅니다.
돌아왔을 때 목록도 그대로여야 합니다
입력 칸만 지키면 끝이 아니었습니다. 목록에서 한 건을 열어 상세를 보고 돌아왔을 때, 걸어 둔 검색 조건과 보던 페이지가 처음으로 돌아가 있으면 직원은 매번 다시 찾아야 합니다. 저희는 목록에서 상세로 갔다가 돌아와도 목록 상태가 그대로 남게 했습니다.
이것도 시연 때 한 번에 볼 수 있습니다. 목록에서 조건을 걸고 몇 페이지를 넘긴 뒤 한 건을 열었다가 돌아옵니다. 정상이라면 조건과 페이지가 그대로 있어야 합니다. 상세 화면에서 적던 내용과 목록 상태, 이 두 가지를 같이 보는 것이 요령입니다.
고친 것이 있을 때만 묻습니다
"나가시겠어요?"를 매번 물으면 안전해 보이지만 꼭 그렇지는 않습니다. 아무것도 고치지 않았는데 나갈 때마다 물으면 사람은 그 물음을 습관처럼 넘기기 쉽습니다. 그러다 정말 고친 날에도 같은 손놀림으로 넘길 수 있습니다. 물음은 드물게, 정말 필요할 때만 떠야 효과가 있다고 봅니다.
그래서 고친 것이 있을 때만 묻도록 했습니다. 15차 점검에서는 아무것도 고치지 않은 채 들어갔다 나오는 경로 47가지를 확인했고 괜히 묻는 경우는 0건이었습니다.
시연 때는 양쪽을 다 확인합니다. 먼저 화면을 열어 아무것도 건드리지 않고 나갑니다. 정상이라면 아무것도 묻지 않아야 합니다. 그다음 한 글자만 고치고 나갑니다. 이번에는 물어야 합니다. 둘 다 통과해야 "고친 것이 있을 때만 묻는" 보호입니다.
방법을 세 번 바꾼 이유
처음 택한 방법은 저장소 전체의 변화를 보고 "고친 것이 있다"고 판단하는 것이었습니다. 그런데 뜯어보니 다른 사람이 무언가를 저장하면 그 변화가 내 보호를 꺼 버릴 수 있었습니다. 내가 적던 내용은 그대로인데 보호만 사라져 오히려 입력을 잃을 수 있는 방식이었습니다. 거둬들였습니다.
그때 원칙 하나를 세웠습니다. 그 방법이 내가 알고 싶은 것, 즉 "내가 고친 게 있는가"와 같은 것을 아는지를 먼저 묻기로 했습니다. "변화가 있는가"와 "내가 고쳤는가"는 비슷해 보이지만 다른 질문이고 다른 질문에 답하는 방법은 아무리 잘 작동해도 쓸 수 없습니다.
함께 한 일이 하나 더 있습니다. 이 보호가 못 잡는 것의 목록을 적었고 네 번 다시 좁혀 적었습니다. 하나씩 재 볼수록 막히는 것과 정말 못 막는 것이 갈렸습니다. 재 보지 않은 것은 경계가 아니라 아직 확인 안 한 것입니다. 시연 자리에서 "이건 안 됩니다"라는 설명을 들으면, 그것이 재 본 결과인지 아직 확인 안 한 것인지 물어볼 만합니다.
만든 쪽이 아닌 사람이 검수했습니다
2026년 9월 23일부터 26일까지 점검을 반복했고 16차에서 닫았습니다. 만든 사람이 자기 결과를 확인하면 자기가 생각한 순서만 다시 해 보기 쉬워 만들지 않은 쪽의 검수를 따로 거쳤습니다. 마지막 차수에서는 검수를 7번 거쳤습니다. 반려가 5번 있었고 그것을 반영한 끝에 최종 반려 0으로 닫았습니다.
키보드 입력 없이 고치는 화면처럼 사람이 놓치기 쉬운 부류는, 자동 점검이 코드 전체에서 같은 부류를 찾아 막도록 했습니다. 한 화면에서 결함을 고쳤을 때 "다른 화면에도 같은 것이 있지 않을까"를 사람 대신 프로그램이 전부 훑어보는 셈입니다.
시연 자리에서 그대로 쓸 수 있게 행동과 정상 모습을 묶으면 이렇습니다.
| 눌러 볼 행동 | 정상이면 |
|---|---|
| 적다가 다른 메뉴로 이동 | 저장하지 않고 나갈지 묻는다 |
| 적다가 새로고침, 창 닫기 | 떠날지 묻는 창이 뜬다 |
| 겹쳐 연 창에 적고 나가기 키 | 버릴지 묻거나 닫히지 않는다 · 닫은 뒤 원래 화면 입력이 남아 있다 |
| 목록에 조건 걸고 상세 갔다 돌아오기 | 조건과 페이지가 그대로다 |
| 같은 화면에서 다른 항목 고르기 | 편집 중이면 묻는다 |
| 버튼이나 끌어 옮기기로만 바꾸고 나가기 | 글자 입력과 똑같이 묻는다 |
| 아무것도 안 고치고 나가기 | 묻지 않는다 |
이 표는 프로그램을 만든 쪽에 미리 건네도 좋습니다. 무엇을 눌러 볼지 알고 있으면 만드는 쪽도 그 동작부터 먼저 확인하게 됩니다.
다음 편에서는 상태 표시를 색만으로 하지 않는 이야기를 다룹니다.