10. 자유의지는 시스템 설계와 무슨 관계인가
문제 제기: 버튼을 누른 사람은 누구인가
새벽 두 시, 운영 대시보드에 빨간 경고가 뜬다. 서버의 응답 시간이 급격히 길어지고 있다. 당직자는 피곤한 눈으로 화면을 바라본다. 그 옆에는 ‘자동 복구 실행’이라는 버튼이 있고, 버튼 아래에는 작은 글씨로 “최근 배포 버전으로 롤백합니다”라고 적혀 있다. 잠시 뒤 그는 버튼을 누른다. 서비스는 살아나지만, 몇 시간 동안 쌓인 주문 데이터 일부가 사라진다.
사후 회의에서 누군가 묻는다. “왜 롤백을 승인했습니까?” 질문은 자연스럽게 당직자의 선택을 향한다. 그러나 그 선택은 정말로 개인의 자유의지에서 나온 것일까. 버튼은 하나뿐이었고, 위험도는 눈에 띄지 않았으며, 시간 압박은 컸고, 조직은 장애를 빨리 끝내는 사람을 유능하다고 평가해 왔다. 그는 선택했지만, 시스템은 이미 선택의 공간을 좁혀 놓았다.
자유의지는 흔히 마음속에 있는 어떤 독립적인 힘처럼 다뤄진다. 하지만 공학의 현장에서 자유의지는 훨씬 구체적인 질문으로 나타난다. 사용자가 정말 다른 선택을 할 수 있었는가. 선택의 결과를 이해할 수 있었는가. 선택하지 않아도 되는가. 자신의 선택을 되돌릴 수 있는가. 시스템은 사용자의 행동을 돕는가, 아니면 특정 행동으로 밀어붙이는가.
철학적 논점: 선택은 선택지의 개수만으로 생기지 않는다
선택지가 열 개 있다고 해서 자유로운 것은 아니다. 어떤 선택지는 화면 깊숙한 곳에 숨겨져 있고, 어떤 선택지는 색깔과 위치로 과장되어 있으며, 어떤 선택은 기본값으로 이미 체크되어 있다. 사용자는 ‘동의’를 눌렀지만, 실제로는 거절의 비용이 지나치게 높아 동의하도록 설계된 것일 수 있다.
자유의지를 설계의 언어로 옮기면, 단순히 “사용자에게 결정권을 주자”는 구호가 되지 않는다. 결정권은 정보, 시간, 이해 가능성, 철회 가능성과 함께 구성된다. 예를 들어 추천 시스템이 사용자에게 영상을 하나씩 자동 재생한다고 하자. 사용자는 다음 영상을 직접 고르지 않았지만, 아무것도 하지 않는 행동이 다음 재생을 승인하는 것으로 해석된다. 여기서 기본값은 중립적인 빈칸이 아니다. 기본값은 사용자의 시간을 어느 방향으로 흘려보낼지 정하는 적극적인 설계다.
공학자는 흔히 시스템을 효율의 관점에서 바라본다. 클릭 수를 줄이고, 이탈률을 낮추고, 처리 시간을 단축한다. 그러나 클릭이 줄었다는 사실은 사용자의 부담이 줄었다는 뜻일 수도 있고, 생각할 틈이 사라졌다는 뜻일 수도 있다. 자동 완성은 오타를 줄여 주지만, 추천된 문장이 사용자의 말이 되는 순간도 있다. 업무 분해 도구는 복잡한 프로젝트를 작은 티켓으로 나누지만, 무엇을 만들지 결정하는 질문까지 티켓의 형식에 맞춰 납작하게 만들 수 있다.
철학은 여기서 당연한 전제를 멈춰 세운다. ‘빠른 선택이 좋은 선택이다’, ‘선택지가 많을수록 자유롭다’, ‘사용자가 버튼을 눌렀으니 동의한 것이다’라는 문장을 잠시 의심하게 한다. 공학은 그 의심을 다시 구조로 번역해야 한다. 위험한 작업에는 의도적인 지연을 넣고, 중요한 기본값은 사용자가 직접 확인하게 하고, 추천 결과와 사용자의 최종 결정을 구분해 표시하는 식이다.
공학 사례: 추천과 자동화 사이에 작은 마찰을 설계하기
한 금융 서비스가 대출 한도를 자동으로 추천한다고 해 보자. 모델은 사용자의 소득과 거래 기록을 바탕으로 ‘가능한 최대 금액’을 계산한다. 화면에는 큰 숫자가 먼저 보이고, 그 아래에 “이 금액을 선택하면 월 상환액은 얼마입니다”라는 설명이 붙는다. 사용자는 대개 가장 눈에 띄는 금액을 기준으로 생각하게 된다. 더 나은 설계는 최대 금액과 함께 상환 부담, 금리 변동 가능성, 추천 근거를 같은 무게로 보여 주는 것이다. 신청 버튼을 누르기 전, “이 추천은 자동 계산이며 최종 결정은 본인이 합니다”라고 한 줄 쓰는 것만으로 충분하지 않을 때도 있다. 실제로 이해했는지 확인하는 짧은 질문, 취소할 수 있는 유예 시간, 상담으로 연결되는 경로가 필요할 수 있다.
사고 대응 시스템에서도 마찬가지다. 자동 복구를 무조건 빠르게 실행하기보다, 데이터 손실 가능성이 있는 경우에는 두 명의 승인을 요구하거나, 먼저 읽기 전용 모드로 전환할 수 있다. 긴급 상황이라고 해서 인간의 판단을 제거하는 것이 늘 최선은 아니다. 오히려 판단이 필요한 순간과 자동화해도 되는 순간을 분리하는 것이 인간의 선택 능력을 보존한다.
이런 설계는 비효율적으로 보일 수 있다. 모든 사용자가 경고를 읽고 모든 결정을 확인하게 만들면 서비스는 느려진다. 하지만 자유는 언제나 마찰이 없는 상태가 아니다. 브레이크는 자동차의 속도를 늦추지만, 그 때문에 운전자는 속도를 선택할 수 있다. 시스템의 마찰도 마찬가지다. 잘 배치된 마찰은 행동을 방해하는 벽이 아니라, 행동의 의미를 되돌려 주는 손잡이가 된다.
반론과 긴장: 사용자를 끝없이 보호할 수 있는가
물론 사용자에게 모든 판단을 맡기는 것도 책임 있는 설계라고 할 수 없다. 항공 관제, 의료 알림, 화재 대응처럼 반응 시간이 생명과 직결되는 영역에서는 자동화가 사람보다 빠르고 정확할 수 있다. 매번 확인을 요구하면 오히려 인간의 주의력을 소진시키고, 중요한 경고를 평범한 팝업 속에 묻어 버릴 위험도 있다.
그러므로 쟁점은 인간이 언제나 마지막 버튼을 눌러야 한다는 데 있지 않다. 더 중요한 것은 자동화가 인간의 판단을 대체할 때 그 사실을 숨기지 않는 것이다. 시스템은 어떤 조건에서 스스로 행동하는지, 사용자가 개입할 수 있는지, 개입하지 않으면 어떤 결과가 발생하는지 알려야 한다. 자유의지는 모든 것을 직접 조작하는 권리가 아니라, 자신의 행동과 결과 사이의 연결을 이해하고 필요할 때 방향을 바꿀 수 있는 능력이다.
마무리 질문
당신이 설계한 시스템에서 사용자가 누른 버튼은 정말 그의 선택인가. 아니면 가장 크게 빛나는 버튼, 이미 정해진 기본값, 시간이 없다는 압박이 함께 눌린 결과인가. 다음 기능을 만들 때, 사용자의 자유를 늘리는 것은 선택지를 하나 더 추가하는 일일까, 아니면 선택하지 않아도 되는 공간과 되돌아갈 시간을 마련하는 일일까?