안전망 원칙
(Psychological Safety Net)
실수해도 언제든 궤도를 수정할 수 있다는 확신
공공 서비스에서 오류는 반드시 발생합니다. 문제는 오류 자체가 아니라, 오류를 만났을 때 시민이 어떤 경험을 하느냐입니다. 안전망 원칙은 그 경험을 설계합니다.
개요
실수해도 언제든 궤도를 수정할 수 있다는 확신을 주어 비가역적 공포를 없앱니다.
| 기준 | 정의 | 핵심 행동 |
|---|---|---|
| 100% 예측 가능한 버튼 | '확인/취소' 같은 모호한 단어 대신, 누른 뒤 일어날 일을 명확히 표기 | 동사형 레이블 + 결과 명시 |
| 비난 없는 오류 복구 | 시스템 오류 코드만 내뱉지 않고, 원인+해결책을 함께 제시 | 3단 구조 (상황 → 원인 → 행동) |
| 비가역 행동 앞의 제동 | 최종 제출 등 되돌릴 수 없는 행동 직전에 명확한 경고 | 경고 텍스트 + 확인 대화상자 |
입력하신 정보가 올바르지 않습니다. 다시 확인해 주세요.
오류가 발생했습니다. 잠시 후 다시 시도해 주세요.
문자로 받은 6자리 숫자와 다르게 입력됐습니다.
문자를 다시 확인하고 숫자를 입력해 주세요.
번호가 만료됐다면 [인증 번호 다시 받기]를 눌러 주세요.
오류 메시지 3단 구조
기존 공공 서비스 오류의 두 가지 실패 — 코드만 던지는 메시지, 사용자를 탓하는 메시지 — 를 모두 막는 구조입니다.
기존 공공 서비스 오류 메시지의 두 가지 실패 유형을 먼저 확인합니다.
ERROR 4023: 인증 실패원인도 해결책도 없다. 시민은 무엇을 해야 할지 모른 채 화면 앞에 멈춘다.
입력하신 정보가 올바르지 않습니다. 다시 확인해 주세요.무엇이 올바르지 않은지 알려주지 않으면서 시민의 잘못으로 전제한다. 당혹감과 분노를 동시에 준다.
| 단계 | 역할 | 작성 원칙 |
|---|---|---|
| 1단. 상황 (What) | 무슨 일이 일어났는지 한 문장으로 | 시스템 관점이 아닌 사용자 관점으로 서술. 항상 필수. |
| 2단. 원인 (Why) | 왜 그런 일이 생겼는지 | 시스템·환경 원인 우선. 사용자 입력 문제라도 "확인 필요"로 표현. 원인 불명 시 생략 가능. |
| 3단. 행동 (How) | 지금 할 수 있는 구체적 행동 | 버튼·링크 포함. 2개 이상 대안 제시 가능. 즉각 행동이 없는 경우 생략 가능. |
유형별 적용 예시
가장 자주 발생하는 오류 유형에 3단 구조를 적용한 사례입니다.
원인 귀속 원칙 — 사용자를 탓하지 않는 언어
오류의 원인은 시스템·환경·사용자 입력 세 가지입니다. 실제 원인이 사용자 입력이더라도, 언어는 다음 원칙을 따릅니다.
"틀렸다"가 아니라 "일치하지 않는다", "형식을 확인해 달라"로 표현합니다.
| 사용자 탓 표현 | 중립 표현 |
|---|---|
| 비밀번호가 틀렸습니다 | 비밀번호가 일치하지 않습니다 |
| 잘못 입력한 항목이 있습니다 | 확인이 필요한 항목이 있습니다 |
| 형식에 맞지 않는 값입니다 | 입력 형식을 확인해 주세요 (예: 숫자 8자리) |
원인 불명 시 억지로 이유를 만들지 않습니다. "일시적인 문제"로 표현하고 연락처를 제공합니다.
금지 표현 목록
사용자를 탓하거나, 정보 없이 재시도를 요구하거나, 심리적 부담을 주는 패턴입니다.
| 금지 표현 | 금지 이유 | 대체 방향 |
|---|---|---|
| 잘못 입력하셨습니다 | 사용자 실수로 단정 | "일치하지 않습니다" / "확인이 필요합니다" |
| 올바르지 않은 정보입니다 | 무엇이 올바르지 않은지 미제시 | 구체적 필드명 + 기대 형식 명시 |
| 오류가 발생했습니다 (단독) | 원인·해결책 없는 빈 메시지 | 3단 구조 적용 |
| 다시 시도해 주세요 (단독) | 무엇을 어떻게 재시도할지 불명 | 구체적 행동 제시 |
| 맞춤법 오류가 있는지 확인해 주세요 | 사용자 탓 전제 | "결과를 찾지 못했습니다" + 검색 팁 |
| ERROR [코드] | 시민에게 의미 없는 기술 정보 | 1단 상황 설명으로 대체 (코드는 괄호 안에 선택 병기) |
| 잠시 후 다시 시도해 주세요 (단독) | '잠시'가 얼마인지 불명 | "5분 후 다시 시도해 주세요" 또는 담당자 연락처 안내 |
| 죄송합니다 (오류 메시지에서) | 공감처럼 보이나 원인·해결책을 가림 | 공감 없이 건조하게 상황+행동만 제시 |
오류 유형별 빠른 참조
가장 자주 발생하는 10가지 오류 유형의 3단 구조 참조표입니다.
| 오류 유형 | 1단 (상황) | 2단 (원인) | 3단 (행동) |
|---|---|---|---|
| 로그인 실패 | 아이디 또는 비밀번호가 일치하지 않습니다 | — | 다시 입력하거나 [비밀번호 찾기] |
| 세션 만료 | 로그인이 끊겼습니다 | 30분 이상 사용하지 않으면 자동 로그아웃 | [다시 로그인하기] |
| 파일 크기 초과 | 파일을 올리지 못했습니다 | {N}MB를 넘는 파일은 올릴 수 없습니다 | 파일 크기를 줄이거나 나눠서 올려 주세요 |
| 필수 항목 미입력 | '{항목명}'을 입력하지 않았습니다 | — | {형식} 형태로 입력해 주세요 |
| 네트워크 오류 | 연결이 끊겼습니다 | 인터넷 연결 상태가 불안정합니다 | 연결 확인 후 새로 고침 해 주세요 |
| 검색 결과 없음 | '{검색어}'에 대한 결과를 찾지 못했습니다 | — | 검색어를 바꿔 다시 검색해 보세요 |
| 서버 오류 | 일시적인 문제가 생겼습니다 | — | 잠시 후 다시 시도하거나 고객센터 문의 |
| 권한 없음 | 이 페이지에 접근할 수 없습니다 | 로그인이 필요하거나 접근 권한이 없습니다 | [로그인하기] 또는 담당자 문의 |
| 중복 신청 | 이미 신청하셨습니다 | 같은 내용으로 신청한 이력이 있습니다 | [신청 내역 보기] |
| 시간 초과 | 시간이 초과되었습니다 | 제출 가능 시간({N}분)이 지났습니다 | 처음부터 다시 시작해 주세요 |
성공·완료 메시지 패턴
과업이 완료됐을 때의 메시지는 주권자의 안도감을 강화하고 다음 일정을 명확히 안내하는 역할을 합니다. 과도한 축하나 감사 표현은 오히려 공식 서비스의 신뢰감을 해칩니다.
| 요소 | 🚫 나쁜 예 | ✅ 좋은 예 |
|---|---|---|
| ① 완료 확인 | 감사합니다! 신청해 주셔서 정말 기쁩니다. | 지원금 신청이 완료됐습니다. |
| ② 접수 정보 | 빠른 시일 내에 연락드리겠습니다. | 심사 결과는 3영업일 안에 문자로 알려드립니다. |
| ③ 다음 행동 | — | [신청 내역 확인하기] |
| 🚫 금지 표현 | 금지 이유 |
|---|---|
| 감사합니다! 다음에도 이용해 주세요 | 과업 완료 확인보다 마케팅 메시지가 앞섬 |
| 축하드립니다 🎉 | 공공 서비스에서 과도한 감정 표현 |
| 처리 완료! 수고하셨습니다 | 주권자를 칭찬하는 것은 권위적 태도 |
| 곧 연락드리겠습니다 | '곧'의 시간 불명확 → 구체적 기간 명시 |
| 오류 없이 완료됐습니다 | "오류 없이"는 당연한 것 → 삭제 |
빈 상태·검색 없음 텍스트
데이터가 없는 빈 화면은 오류가 아닙니다. 그러나 "내역이 없습니다"라는 건조한 통보만 남겨두면 주권자는 자신이 무언가 잘못한 것은 아닌지 불안해하거나 다음 행동을 멈추게 됩니다.
| 상황 | 🚫 나쁜 예 | ✅ 좋은 예 |
|---|---|---|
| 신청 내역 없음 | 신청 내역이 없습니다. | 아직 신청한 지원금이 없습니다. [나에게 맞는 지원금 찾기] |
| 알림 없음 | 알림이 없습니다. | 새로운 알림이 없습니다. 신청·심사·결과 변경 시 알려드립니다. |
| 즐겨찾기 없음 | 즐겨찾기가 없습니다. | 자주 쓰는 서비스를 즐겨찾기에 추가해 보세요. [서비스 둘러보기] |
주권자가 행동하면 채워질 수 있는 상태입니다. 대안 행동을 유도합니다.
주권자가 해당되지 않아 표시될 내용이 없는 상태입니다. 이유를 설명합니다.
빈 상태처럼 보이지만 실제로는 기술적 문제입니다. 오류 3단 구조를 적용합니다.
단순히 "결과가 없다"고 끝내지 않고, 주권자가 검색을 성공할 수 있도록 힌트를 제공합니다.
| 검색 유형 | 힌트 방향 | 예시 |
|---|---|---|
| 서비스 검색 | 대표 카테고리 제안 | '청년주택'을 찾고 계신가요? [청년 지원 서비스 보기] |
| 기관명 검색 | 공식 명칭 안내 | '서울시청'으로 검색해 보세요 |
| 민원 검색 | 인기 검색어 제안 | 많이 찾는 민원: 주민등록등본, 건강보험료 조회 |
검색창의 입력 안내 문구(플레이스홀더)는 "무엇을 입력하면 원하는 결과를 얻을 수 있는지" 보여주는 가장 좋은 튜토리얼입니다.
| 🚫 의미 없는 안내 | ✅ 구체적 힌트 |
|---|---|
| 검색어를 입력해 주세요 | 질병명 또는 병원 이름 검색 |
| 검색 | 예) 청년 주택, 자동차세 연납 |
| 찾고 싶은 내용을 입력하세요 | 서비스명, 기관명, 민원 유형 |
빠른 점검 — 안전망 원칙
오류 메시지와 경고 문구를 확정하기 전, 5가지 항목을 점검하세요.
- 3단 구조 — 오류 메시지에 '무슨 일 / 왜 / 어떻게'가 포함되어 있는가? (최소 1단+3단)
- 사용자 탓 금지 — "잘못 입력하셨습니다", "올바르지 않습니다" 같은 단정 표현을 사용하지 않았는가?
- 구체적 행동 — "다시 시도해 주세요" 단독이 아닌, 구체적으로 무엇을 어떻게 해야 하는지 제시했는가?
- 버튼 예측 가능성 — 버튼을 눌렀을 때 일어날 일이 레이블에 명확히 적혀 있는가?
- 비가역 경고 — 되돌릴 수 없는 행동(제출, 삭제, 결제) 직전에 명확한 경고가 있는가?