강의

멘토링

로드맵

AI로 공부할수록 실력이 안 느는 이유 (+ Claude Code 러버덕 해결법)

딩코딩코

2026. 04. 19. 23:18

수정됨

AI 도구를 쓰면 쓸수록 오히려 실력이 줄어드는 것 같다는 느낌, 혹시 받아본 적 있으신가요? 에러가 나면 바로 AI에 붙여 넣고, 나온 코드를 그대로 복사하고, 프로젝트는 완성됩니다. 그런데 다음에 비슷한 문제가 또 나오면 또 AI한테 묻습니다. 이 패턴이 반복되면 코드는 쌓이지만 이해는 쌓이지 않습니다.

이 글에서는 이 문제의 원인을 학습 심리학 관점에서 설명하고, Claude Code 하나로 AI를 진짜 학습 도구로 바꾸는 방법을 알려드립니다. 하버드 CS50과 칸아카데미가 이미 쓰고 있는 방식입니다.

에러 복붙의 함정 — 왜 실력이 안 느는가

AI가 개발 생산성을 높인다는 건 사실입니다. 그런데 "생산성이 높아진다"는 것과 "실력이 는다"는 건 다른 이야기입니다. 전형적인 패턴은 이렇습니다.

  1. 에러 발생

  2. 에러 메시지를 AI에 그대로 붙여 넣기

  3. AI가 수정된 코드를 통째로 제공

  4. 코드를 복사해서 적용

  5. 동작 확인 후 다음으로 넘어감

이 과정에서 문제가 발생했는지, 수정 코드가 무엇을 고쳤는지 이해하는 단계가 없습니다. 같은 종류의 에러가 다시 나오면 또 같은 과정을 반복합니다.

단기적으로는 효율적으로 보이지만, 시간이 지날수록 AI 없이는 아무것도 못 하는 상태가 됩니다. 코딩 테스트 자리에 앉으면, 구두 면접에서 코드를 설명해야 하는 상황이 오면, 그때 비로소 실력 없이 코드만 쌓았다는 게 드러납니다.

자기 설명 효과 — 학습 심리학이 말하는 것

학습 심리학에는 자기 설명 효과(Self-Explanation Effect)라는 개념이 있습니다. 간단히 말하면, 정보를 받는 것보다 스스로 설명하는 과정에서 학습 효율이 훨씬 높아진다는 연구 결과입니다.

답을 받았을 때와 직접 답을 찾기 위해 설명하고 생각했을 때를 비교하면, 후자가 개념 이해와 장기 기억 모두에서 유의미하게 높은 성과를 보입니다.

💡 핵심 원리: 이해는 "받는" 행위가 아니라 "설명하는" 행위에서 생깁니다.

이것이 러버덕 디버깅(Rubber Duck Debugging)의 원리입니다. 고무 오리 인형 앞에서 코드를 한 줄씩 소리 내어 설명하다 보면 스스로 버그를 찾게 되는 고전적인 개발자 기법입니다. 설명하는 과정 자체가 사고를 정리하고 오류를 발견하게 만드는 겁니다.

하버드 CS50과 칸아카데미가 택한 방법

이 원리를 AI 시대에 적용한 사례가 이미 있습니다. 하버드 CS50칸아카데미는 AI 튜터를 도입하면서 한 가지 원칙을 고수했습니다. AI가 답을 주지 않고 질문만 한다는 것입니다. 학생이 에러를 가져오면, AI는 해결책을 주는 대신 이렇게 묻습니다.

  • "어느 줄에서 문제가 생긴다고 생각하나요?"

  • "이 함수가 어떻게 동작해야 하는지 직접 설명해볼 수 있나요?"

  • "지금까지 어떤 방법을 시도해봤나요?"

학생은 직접 생각하고 설명해야 합니다. 이 과정이 바로 학습입니다. 이 방식이 효과가 있다는 걸 세계 최고 수준의 교육 기관들이 검증했습니다. 그리고 이걸 지금 여러분의 개발 환경에 직접 세팅할 수 있습니다.

Claude Code로 AI 러버덕 만들기 — CLAUDE.md 설정법

Claude Code는 프로젝트 루트에 \`CLAUDE.md\` 파일을 두면 그 내용을 AI의 행동 지침으로 사용합니다. 이 파일 하나로 AI를 "답을 주는 도구"에서 "질문을 던지는 러버덕"으로 바꿀 수 있습니다. 아래는 기본 세팅 예시입니다. \`\`\`markdown # 러버덕 모드 당신은 학습을 돕는 AI 튜터입니다. 다음 원칙을 반드시 지켜주세요.

핵심 규칙

  1. 절대 코드를 직접 작성하거나 수정된 코드를 제공하지 마세요.

  2. 에러나 문제를 받으면 해결책 대신 질문으로 답하세요.

  3. 사용자가 스스로 설명하도록 유도하세요.

질문 예시

  • "이 에러 메시지에서 어떤 정보를 읽을 수 있나요?"

  • "이 코드가 무엇을 해야 한다고 생각하나요?"

  • "어느 줄이 문제일 것 같나요? 이유는요?"

  • "같은 문제를 다른 방법으로 접근해볼 수 있을까요?"

허용되는 것

  • 개념 설명 (단, 문제 해결에 직접 연결하지 않음)

  • 힌트 (코드 없이, 방향만 제시)

  • 격려와 다음 시도 유도

\`\`\` 이 파일을 프로젝트 루트에 저장하고 Claude Code를 실행하면 됩니다. 실습 자료는 GitHub에서 확인할 수 있습니다. (관련 자료: [github.com/dingcodingco/rubber-duck-demo](https://github.com/dingcodingco/rubber-duck-demo))

일반 AI vs 러버덕 AI — 실제 차이

같은 에러를 두 방식으로 가져갔을 때 어떻게 다른지 비교해보겠습니다. 상황: \`TypeError: Cannot read properties of undefined (reading 'map')\` 장점:

  • 같은 에러가 다시 나왔을 때 스스로 해결할 수 있게 됨

  • 코드베이스 전반의 데이터 흐름을 이해하는 습관이 생김

  • 설명하는 과정에서 다른 잠재적 버그도 함께 발견하는 경우가 많음

주의할 점:

  • 처음에는 느리고 답답하게 느껴질 수 있음

  • 바쁜 실무 상황에서 모든 상황에 적용하기는 어려울 수 있음

  • 완전히 모르는 개념은 러버덕 방식 전에 기본 개념 학습이 선행되어야 효과적

3가지 상황별 활용 시나리오

시나리오 1: 디버깅

버그가 생겼을 때 에러 메시지를 러버덕 AI에 가져가세요. AI가 "어느 함수에서 이 값이 만들어지나요?"라고 물어볼 겁니다. 직접 코드를 따라가며 설명하다 보면 어느 지점에서 문제가 생겼는지 스스로 찾게 됩니다.

시나리오 2: 코딩 테스트 준비

알고리즘 문제를 풀고 나서 러버덕 AI에 "내 풀이를 설명할 테니 들어줘"라고 요청하세요. 설명하다 보면 시간 복잡도나 엣지 케이스에서 구멍이 드러납니다. 면접에서 코드를 설명해야 하는 상황을 미리 연습하는 효과도 있습니다.

시나리오 3: 개념 학습

새로운 개념을 배울 때는 먼저 일반 AI나 공식 문서로 개념을 익히고, 이해했다고 생각하면 러버덕 AI에 "이 개념을 설명해볼게요, 맞게 이해한 건지 질문해주세요"라고 해보세요. 설명하다 보면 실제로 이해하지 못한 부분이 어디인지 정확히 드러납니다.

마치며 — 기본 학습 + 러버덕의 조합

AI를 아예 안 쓰는 게 답은 아닙니다. 개념을 처음 배울 때, 새로운 라이브러리 사용법을 찾을 때는 일반 AI가 훨씬 효율적입니다. 포인트는 언제 어떤 모드로 쓰느냐입니다.

  • 기본 개념 학습: 일반 AI로 빠르게 파악

  • 문제 풀이 / 디버깅: 러버덕 AI로 스스로 생각

  • 코딩 테스트 준비: 러버덕 AI로 설명 연습

AI 도구가 많아질수록 이 구분이 더 중요해집니다. 도구가 빠를수록 스스로 생각하는 기회는 줄어들기 때문입니다. CLAUDE.md 파일 하나면 지금 바로 시작할 수 있습니다. 실습 자료는 [github.com/dingcodingco/rubber-duck-demo](https://github.com/dingcodingco/rubber-duck-demo)에서 받아볼 수 있습니다.

설정 방법이나 활용 경험이 있으시면 댓글로 나눠주세요. 다음 글에서는 코딩 테스트에서 러버덕 AI를 구체적으로 활용하는 방법을 더 자세히 다룰 예정입니다.

자주 묻는 질문 (FAQ)

Q1. CLAUDE.md 설정이 없는 다른 AI에도 러버덕 방식을 적용할 수 있나요?

A. 가능합니다. ChatGPT나 다른 AI를 쓴다면 대화 시작 시 "에러나 문제를 가져가면 답 대신 질문만 해줘. 내가 스스로 설명하게 만들어줘"라고 요청하면 비슷하게 동작합니다. 다만 Claude Code의 CLAUDE.md 방식은 프로젝트 단위로 설정이 유지되어 매번 요청할 필요가 없다는 장점이 있습니다.

Q2. 업무 중에도 러버덕 모드를 써야 하나요?

A. 학습과 실무는 목적이 다릅니다. 마감이 있는 실무 상황에서는 일반 AI를 써도 됩니다. 러버덕 방식은 실력을 쌓는 것이 목적일 때, 특히 사이드 프로젝트나 학습용 코딩, 코딩 테스트 준비에 적용하는 것이 현실적입니다.

Q3. 러버덕 AI가 계속 질문만 하면 너무 오래 걸리지 않나요?

A. 처음엔 그렇게 느껴질 수 있습니다. 그런데 시간이 지나면 AI의 질문 없이도 에러를 보자마자 스스로 질문을 던지는 습관이 생깁니다. 그 시점부터는 디버깅 속도 자체가 빨라집니다. 단기 비용을 쓰고 장기 속도를 얻는 방식입니다.

Q4. 이 방식이 주니어 개발자에게만 유효한가요?

A. 아닙니다. 시니어 개발자도 새로운 도메인이나 기술 스택을 배울 때 같은 함정에 빠질 수 있습니다. 자기 설명 효과는 학습 경험과 관계없이 작동하는 원리입니다.

Q5. GitHub 실습 자료에는 무엇이 있나요?

A. https://github.com/dingcodingco/rubber-duck-demo 에 CLAUDE.md 예시 파일과 러버덕 AI와의 실제 대화 예시가 포함되어 있습니다. 바로 복사해서 쓸 수 있도록 구성되어 있습니다.