
물음표 제목의 답은 대개 아니오, 베터리지의 법칙(Betteridge’s Law of Headlines)

땅속 압력솥이 터지는 순간, 간헐천(Geyser)
프로그램이 이상하게 돌아가 몇 시간째 코드를 들여다보다가, 옆자리 동료에게 도움을 청한 적이 있으신가요? 그런데 신기하게도 “여기서 이 값을 받아서, 이렇게 넘기고…” 하고 설명하는 도중에 스스로 “아, 여기가 틀렸네요” 하고 답을 찾는 경우가 많습니다. 동료는 고개만 끄덕였을 뿐인데 말입니다. 개발자들 사이에서는 이 현상을 일부러 활용하는 방법이 오래전부터 전해 내려옵니다. 바로 ‘러버 덕 디버깅(Rubber Duck Debugging)’입니다.
러버 덕 디버깅이란 쉽게 말해 ‘책상 위의 고무 오리 인형에게 코드를 한 줄씩 소리 내어 설명하면서 문제를 찾아내는 디버깅 방법’을 의미합니다. 듣는 쪽은 아무 말도 하지 않아도 되며, 설명하는 과정 자체가 머릿속의 착각과 빈틈을 드러내 줍니다.
본 자료에서는 러버 덕 디버깅이라는 이름이 생긴 유래부터 실제로 하는 방법, 설명이 문제를 드러내는 원리, 그리고 개발을 넘어 일상에서 활용하는 요령까지 차례로 살펴보겠습니다.
오리에게 말을 걸면 버그가 보이는 이유

『실용주의 프로그래머』가 남긴 이야기

이 이름은 1999년에 나온 소프트웨어 개발서 『실용주의 프로그래머(The Pragmatic Programmer)』에서 널리 퍼졌습니다. 앤디 헌트(Andy Hunt)와 데이브 토머스(Dave Thomas)가 함께 쓴 이 책은 지금도 많은 개발자가 추천하는 고전입니다.
- 일화의 주인공(Greg Pugh): 책에 따르면 그레그 퓨라는 연구 보조원은 늘 고무 오리 인형을 들고 다니며, 막히는 문제가 생기면 오리에게 설명했다고 합니다.
- 책의 설명(Explaining the Problem): 듣는 쪽은 한마디도 할 필요가 없으며, 코드가 무엇을 해야 하는지 차근차근 설명하는 것만으로 문제가 화면에서 저절로 튀어나오는 경우가 많다고 소개했습니다.
- 다양한 변형(Other Objects): 꼭 오리일 필요는 없어서 곰 인형이나 반려동물, 심지어 종이로 오린 강아지 모형에게 설명한다는 이야기도 전해집니다.
결국 핵심은 오리라는 소품이 아니라, 누군가에게 처음부터 끝까지 설명한다는 행동에 있습니다.
한 줄씩 소리 내어 설명하는 방법

러버 덕 디버깅은 방법이 단순한 만큼 순서를 지키는 것이 중요합니다. 대략 다음 세 단계로 진행합니다.
(1) 오리에게 목표부터 말한다
먼저 이 코드가 원래 무엇을 해야 하는지 한두 문장으로 설명합니다. 목표를 말로 정리하는 순간, 처음부터 요구 사항을 잘못 이해했다는 사실이 드러나기도 합니다.
(2) 한 줄씩 건너뛰지 않고 읽는다
코드를 위에서부터 한 줄씩 읽으며 이 줄이 무엇을 하는지, 변수에 어떤 값이 들어 있을지를 소리 내어 말합니다. “여기는 당연히 되겠지” 하고 넘기던 부분을 빠짐없이 설명하는 것이 이 방법의 핵심입니다.
(3) 말과 실제 결과를 비교한다
설명한 내용과 프로그램이 실제로 내놓는 결과가 어긋나는 지점을 찾습니다. 대개 그 어긋난 줄이 바로 버그가 숨어 있는 자리입니다.
이때 머릿속으로만 읽지 말고 실제로 입을 움직여 말하거나, 그게 어렵다면 문장으로 적어 보는 것이 좋습니다. 소리 내어 말하면 속도가 자연스럽게 느려져 눈으로 훑을 때 지나치던 쉼표 하나, 부등호 방향 하나까지 다시 확인하게 됩니다. 사무실처럼 말하기 곤란한 곳에서는 메모장에 설명을 적어 내려가는 방식도 같은 효과를 냅니다.
오리는 모르는 척 들어 주는 청중입니다. 그래서 상대가 전혀 모른다고 생각하고 아주 쉬운 말로 풀어 설명할수록 효과가 커집니다.
설명이 문제를 드러내는 원리

머릿속으로만 생각할 때는 문제를 이미 안다고 믿는 부분을 저절로 건너뛰게 됩니다. 반면 말로 설명하려면 생각을 순서대로 하나하나 꺼내 놓아야 합니다.
- 빈틈 드러내기(Explicit Reasoning): 말은 생각보다 느리고 순서가 분명해서, 머릿속에서 대충 이어 붙이던 논리의 빈칸이 그대로 드러납니다.
- 관점 바꾸기(Shift in Perspective): 남에게 설명하는 입장이 되면 코드를 쓴 사람이 아니라 처음 보는 사람의 눈으로 다시 보게 됩니다.
- 자기 설명 효과(Self-Explanation Effect): 학습 과학에서는 배운 내용을 스스로 설명해 보는 학생이 이해를 더 깊게 다진다는 연구가 꾸준히 보고되어 왔습니다.
특히 버그는 코드가 틀린 곳보다 ‘틀렸을 리 없다’고 믿는 곳에 숨어 있는 경우가 많습니다. 설명을 하다 보면 그 믿음의 근거를 말해야 하는데, 막상 근거를 대지 못하는 순간이 바로 다시 살펴볼 지점이 됩니다.
혼자 중얼거리는 것보다 듣는 대상이 있을 때 더 잘 된다는 점도 흥미롭습니다. 오리라도 앞에 두면 제대로 설명해야 한다는 마음이 생겨, 생략 없이 말하게 되기 때문입니다.
개발을 넘어 일상에서 활용하기

러버 덕 디버깅은 이제 개발 문화의 상징처럼 자리 잡았습니다. 하버드대학교의 컴퓨터 과학 입문 강의 CS50은 수업 도구에 오리 캐릭터를 넣었고, 질문 답변 사이트 스택 오버플로(Stack Overflow)는 2018년 만우절에 사용자의 질문을 듣고 “꽥” 소리만 내는 오리를 띄워 웃음을 주기도 했습니다.
이 방법은 코드가 아닌 문제에도 그대로 쓸 수 있습니다. 보고서의 논리가 꼬였을 때, 수학 문제 풀이가 막혔을 때, 발표 내용이 매끄럽지 않을 때 빈 의자나 인형을 앞에 두고 처음부터 설명해 보면 막힌 지점이 또렷해집니다. 동료에게 질문을 보내기 전에 오리에게 먼저 설명해 보면 스스로 답을 찾는 경우도 많고, 답을 못 찾더라도 질문이 훨씬 명확해집니다.
말로 꺼내야 비로소 보이는 실수가 있습니다. 막힌 문제를 오리에게 차근차근 들려주는 습관, 그것이 스스로 답을 찾는 문제 해결의 첫걸음입니다.





