지난 편에서 무엇을 언제 알릴지를 이야기했다. 하지만 알림에는 더 무서운 적이 있다. 바로 알림 자신이다. 좋은 알림도 너무 많으면 소음이 되고, 소음이 된 알림은 사용자를 쫓아낸다. 이번 편은 알림 피로, 그러니까 사람을 부르는 알림이 사람을 내쫓는 알림으로 변하지 않게 지키는 방법에 대한 기록이다.
1. 알림 피로라는 조용한 이탈
알림 피로는 소리 없이 커뮤니티를 갉아먹는다. 어느 날 갑자기 사람들이 떠나는 게 아니라, 알림이 하나둘 성가셔지다가 어느 순간 알림을 통째로 꺼버린다. 그리고 알림을 끈 사람은 재방문할 이유를 잃고 서서히 잊는다. 지난 편에서 알림이 재방문의 엔진이라 했는데, 그 엔진이 과열되면 스스로를 태워버리는 셈이다.
업계에서도 알림 피로는 이탈의 주요 원인으로 꼽힌다. 특히 무서운 건 이게 비가역적이라는 점이다. 한번 알림을 끈 사람은 좀처럼 다시 켜지 않는다. 알림 설정 화면까지 다시 찾아가 켜는 수고를 할 만큼 우리 커뮤니티가 그에게 소중하지 않기 때문이다. 그래서 알림은 처음부터 신중해야 했다. 한번 신뢰를 잃으면 되돌릴 기회가 거의 없었다.
나는 이 위험을 초기에 실감했다. 좋은 뜻으로 이런저런 알림을 늘렸더니, 오히려 활동적인 사용자일수록 알림 폭탄을 맞았다. 열심히 참여하는 사람이 가장 많은 알림을 받고 가장 먼저 지치는 역설이 벌어졌다. 커뮤니티에 가장 소중한 사람들을 알림으로 괴롭히고 있었던 것이다. 이걸 깨닫고 나는 알림 정책을 전면 재검토했다. 활동적인 사용자일수록 알림을 덜 받게 만드는 것이, 언뜻 역설 같지만 사실은 그들을 지키는 길이었다.
핵심 원칙은 명확했다. 알림의 가치는 개수가 아니라 신뢰다. 알림 하나하나가 열어볼 가치가 있다는 믿음을 지키는 것이 전부였다. 열 개 중 아홉 개가 쓸모없으면 사람들은 열 개를 다 무시하기 시작한다. 반대로 뜸하더라도 뜰 때마다 유의미하면, 사람들은 알림을 소중히 여기고 반드시 확인한다. 나는 후자를 택했다.
2. 묶어서 줄이기
알림 개수를 줄이는 가장 강력한 방법은 묶기였다. 지난 편에서 잠깐 언급했지만, 여기서 더 자세히 풀어보겠다. 사람들은 개별 사건 하나하나보다 그 사건들의 요약을 원한다. 세 명이 내 글에 댓글을 달았다면, 알림 세 개보다 세 명이 댓글을 달았다는 알림 하나가 더 낫다. 궁금하면 들어가서 다 보면 되니, 알림 단계에서 세세히 나눌 필요가 없다.
묶기에는 기준이 필요했다. 나는 같은 대상에 대한 같은 종류의 알림을 시간 창으로 묶었다. 짧은 시간 안에 같은 글에 여러 반응이 오면 하나로 합치고, 새 반응이 그 창 밖에서 오면 새 알림으로 시작했다. 개념적으로는 대상과 종류가 같은 알림들을 일정 시간 안에서 하나로 합치고 인원수만 갱신하는 방식이었다. 이렇게 하니 인기 글을 써도 알림이 폭주하지 않았다.
묶기의 또 다른 형태는 다이제스트, 즉 요약이었다. 즉시 알릴 필요가 없는 소식들은 모아뒀다가 하루에 한 번, 혹은 사용자가 들어왔을 때 한 덩어리로 보여줬다. 그동안 이런 일들이 있었다는 요약은, 매 사건을 실시간으로 쏘는 것보다 훨씬 덜 성가시면서 정보량은 비슷했다. 급하지 않은 것은 모아서, 급한 것만 즉시. 이 구분이 핵심이었다.
묶기를 잘하려면 무엇이 급하고 무엇이 안 급한지를 먼저 분류해야 했다. 내 댓글에 온 답글은 대화의 흐름이라 즉시가 맞고, 내 오래된 글에 뒤늦게 붙은 추천은 급하지 않다. 나는 알림마다 이 긴급도를 정해두고, 그에 따라 즉시 보낼지 묶어 보낼지를 갈랐다. 모든 알림을 같은 속도로 다루지 않는 것, 그것이 피로를 줄이는 출발이었다.
3. 통제권은 사용자에게
아무리 잘 설계해도 사람마다 원하는 알림은 다르다. 누군가는 모든 반응을 실시간으로 알고 싶어 하고, 누군가는 꼭 필요한 것만 원한다. 그래서 나는 알림을 종류별로 끄고 켤 수 있게 통제권을 넘겼다. 답글 알림은 받되 추천 알림은 끄는 식으로, 각자 자기 취향대로 조절하게 한 것이다. 통제권을 주는 것 자체가 피로를 줄이는 강력한 장치였다.
통제권이 중요한 이유는 심리적이다. 알림이 성가실 때 선택지가 전부 끄기 하나뿐이면, 사람들은 조금만 성가셔도 다 꺼버린다. 하지만 성가신 알림 하나만 콕 집어 끌 수 있으면, 나머지 유용한 알림은 살아남는다. 세밀한 조절 장치가 있으면 사용자는 통째로 포기하는 대신 미세 조정을 택한다. 이 차이가 알림 시스템의 생존을 갈랐다.
다만 통제권을 준다고 설정 화면을 복잡하게 만들면 아무도 안 쓴다. 그래서 나는 설정을 단순하게, 그러나 핵심은 조절 가능하게 균형을 맞췄다. 대부분은 기본값을 안 바꾸므로 기본값을 잘 잡는 게 우선이고, 바꾸고 싶은 소수를 위해 조절 장치를 열어두는 것이 그다음이었다. 기본값의 신중함과 조절의 자유, 둘 다 필요했다.
사용자에게 통제권을 주는 사상은 사실 커뮤니티 운영 전반의 철학이기도 했다. 사람들을 통제 대상이 아니라 자기 경험의 주인으로 대하는 것. 이 관점은 뒤에서 다룰 닉네임과 정체성, 그리고 건강한 문화 이야기와도 이어진다. 알림 하나에도 이 존중이 배어 있어야 사용자는 커뮤니티를 자기 공간으로 느꼈다.
4. 신뢰성이라는 숙제
알림은 너무 많아도 문제지만, 와야 할 때 안 오는 것도 치명적이다. 내 글에 중요한 답이 달렸는데 알림이 누락되면, 사용자는 반응이 없다고 오해하고 실망한다. 그래서 알림은 적게 보내되, 보내기로 한 것은 반드시 도착해야 했다. 이 신뢰성은 절제와는 또 다른 차원의 숙제였다.
가장 흔한 사고는 알림 생성이 누락되거나 중복되는 것이었다. 반응은 생겼는데 알림이 안 만들어지거나, 반대로 한 반응에 알림이 두 개 만들어지는 경우다. 나는 알림 생성을 반응 처리와 단단히 묶어, 반응이 성공하면 알림도 반드시 만들어지고 한 번만 만들어지도록 했다. 개념적으로는 같은 사건에 대해 알림이 중복 생성되지 않도록 멱등하게 처리하는 것이었다.
또 하나 신경 쓴 것은 알림 대상이 유효한지였다. 예를 들어 답글이 달렸는데 원 댓글이 이미 삭제됐다면, 그 알림을 눌러도 갈 곳이 없다. 나는 이런 죽은 알림이 생기지 않도록, 알림이 가리키는 대상이 사라지면 알림도 함께 정리했다. 클릭했더니 없는 페이지로 가는 알림만큼 신뢰를 무너뜨리는 것도 없었다. 신뢰성은 이런 자잘한 정합성의 총합이었다.
결국 알림 신뢰성은 정확히 필요한 만큼, 정확히 한 번, 정확한 곳으로 라는 세 조건으로 요약됐다. 너무 많지도 적지도 않게, 빠뜨리지도 중복하지도 않게, 엉뚱한 곳이 아니라 바로 그 지점으로. 이 세 가지를 지키는 것이 알림 시스템의 완성이었다. 어느 하나만 어긋나도 사용자의 신뢰는 조금씩 새어나갔다.
5. 알림은 관계의 언어다
알림을 오래 다루며 나는 알림이 결국 커뮤니티와 사용자 사이의 대화라는 걸 깨달았다. 좋은 알림은 당신이 여기서 한 일이 의미가 있었다고 말해주는 다정한 목소리다. 나쁜 알림은 제발 좀 들어와 달라고 매달리는 구차한 목소리다. 같은 알림이라도 그 안에 담긴 태도가 사용자와의 관계를 규정했다.
그래서 나는 재촉하는 알림을 특히 경계했다. 오랫동안 안 들어왔으니 들어와 달라는 식의 알림은, 당장은 몇 명을 데려올지 몰라도 장기적으로 커뮤니티를 구걸하는 처지로 만든다. 사람은 매달리는 상대에게서 멀어진다. 나는 커뮤니티가 사용자에게 필요한 존재이지, 사용자에게 애원하는 존재가 되지 않기를 바랐다. 알림의 품위가 곧 커뮤니티의 품위였다.
돌아보면 알림 설계의 모든 결정은 결국 절제와 존중이라는 두 단어로 수렴했다. 보낼 수 있어도 참는 절제, 사용자를 자기 경험의 주인으로 대하는 존중. 이 둘을 지킨 알림은 사람을 불렀고, 이 둘을 어긴 알림은 사람을 쫓았다. 기술은 그 판단을 실현하는 도구일 뿐이었다. 나는 알림 하나를 추가하거나 뺄 때마다, 이것이 사용자를 존중하는 선택인지 아니면 지표를 위해 사용자를 소모하는 선택인지를 스스로에게 물었다. 그 질문을 놓치지 않는 한, 알림은 커뮤니티의 든든한 우군으로 남았다.
여기까지 커뮤니티에 사람을 모으고 대화하게 하고 다시 불러들이는 이야기를 했다. 하지만 사람이 모이면 반드시 문제도 모인다. 무례한 글, 거짓 정보, 싸움. 다음 편부터는 커뮤니티의 어두운 면을 다룬다. 먼저 신고 버튼 너머의 세계, 모더레이션 워크플로를 어떻게 설계했는지 이야기하겠다.
![[실전 커뮤니티 07] 알림 피로와 읽음 처리](https://img.thenullpage.com/posts/5728/5728_1_7077dc.webp)