Skip to main content

3장. 사용자와 소통하는 에러 메시지 쓰기

1. 에러 메시지를 쓰기 전에 에러부터 쓰자#

친절한 404, 불친절한 404#

  • 사용자가 보는 화면은 UI/UX 디자이너가 만든 것입니다.
  • 그러나 404 에러 같은 경우는, 개발자의 산출불입니다.

404 에러가 죄송할 일인가?#

  • 404 에러 페이지를 만나는 경우는 다음과 같습니다.
    • 사용자가 URL을 잘못 입력한 경우 -> 죄송할 이유가 없음
    • 사용자가 링크를 클릭했으나 해당 페이지가 없는 경우 -> 깨진 링크 / 나쁜 링크

깨진 링크는 개발자의 책임이다#

  • 브로큰링크체크닷컴을 통하면 깨진 링크를 무료로 찾아줍니다.
  • 구글 서치 콘솔 등을 사용하면, 깨진 링크를 없앨 수 있습니다.

개발자용 에러 메시지와 사용자용 에러 메시지를 분리하자#

  • 개발자용 에러 메시지와 사용자용 에러 메시지를 분리해 작성하는 것이 좋습니다.
#define ERROR_MESSAGE_FOR_USER_911 "현재 개발 중인 기능이어서 에러가 생길 수 있습니다. 양해 부탁드립니다."
#define ERROR_MESSAGE_FOR_DEVELOPER_911 "code:911\n이거 나오면야근.ㅠㅠ"

2. 사용자 에러 메시지를 제대로 쓰는 법#

사용자 에러에 대처하는 메시지#

  • 개발자는 사용자 에러가 발생하면 알림창을 이용해 에러가 발생했음을 알려주는 메시지를 보여줘서, 바른 행동을 유도합니다.
  • 오류의 내용과 오류의 원인을 함께 알려줘야 사용자가 대처할 수 있습니다.
  • 즉, 사용자 에러 메시지에는 에러의 내용, 에러의 원인, 에러의 해결 방법이 포함되어야 합니다.
    • 에러 내용: 오류로 인한 문제와 종류
    • 에러의 원인: 오류를 발생시킨 직접적이고 근본적인 원인
    • 에러 해결 방법: 사용자가 오류를 해결할 가장 쉽고 빠른 방법

에러 메시지를 보여주는 순서#

  • 에러 내용이나 원인을 먼저 구구절절 말하는 것보다는 해결하는 방법을 먼저 얘기하는 편이 사용자에게 낫습니다.
    • [에러 해결 방법]
    • [에러 원인]
    • [에러 내용]]
  • 종종 원인과 내용이 합쳐서 쓰다보면 문장이 매끄럽지 않은 경우가 발생합니다. 이때는 원인만 간단히 써도 됩니다.

오락가락 메시지와 버튼 메시지#

  • 에러 메시지가 헷갈리는 경우인 경우, 사용자 입장에서는 선택이 어려울 수 있습니다.
  • 행동에 만 집중하면 오해를 없앨 수 있습니다.
// bad case
지금 이 페이지를 떠나면 편집한 내용이 취소될 수 있습니다. 취소하시겠습니까? 예/아니오
// not bad case
편집한 내용을 삭제하고 다른 페이지로 이동하시겠습니까? 예/아니오
// good case
편집한 내용을 삭제하고 다른 페이지로 이동하시겠습니까? 삭제하고 이동하기/계속 편집하기

3. 사용자의 에러를 줄이는 메시지 구조화#

버튼의 순서#

  • 확인 버튼이 오른쪽에 있는 이유는 행동의 연속성 때문입니다.
  • 현재 상황에서는 OS의 순서보다는 서비스 내에서 일관성을 가지는 것이 중요합니다.
  • 필요하다면시각적으로 강조하는 것도 좋습니다.

사용자의 반복 에러를 막는 법#

  • 사용자의 반복적인 에러를 계속 나둘 수는 없습니다.
  • 이를 해결하는 방법으로 일정 에러 반복 이후는 다른 방법이나 다른 메시지를 보여줍니다.
  • 대표적인 예시가 사용자에게 남은 로그인 횟수를 메시지로 보여주면 됩니다.

4. 에러 메시지 대신 예방 메시지를 쓰자#

서비스를 이해하면 에러를 예방할 수 있다#

  • 에러를 줄이려면 개발자도 사용자의 사용 방식을 이해해야 합니다.
  • 대표적인 예시로, 달력 예약시 이전 날짜 선택이 불가능하게 합니다.

사용자를 이해하면 에러를 예방할 수 있다#

  • 긴 숫자를 잘못 입력하는 것을 막기 위해 여러 방법을 사용합니다.
  • ex) 0123456789101112 -> 0123 4567 8910 1112
  • ex) CapsLock이 켜져있는 경우, 알림창을 줌
  • 에러 메시지를 예방 메시지라 생각하면 에러를 없앨 뿐만 아니라, 비즈니스 감각이 있는 개발자가 됩니다.

닭이 먼저? 알이 먼저?#

  • 사용자 결제를 요청하는 경우는 어떤 것이 나을까요?
    • 재확인 방식: 결재 요청 -> 재확인 -> 결재 처리
    • 취소 방식: 결재 요청 -> 결재 처리 + 취소 기능
  • 개발자 입장에서는 재확인 방식이 편합니다.
    • 그러나, 결국은 사용자들이 취소 기능을 요구했기 때문에 다음의 방식으로 가게 되었습니다.
    • 혼합 방식: 결재 요청 -> 재확인 -> 결재 처리 + 취소 기능
    • 실수를 막으려면 다른 방식을 써야합니다.
  • 다만 이는 철학의 문제입니다.
  • 에러 메시지를 보여주기 전에 개발자 스스로 사용자를 어떤 관점으로 보는지 생각해 봐야 합니다.
Last updated on