Rubber Duck Debugging을 보며
우연히 Rubber Duck Debugging에 관한 밈을 보게 되었다.
Rubber Duck Debugging은 고무 오리에게 에러가 난 코드를 설명하며 문제를 찾는 방식이다. 나만 그런 줄 알았는데 이걸 또 하고 있는 사람이 있다니 신기했다.
https://rubberduckdebugging.com/ 번역:
고무 오리 디버깅 방법은 아래와 같다.
1. 부탁하거나, 빌리거나, 훔치거나, 사거나, 만들거나 어떤 방식으로든 고무 오리를 얻는다. (욕조에서 사용하는 재질로)
2. 오리를 책상에 앉혀두고 같이 코드를 살펴보면 된다고 알려준다.
3. 오리에게 코드를 어떤 의도로 썼는지 말해주고, 한 줄 한 줄 자세히 설명해 준다.
4. 다음에 무엇을 할지 오리에게 말하지만, 뭔가 잘못됐다는 걸 깨닫는 순간이 온다. 오리는 네가 가는 길을 도와주었다는 점에 기뻐하며 조용히 앉아있을 것이다.
고등학교 때 주변에서 "공부 어떻게 해?"라는 질문을 많이 받았고, 솔직하게 대답해 줬다. 그게 바로 고무 오리 디버깅이었다. 그런데 다들 의심스러운 눈빛으로 쳐다볼 뿐 누구도 이 방식을 사용하지 않았다. 그래서 이 글을 통해 썰을 풀어보고자 한다.
나만의 공부법
헷갈리는 내용을 인형에게 자세히 설명한다.
방법
- 화이트보드 앞에 인형을 앉혀 둔다.
- 인형에게 공부한 내용을 설명한다. 인형은 아무것도 모르기 때문에 최대한 쉽고 자세히 설명해 준다.
- 조금이라도 애매한 부분이 있다면 표시해 둔다.
- 설명이 끝나면 표시했던 부분을 다시 공부한다.
- 인형이 완벽히 이해할 때까지 반복한다.
고무 오리가 아닌 강아지 인형이었던 점을 생각하면 Dog Plush Dubugging 정도가 될 것 같다. 고등학교 때는 수학을 이렇게 공부했고, 대학생인 지금도 사용하고 있다. 물론 수학 외에 사회, 과학, 한국사 등 과목에도 적용된다.
효과
우선, 무엇을 모르는지 파악할 수 있다. 부족한 부분을 메꾸기 위해 모르는 개념이 무엇인지 반드시 알아야 한다. 그런데 혼자서는 구멍을 찾기 쉽지 않다. 이때 전지전능한 인형과 함께라면 빈 개념을 파악할 수 있다. 따라서 공부 시간을 효율적으로 사용할 수 있다. 또 "최대한 쉽고 자세히 설명"이라는 조건이 있기 때문에 복잡한 용어 뒤에 숨겨진 개념을 찾는데 도움이 된다. 예를 들어, $3^2\times 3^3=3^5$라는 식을 설명한다고 해보자.
1) 복잡한 용어로 된 설명
지수법칙에 따라 $a^m\times a^n=a^{m+n}$이기 때문에 $3^2\times 3^3=3^5$이다.
2) 인형 눈높이에 맞는 설명
$3^n$은 3을 n번 곱했다는 기호이다. 즉, $3^2$는 $3\times 3$이고 $3^3$은 $3\times 3\times 3$이다. 따라서 우리가 풀고자 하는 식 $3^2\times 3^3$은 3을 2번 곱하고 다시 3을 3번 곱하라는 의미다. 3이 5번 곱해졌기 때문에 $3^5$라고 표현할 수 있다.
이렇게 내용을 풀어서 설명하면 추상적인 용어 뒤에 숨은 개념까지 훑고 지나갈 수 있다. 만약 "1번 방식"으로 설명이 되는데 "2번 방식"으로 설명이 안 되면 모르는 용어나 기호가 있다는 뜻이다.
느낀 점
수학 식은 결국 숫자와 기호로 이루어진 문장이다. 수식을 한국어로 풀어서 말할 수 있다면 수학 문제를 이해할 수 있게 된다. 반대로 생각한 아이디어를 숫자와 기호로 표현할 수 있다면 문제를 풀 수 있게 된다. 설명하는 연습을 하고 나니 "수식 = 언어"라는 사실을 깨달았다. 그래서 수학을 한국어라는 익숙한 언어로 바꿔서 설명하는 연습이 도움이 됐다고 생각한다.
남은 이야기
최근에는 "티처스"라는 프로그램을 보다 정승제 생선님께서 솔루션으로 이 방식을 사용하시는 것을 봤다.
https://youtu.be/Ri6p-Wi8Xz8?si=FUvb8nWendQup6bt&t=2600
이제 보니 생각한 것보다 더 대중적인 공부법이 아니었나 싶기도 하다.
필자는 중학교 수학시간에 선생님께서 보여주신 하부르타라는 학습 방식에서 영감을 얻었다. 하부르타는 하나의 주제에 대해 토론을 거쳐 답을 찾아가는 학습 방법이다.
일반적으로는 수학 개념과 공식을 먼저 배우고 문제를 푼다. 하지만 이 수업은 달랐다. 먼저 꼭 필요한 개념만을 설명해 주신다. 그리고 팀을 만들어 같은 문제에 대해 토론하고, 각 팀에서 나온 아이디어를 발표한다. 그런 뒤 선생님께서 여러 풀이를 보여주시고 필요하다면 공식을 유도해 주셨다. 당연히 효과는 좋았고, 심지어 재밌었다. 살면서 처음으로 수학 시간이 기다려졌었다. 만약 기회가 된다면 꼭 도전해 보길 바란다.