러버덕 디버깅 (Rubber duck debugging)

nemo·2022년 5월 23일
3

Programming

목록 보기
1/4
post-thumbnail

블로그에 배운 지식을 공유하고 깨달은 점을 회고하는 것이야말로 러버덕 디버깅의 한 방법이다. 플랫폼이 러버덕 역할을 하는 셈이다.

러버덕 디버깅이란?

이름에서 알 수 있듯이 러버덕 디버깅은 고무 오리를 사용하여 문제가 있는 부분을 디버깅하는 것을 말한다. (꽥) 예상치 못한 동작을 일으키는 경우 문제를 알아차릴 때까지 코드의 각 단계를 오리에게 자세히 설명하고 또 설명하는 방식이다.
설명하며 디버깅하다 보면 결국 문제를 일으키는 코드를 파악할 수 있다. 또한 오리에게 설명할 때 더 간단한 용어를 통해 조각 단위로 분해해서 설명하는 것만으로도 문제를 명확하게 할 수 있다. 결국 문제를 해결한 것은 오리가 아니다.

러버덕 디버깅 방법

  1. 러버덕을 책상 위 컴퓨터 옆에 둔다.
  2. 오리에게 인사 후 코드를 검토해달라고 부탁한다.
  3. 당신의 코드가 무엇을 해야 하는지, 오리에게 설명하고 세부 코드를 한줄한줄 설명한다.
  4. 오리에게 설명하면서 어떤 부분이 잘못되었는지 깨닫는 시점이 온다.
  5. 오리는 당신에게 도움이 되었다는 사실에 기뻐할 것이다.

물론 실제 동료에게 설명하는 것도 좋지만, 오리에게 설명하는 것이 더 도움이 된다고 한다.

러버덕 디버깅이 유용한 이유

코드를 작성할 때 자신의 논리에 빠지기 쉽고, 올바르게 수행하고 있다고 확신하게 될 수도 있다. 따라서 프로그래머는 테스트 및 코드 검토를 통해 작성한 코드를 다른 사람에게 보여줄 필요가 있다.
러버덕 디버깅은 프로그래머가 각 부분을 인정하고 설명하도록 하여 터널 시야(Tunnel vision)를 없앨 수 있다. 마치 새로운 눈으로 코드를 다시 보는 것과 같다. 이렇게 하면 실제로 다른 사람에게 도움을 요청할 필요 없이 코드 검사를 할 수 있다는 이점이 있다. 결국 다른 사람에게 설명을 하기 위해서는 먼저 자신이 완전히 이해해야 한다.

러버덕 디버깅을 하면 일반적인 프로그래밍 사고 방식과 다르게 전환되도록 한다. 러버덕 디버깅을 하려면 속도를 늦추고 당연한 부분까지 차분하게 코드를 한 줄씩 설명해야 한다. 변수 이름 및 오타와 같이 쉽게 간과될 수 있는 세부 사항에도 더 주의를 기울이게 된다.
팀원들은 자신의 코드를 디버깅하느라 정신이 없지만, 무한한 인내심을 가진 러버덕은 그렇지 않다. 함게 문제를 해결하는 것을 기쁘게 생각한다.

물론 러버덕 기술의 한계에 도달했다면 팀의 도움을 요청하는 것도 나쁘지 않다. 프로그래밍 지식은 팀원의 기술과 비교할 수 없기 때문에.

러버덕 디버깅 이점은 즉각적인 문제 해결에만 국한되지 않는다. 간단하고 명확하며 간결한 어어로 사물을 설명하는 방법을 배우는 것은 직장과 남은 인생에도 도움이 될 정도로 좋은 기술이다.
한 걸음 물러서서 대충 넘기지 않고 멀리서 자신의 행동을 검토한다면, 자신의 새로운 통찰력과 아이디어를 발견할 수 있을 것이다.



참고
ZenHub

0개의 댓글