AI 시대에 프로그래밍을 처음 배운다면: Anthropic 연구가 알려주는 올바른 학습 자세
2026년 1월, Anthropic 리서치팀이 논문을 하나 냈다. "How AI Impacts Skill Formation". AI 코딩 도구를 쓰면서 새로운 기술을 배울 때, 실제로 실력이 느는지를 실험으로 측정한 연구다.
결론부터 말하면, AI를 쓴 그룹이 이해도 테스트에서 17% 낮은 점수를 받았다. 작업 속도는? 통계적으로 유의미한 차이가 없었다. 빨라지지도 않으면서 덜 배운 거다.
이 글은 그 연구를 바탕으로, 프로그래밍을 처음 공부하는 사람들이 AI를 어떻게 활용해야 하는지를 정리한 것이다.
실험은 이렇게 진행됐다
연구진은 파이썬 경력 1년 이상인 개발자 52명을 모았다. 모두 Trio라는 비동기 라이브러리를 써본 적 없는 사람들이다. 절반에게는 AI 어시스턴트를 줬고, 나머지 절반은 공식 문서만 보고 풀게 했다.
실험 구조 (75분) ┌──────────┐ ┌────────────────┐ ┌──────────┐ │ 워밍업 │ → │ Trio 코딩 과제 │ → │ 평가 │ │ (4분) │ │ (35분) │ │ 14문항 │ └──────────┘ └────────────────┘ └──────────┘ │ │ ┌──────┴──────┐ 27점 만점 퀴즈 │ │ (디버깅/코드읽기/ AI 그룹 대조군 개념이해) (26명) (26명)
35분 동안 코딩 과제를 풀고, 바로 퀴즈를 봤다. 디버깅, 코드 읽기, 개념 이해 세 영역.
빠르지도 않으면서 덜 배웠다
| 항목 | AI 그룹 | 대조군 | 차이 |
|---|---|---|---|
| 퀴즈 점수 | 50% (13.5/27) | 67% (17.7/27) | -17% |
| 과제 완료 시간 | 약 19분 | 약 23분 | -4분 (유의하지 않음) |
| 과제 완료율 | 100% | 85% | +15% |
| 에러 발생 수 (중앙값) | 1.0회 | 3.0회 | -2.0회 |
과제 완료율은 AI 그룹이 높았다. 26명 전원이 두 과제를 끝냈고, 대조군은 4명이 시간 내에 못 끝냈다. 에러도 AI 그룹이 훨씬 적었다.
그런데 배운 건 대조군이 더 많았다. 특히 디버깅에서 격차가 가장 컸다.
여기서 잠깐 생각해볼 게 있다. 대조군은 에러를 3배 더 겪었고, 4명은 시간 안에 과제를 끝내지도 못했다. 그런데도 이해도는 더 높았다. 삽질이 실력이 된 거다. 이건 직관에 좀 어긋나는 결과인데, 논문의 수치가 꽤 명확하다 (Cohen's d=0.738, p=0.010).
같은 AI를 써도 결과가 갈린다
사실 이 연구에서 가장 재미있는 건 평균 비교가 아니다. AI 그룹 내부를 뜯어보면, 같은 AI를 쓰면서도 어떤 사람은 65% 이상, 어떤 사람은 40% 미만을 받았다. AI를 "어떻게" 썼는지가 관건이었다.
연구진은 AI 사용 방식을 6가지 패턴으로 분류했다.
AI 사용 패턴과 학습 성과 학습 성과 낮음 학습 성과 높음 ◀─────────────────────────────────────▶ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ AI 위임 │ │ 점진적 의존 │ │ 반복적 디버깅 │ │ Delegation │ │ Progressive │ │ Iterative Debug │ │ │ │ Reliance │ │ │ │ "이거 만들어줘" │ │ "처음엔 혼자 │ │ "이거 왜 안 돼?" │ │ │ │ 하다가 결국 │ │ "그래도 안 돼" │ │ 점수: 24~39% │ │ 맡기게 됨" │ │ "또 안 돼" │ └──────────────────┘ └──────────────────┘ └──────────────────┘ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ 생성 후 이해 │ │ 하이브리드 │ │ 개념 질의 │ │ Generation │ │ Hybrid Code- │ │ Conceptual │ │ Then Compreh. │ │ Explanation │ │ Inquiry │ │ │ │ │ │ │ │ "만들어준 코드 │ │ "코드도 보여주고 │ │ "nursery가 뭐야?"│ │ 설명해줘" │ │ 왜 이렇게 짠 │ │ "채널은 언제 써?"│ │ │ │ 건지도 알려줘" │ │ → 코드는 직접 │ │ 점수: 65%+ │ │ 점수: 65%+ │ │ 점수: 65%+ │ └──────────────────┘ └──────────────────┘ └──────────────────┘
윗줄이 저성과, 아랫줄이 고성과다. 하나씩 뜯어보자.
이렇게 쓰면 안 배운다
AI 위임 (Delegation)
"이 함수 구현해줘"라고 통째로 맡기는 방식이다. 과제 완료는 가장 빨랐지만 퀴즈 점수는 최하위. 이 패턴의 참가자 4명은 에러를 거의 안 겪었다. AI가 정확한 코드를 바로 만들어주니까. 하지만 Trio의 핵심 개념인 nursery가 뭔지, 채널이 어떻게 동작하는지 전혀 모른 채로 끝났다.
솔직히 이건 코딩이 아니라 받아쓰기다.
점진적 의존 (Progressive Reliance)
처음에는 혼자 시도한다. 그런데 Task 2가 어려워지면서 슬슬 AI에 기대기 시작하고, 결국 완전 위임으로 전환된다. 이게 위임보다 좀 더 안 좋은 건, 본인은 "나름 노력했다"고 착각한다는 점이다. 나도 가끔 이러는 것 같아서 무섭다.
반복적 AI 디버깅 (Iterative AI Debugging)
코드를 짜다가 에러가 나면 에러 메시지를 통째로 AI에 던진다. AI가 수정본을 주면 붙여넣고, 또 에러 나면 또 던진다. 이 루프에 빠지면 쿼리 수만 많고 이해도는 바닥이다.
에러 메시지를 읽는 건 AI가 아니라 본인이어야 한다. 에러 메시지 읽기가 싫어서 AI에 던지는 건, 운동이 귀찮아서 대신 운동해주는 로봇을 고용하는 것과 비슷하다.
이렇게 쓰면 배우면서 쓸 수 있다
개념 질의 (Conceptual Inquiry)
코드는 직접 짜고, AI에게는 개념만 묻는 방식이다. 연구에서 가장 성과가 좋았다.
나쁜 질문: "이 함수 구현해줘" 좋은 질문: "Trio에서 nursery가 하는 역할이 뭐야?" 좋은 질문: "cancel_scope와 move_on_after의 차이가 뭐야?"
이 패턴의 참가자 7명은 에러를 가장 많이 겪었다. 직접 코드를 짜니까 당연하다. 하지만 퀴즈 점수는 65% 이상이었고, 고성과 그룹 중 속도도 가장 빨랐다. 에러를 많이 겪되, 개념을 이해한 채로 겪으니까 학습이 되는 거다.
하이브리드 코드-설명 (Hybrid Code-Explanation)
코드를 요청하되, 반드시 설명을 함께 달라고 하는 방식이다.
"이 함수를 구현해주고, 각 줄이 왜 필요한지도 설명해줘"
이 패턴의 참가자들은 AI가 내놓은 설명을 읽는 데 꽤 시간을 들였다. 코드를 받아 쓰더라도 "왜 이렇게 짰는지"를 이해하려 했다는 점이 차이를 만들었다.
생성 후 이해 (Generation-Then-Comprehension)
AI에게 코드를 먼저 만들게 하고, 후속 질문으로 이해도를 높이는 방식이다.
1단계: "이 기능 구현해줘" ← 여기서 끝나면 '위임' 2단계: "이 코드에서 async with는 ← 이 질문이 갈림길 왜 필요한 거야?" 3단계: "nursery 없이 하면 ← 한 단계 더 어떻게 달라져?"
1단계만 하면 저성과 패턴인 "위임"이다. 2~3단계가 붙으면 고성과로 바뀐다. 같은 시작이라도 끝이 다른 셈이다.
그래서 입문자는 어떻게 해야 하나
이 연구가 말하는 걸 나름대로 정리하면 이렇다.
에러를 피하지 마라
대조군의 학습 루프: 코드 작성 → 에러 → 에러 메시지 읽기 → 원인 추론 ↑ │ └──────── 수정 후 재시도 ◀──────────────┘ 이 루프를 3번 돌면 → 개념이 몸에 붙는다
대조군은 평균 3번의 에러를 겪었고, 4명은 시간 안에 과제를 끝내지도 못했다. 하지만 이해도 점수는 67%. AI 그룹은 에러 1번에 전원 완료. 하지만 점수는 50%.
과제를 "끝내는 것"과 "이해하는 것"은 전혀 다른 일이다. 에러 앞에서 답답한 그 시간이 실력을 만든다.
AI에게 코드 말고 개념을 물어라
┌─────────────────────────────────────────┐ │ AI 활용 판단 기준 │ ├─────────────────────────────────────────┤ │ │ │ "이 개념이 뭐지?" → AI에게 물어라 │ │ "이 에러가 뭐지?" → 직접 읽어라 │ │ "이 코드를 만들어줘" → 직접 짜라 │ │ "왜 이렇게 동작하지?" → AI에게 물어라 │ │ "안 되는데 고쳐줘" → 직접 고쳐라 │ │ │ └─────────────────────────────────────────┘
단순하게 말하면, "왜"로 시작하는 질문은 AI한테 해도 좋고, "어떻게"로 시작하는 실행은 직접 하는 게 낫다.
AI 코드를 받았으면 꼭 뜯어봐라
불가피하게 AI가 만든 코드를 참고할 때가 있다. 그때는 후속 질문을 해라.
- "이 코드의 각 줄이 무슨 역할이야?"
- "이 부분을 빼면 뭐가 달라져?"
- "다른 방식으로도 될까?"
코드를 받는 것 자체가 문제가 아니다. 받고 나서 그냥 넘어가는 게 문제다.
디버깅은 AI에게 맡기지 마라
연구에서 AI 그룹과 대조군의 격차가 가장 컸던 영역이 디버깅이다. AI가 에러를 대신 잡아주니까, 본인의 디버깅 근육이 안 붙은 거다.
그런데 현실에서 개발자가 가장 오래 하는 일이 뭔가? 새 코드를 짜는 게 아니라 기존 코드의 버그를 찾는 일이다. AI가 짜준 코드에 버그가 있으면 결국 찾아야 하는 것도 사람이다.
AI 시대 개발자에게 필요한 역량 코드 생성 ──── AI가 대체 가능 ──── 중요도 ↓ 코드 이해 ──── AI가 대체 불가 ──── 중요도 ↑ 디버깅 ──── AI가 대체 불가 ──── 중요도 ↑↑ 설계 판단 ──── AI가 대체 불가 ──── 중요도 ↑↑↑
코드 타이핑 속도는 AI가 이겼다. 하지만 "이 코드가 왜 틀렸는지"를 찾는 능력은 직접 에러를 겪어본 사람만 갖게 된다.
학습 단계에 따라 AI 사용량을 조절하라
논문 저자들도 "점진적 노출"을 권고한다. 학습 단계에 따라 AI 활용 수준을 달리 하라는 이야기다.
학습 단계별 AI 활용 가이드 기초 (1~3개월) ├── AI 사용: 최소한 ├── 에러: 직접 읽고 직접 고친다 ├── AI 질문: "이 개념이 뭔지" 정도만 └── 목표: 에러 메시지와 친해지기 응용 (3~6개월) ├── AI 사용: 개념 설명 + 코드 리뷰 ├── 에러: 5분 이상 고민 후 AI 힌트 참고 ├── AI 질문: "왜 이렇게 동작하는지" 중심 └── 목표: 디버깅 근육 만들기 실전 (6개월~) ├── AI 사용: 생산성 도구로 적극 활용 ├── 에러: AI와 협업하되 최종 판단은 직접 ├── AI 질문: 제한 없음 └── 목표: 코드 리뷰와 설계 판단력
기초 단계를 건너뛰면 연구에서 보여준 "위임" 패턴에 빠진다. 과제는 끝나는데 아무것도 안 남는 상태.
마무리
이 논문을 읽고 나서 자꾸 드는 생각이 있다. AI 코딩 도구가 "생산성 도구"인 건 맞는데, 아직 기초를 쌓는 단계에서는 생산성이 아니라 학습이 목표여야 한다는 거다. 목표가 다르면 도구 쓰는 법도 달라야 한다.
대조군이 더 많이 헤매고, 더 많이 틀리고, 심지어 시간 안에 못 끝낸 사람도 있었다. 그런데 이해도는 더 높았다. "효율적으로 과제를 끝내는 것"과 "실력을 키우는 것"은 같은 방향이 아닐 수 있다. 배우는 단계에서 효율을 추구하면 오히려 손해다.
AI를 안 쓸 수는 없다. 안 써야 하는 것도 아니다. 다만 24시간 옆에 있는 튜터한테 숙제를 대신 시키면 안 된다. 답을 알려달라고 하지 말고, 왜 그런지를 물어야 한다. 그리고 에러 메시지가 뜨면, 일단 한 번은 직접 읽어보자. 그 답답한 시간이, 결국 나중에 AI가 틀렸을 때 알아차릴 수 있는 힘이 된다.
참고 논문: Judy Hanwen Shen, Alex Tamkin. "How AI Impacts Skill Formation" (2026). Anthropic Research.

댓글
댓글을 작성하려면 이 필요합니다.