AI와 함께 배우는 프로그래밍 학습법

바이브 코딩, 두 달 후 눈이 트인다 — AI와 함께 배우는 프로그래밍

by the게으름



바이브 코딩, 두 달 후 눈이 트인다 — AI와 함께 배우는 프로그래밍 학습법



TL;DR


LLM은 단순 채점기가 아니라 피드백·적응형 학습·버그 분석 도구로 활용할 때 효과가 크다.

“답 알려줘” → “힌트만 줘”로 질문법을 바꾸면 학습 속도가 빨라진다.

국내외 사례 모두 AI 기반 자동 채점·튜터링 실험이 늘어나고 있다.

핵심은 AI가 아니라 사람이 성장한다는 점.


새벽 2시의 고민, 그리고 5년간의 실험


어느 대학의 컴퓨터공학과 교수가 새벽 2시에 150개의 파이썬 과제를 보며 계산기를 두드린다. 과제당 10분, 총 25시간. 금요일까지 돌려줘야 한다. 조교에게 맡길까, 아니면 AI 도구를 써볼까?


이런 고민, 이 교수만의 것이 아니었다.


2019년부터 2024년까지, 전 세계 대학에서 같은 질문을 던졌다. "LLM으로 프로그래밍 교육을 개선할 수 있을까?" 수백 명의 교수가 실험했고, 수천 명의 학생이 참여했다. 어떤 대학은 GPT-4로 자동 채점 시스템을 만들었고, 어떤 곳은 Codex로 실시간 디버깅 도우미를 구축했다.


브라질의 연구팀이 이 모든 실험 결과를 모았다. 32개의 연구를 체계적으로 분석해서 무엇이 효과적이었고, 무엇이 실패했으며, 무엇이 위험한지 정리했다. 이것이 바로 "프로그래밍 교육 평가 과정에서 LLM 활용에 관한 체계적 문헌 고찰"이라는 논문이다.


연구진이 발견한 건 단순한 성공 사례가 아니었다. 교육 현장에서 검증된 방법론, 실제로 작동하는 도구들, 그리고 예상치 못한 부작용들이었다.

%ED%99%94%EB%A9%B4_%EC%BA%A1%EC%B2%98_2025-09-13_013704.png?type=w800


네 가지 발견


연구진이 찾아낸 첫 번째는 자동 피드백 시스템이었다.

기존의 자동 채점은 단순했다. "틀렸습니다. -5점." 끝이었다.

하지만 GPT-4 같은 LLM은 달랐다.


"15번 줄을 보세요. 배열 크기가 10인데 11번째 원소에 접근하려고 했네요. 이런 오류를 'off-by-one error'라고 부릅니다. for문의 조건을 i < len(arr)-1로 바꿔보세요."


단순한 오류 지적이 아니라 교육이 일어나고 있었다.



두 번째는 적응형 학습이었다.

Tutorly라는 시스템은 흥미로운 방식으로 작동했다. 같은 반복문 오류라도 학생에 따라 다르게 설명한다.

초보자에게는 "반복문은 같은 작업을 여러 번 하는 거예요"라고 시작하지만,

어느 정도 아는 학생에게는 "인덱스 범위를 벗어났네요. enumerate() 함수를 써보는 건 어때요?"라고 제안한다.



세 번째 발견은 버그 수정 도구들이었다.

PyDex와 InferFix 같은 도구들은 단순히 버그를 고치는 게 아니었다.

버그가 어디 있는지 알려주고, 어떻게 고치는지 보여주고, 가장 중요한 건 왜 그렇게 고쳐야 하는지 설명했다.

연구 결과 이런 도구를 사용한 학생들이 과제를 20% 더 빨리 끝냈다.

하지만 속도보다 중요한 건 "이해하면서" 끝냈다는 점이었다.



네 번째는 프롬프트 엔지니어링이었다.

같은 AI라도 어떻게 질문하느냐에 따라 교육 효과가 완전히 달라졌다.

"답 알려줘"라고 하면 답만 나온다.

"왜 이렇게 되는지 설명해줘"라고 하면 원리를 가르친다.

"힌트 3개만 줘"라고 하면 스스로 생각하게 만든다.



성지순례에서 배운 것

이 논문을 읽다가 문득 10여년전 스페인 성지순례가 떠올랐다.

산티아고 길을 한 달 동안 걸었다. 스페인어는 "올라 세뇨리따"와 "미 까사 수 까사" 정도만 알고 갔다.

"라 비다 로카"도 알긴 했지만.

81cucVYlvzL.jpg


그때도 핸드폰이 아이폰이긴 했는데, 뭐 지금처럼 실시간 번역기능이나, 그런것도 없었고, 주로 시골을 걷다보니 와이파이도 거의 없었다. 카페에서 커피 하나 시키는 것도 손짓 발짓 눈짓 다 섞어가며 했다. 그런데 매일 걷고, 매일 스페인 사람들과 부딪히다 보니 신기한 일이 일어났다. 귀가 트이기 시작한 것이다.


처음 배운 단어는 “폴 빠볼”, “아쿠아리우스 나랑카 폴바볼” “카페 콘 레체 우노 마스 폴파볼”.

어떻게 쓰는지? 그때도 몰랐고 아직도 모른다.

걍 발음이랑 억양만 외운 수준.

“아쿠아리우스(포카리스웨트 같은거) 오렌지맛 주세요”

“우유 커피 한잔 더 주세요” 뭐 이런뜻이지.


몇일 후 부터는 간단한 주문이 가능했다.

2주가 조금 지나, 오랜만에 도시에서 버거킹을 먹었다. 버거킹에서 "감자튀김 대신 어니언링으로 바꿔주시고, 패티 하나 추가해주세요"를 스페인어로 말하고 있었다.


한 달째 되니 레스토랑에서 "등심 스테이크는 미디움 레어로 해주시고, 오늘의 수프는 뭔가요? 샐러드 말고 감자튀김으로 주세요"를 자연스럽게 주문했다.

뭐 지금 적은 정도로 유창한건 아니었고, 떠듬떠듬.


번역기를 쓸 수 없는 환경이 오히려 학습을 만들었다.

필요가 절실했고, 매일 노출됐고, 실수해도 계속 시도했다.



바이브 코딩도 똑같다

논문을 읽으면서 깨달았다.

바이브 코딩하는 내 모습이 스페인어 배우던 때와 똑같다는 것을.

처음엔 "AI야, 이거 전부 짜줘"였다. 에러가 나면 "이거 고쳐줘"였다.

Claude가 고쳐주면 "감사합니다"하고 넘어갔다. 뭐가 문제였는지, 왜 그렇게 고쳤는지는 관심 없었다.


하지만 두 달쯤 지나니 변화가 생겼다. 에러 메시지가 읽히기 시작했다.

"아, 또 타입 에러구나." "여기서 null 체크를 안 했네."


패턴이 보이기 시작한 것이다. 클러드가 에러를 못 잡고 있는 에러가 왜인지 알것만 같았고, 실제로 몇번 잡기도 했다.

논문은 이런 현상을 Progressive Disclosure라고 불렀다.

답을 바로 주지 않고 단계적으로 공개하는 교육 방법이다.

연구 결과 이 방법이 가장 효과적이었다. 학생들이 스스로 생각하게 만들면서도 좌절하지 않게 도와줬다.



내일부터 써먹는 즉시 실행 가이드

AI를 단순한 코드 생성기가 아니라 학습 도우미로 쓰려면 이렇게 물어보자:


“힌트 3개만 줘” → 스스로 생각할 여지를 확보

“에러 패턴만 분석해줘” → 문제 유형 학습

“초보자 기준으로 설명해줘” → 난이도 조절된 설명

“이 코드에 버그 가능성 3가지만 알려줘” → PyDex식 점검

“왜 이렇게 고쳐야 하는지 설명해줘” → 단순 수정 → 이해로 연결



교수의 도구를 훔쳐 쓰기

논문에서 소개한 도구들을 바이브 코딩에 그대로 적용할 수 있다는 걸 알았다.


PyDex처럼 "이 코드의 버그 가능성 3개만 알려줘"라고 물어볼 수 있다.

InferFix처럼 "메모리 누수 가능성 체크해줘"라고 요청할 수 있다.

Tutorly처럼 "초보자가 이해 못할 부분 설명해줘"라고 할 수 있다.


차이는 명확했다. "고쳐줘" 방식으로는 6개월이 지나도 여전히 "왜 에러나요?"를 물어본다.

하지만 "분석해줘" 방식으로 하면 두 달 후부터 패턴이 보이기 시작한다.



의존과 학습의 경계

논문은 한 가지 중요한 경고를 했다.

LLM 지원을 받은 학생들이 과제는 빨리 끝내지만, AI 없이는 아무것도 못하게 된다는 것이다.

코드는 맞는데 왜 맞는지 모른다. 버그는 고쳤는데 왜 버그였는지 모른다.


이건 바이브 코딩하는 사람들의 미래이기도 하다. 아니, 이미 현재일 수도 있다.

아니 그러니까 코딩을 모르고 바이브 코딩만 가능한 사람들 말이다.

세상에 그런사람이 어디 있냐고? 저요!


해법은 의외로 간단했다.

AI를 코드 생성기가 아니라 선생님으로 대하는 것이다.


"짜줘"가 아니라 "설명해줘"를 요청한다.

"고쳐줘"가 아니라 "뭐가 문제야?"를 묻는다.

"답 알려줘"가 아니라 "힌트만 줘"를 부탁한다.



두 달 후

성지순례에서 스페인어가 들리기 시작한 것처럼,

바이브 코딩도 시간이 지나면 눈이 트인다. 에러 메시지가 무섭지 않게 된다.

코드 구조가 보이기 시작한다.


"아, 이래서 이렇게 짰구나"하는 순간이 온다.


중요한 건 이 과정에서 성장하는 게 AI가 아니라 사람이라는 점이다.

AI는 그저 도구일 뿐이다.

스페인어를 배운 건 구글 번역기가 아니라 나였듯이, 코드를 배우는 것도 Claude가 아니라 사용하는 사람이다.


바이브 코딩은 대화다.

그리고 모든 대화가 그렇듯, 듣는 사람이 배운다.

단지 이번엔 묻는 사람도, 듣는 사람도, 배우는 사람도 모두 같은 사람일 뿐이다.

바이브 코딩은 코드를 AI가 짜고 에러를 수정해주는 게 아니라,


결국 나 자신을 디버깅하는 과정이었다.




참고자료


https://ieeexplore.ieee.org/document/11058691









keyword