AI가 바꾼 학습의 풍경 — 더 이상 암기는 필요 없는가
지난주 팀 회의 중에 24살 신입 개발자가 Map 메서드의 리턴값을 물었다. "그건 그냥 ChatGPT한테 물어보면 되지 않아?"라는 말이 나왔고, 그 순간 나는 깨달았다. 시대가 정말로 바뀌었구나.
2014년만 해도 개발자들의 학습 방식은 매우 단순했다. 뭔가 모르면 Google에 검색하고, Stack Overflow에서 답을 찾았다. 그렇지 않으면 책을 읽거나 공식 문서를 뒤져야 했다. 이 과정은 고통스러웠고, 그만큼 기억에 남았다.
지금은 다르다. ChatGPT, Claude, Gemini 같은 생성형 AI가 나타나면서 학습의 풍경이 완전히 바뀌었다. 당신은 더 이상 "Stack Overflow에서 댓글 순서대로 읽는" 고민을 하지 않아도 된다. 그냥 물으면 맞춤형 답변이 온다. 더 이상 공식 문서의 미로 같은 구조 속에서 헤매지도 않는다.
내가 경험한 학습의 변화
내가 처음 프로그래밍을 배울 때는 1990년대 중반이었다. 당시에는 인터넷이 거의 없었다. 학교 도서관이나 서점의 책만 의존했다. C 프로그래밍 책 한 권을 몇 달에 걸쳐 읽고, 모든 예제를 손으로 직접 쳤다. 반복되는 패턴은 자연스럽게 머리에 남았다.
2000년대 초반은 Stack Overflow 이전의 시대였다. 모르는 것이 있으면 관련 웹사이트를 찾아다녔다. 때로는 잘못된 정보에 속기도 했다. 블로그나 포럼의 댓글들을 읽으며 "어느 것이 맞는지" 스스로 판단해야 했다. 이 과정 속에서 깊이 있는 이해가 자연스럽게 생겼다.
2010년대는 Stack Overflow의 황금기였다. 대부분의 개발 질문에는 이미 답변이 있었다. 개발 속도는 빨라졌고, 문제 해결은 훨씬 쉬워졌다. 하지만 여전히 많은 시간이 필요했다. 검색 키워드를 찾는 데 몇 분, 관련 페이지들을 읽는 데 몇 분, 그 중에서 자신의 상황에 맞는 답을 찾는 데 또 몇 분. 누적되면 하루에 수십 분이 소요되었다.
2023년 이후는 완전히 다르다. 같은 질문을 ChatGPT에 하면 30초 내에 맞춤형 답변을 받는다. 더 깊은 설명이 필요하면 "왜?"라고 묻기만 하면 된다. 코드 예제까지 원하면 생성된다. 문법 에러가 있으면 지적받는다.
내 직관으로는 이 변화가 장기적으로 부정적 영향을 미칠 것 같다. 하지만 거부할 수 없는 흐름인 것도 분명하다.
암기는 이제 악인가
어제 블로그에서 본 어떤 글에는 "AI 시대에 암기는 시간 낭비다"라고 적혀 있었다. 나는 이것에 동의하지 않는다. 정확히는, 완전히 동의하지도 않지만 완전히 반대도 하지 않는다.
사실 개발에서 필요한 "암기"는 두 가지다. 첫 번째는 API 문서의 세부 사항이다. "Array.map의 세 번째 파라미터는 뭐지?"라는 식의 것들. 이런 것들은 AI 시대에 정말 불필요해 보인다. 필요할 때마다 물어보면 되니까.
두 번째는 개념적 이해다. 맵 함수가 뭔지, 왜 쓰는지, 언제 쓰면 안 되는지 같은 것들. 이것은 여전히 중요하다. 오히려 더 중요해졌다고 봐야 한다.
문제는 이 두 가지 경계가 모호하다는 것이다. API의 세부 사항을 모르면 개념도 제대로 이해할 수 없을 때가 있다. 예를 들어 JavaScript의 bind, call, apply의 차이는 암기 사항처럼 보이지만, 실제로는 JavaScript의 컨텍스트(context) 개념을 이해하지 않고는 쓸 수 없다.
// 이 차이를 이해하려면 'this'의 바인딩을 알아야 한다
const person = { name: 'Alice', greet: function() { console.log(this.name); } };
const anotherPerson = { name: 'Bob' };
person.greet(); // 'Alice'
person.greet.call(anotherPerson); // 'Bob'
person.greet.apply(anotherPerson); // 'Bob'
const boundGreet = person.greet.bind(anotherPerson); // 'Bob' (나중에 호출해도)
ChatGPT에게 이것의 차이를 물어보면 정확한 설명을 받을 수 있다. 하지만 그 설명을 받는 과정에서 개발자가 "아, 그렇구나"라고 깨닫지 못하면 의미가 없다. 그냥 "언제는 call, 언제는 bind"라고 암기하는 것과 다를 바 없다.
Stack Overflow에서 ChatGPT로의 여정
내 팀의 코드 리뷰에서 눈에 띄는 변화가 있다. 예전에는 개발자들이 Stack Overflow의 링크를 달아두고 "이 방법을 썼습니다"라고 설명했다. 이제는 그냥 코드만 있다. 출처가 AI인지 직접 작성한 건지 구분이 안 간다.
이것이 꼭 나쁜 것만은 아니다. Stack Overflow의 답변도 완벽하지 않았다. 특히 낡은 답변들은 요즘 표준에 맞지 않을 수 있다. 오래된 JavaScript 코드는 async/await 이전 방식으로 되어 있을 수 있다. 하지만 질문자는 이 문제를 인식하지 못하고 그냥 복사해서 썼다.
반면 ChatGPT는 최신 표준에 맞춰 답변을 생성한다. 적어도 내가 물어볼 때는 그렇다. 이것은 명백히 개선이다.
하지만 문제가 있다. Stack Overflow는 커뮤니티다. 만약 답변이 틀렸다면 댓글로 지적받는다. 다른 개발자들의 의견이 모이면서 "이 방법은 위험하다" 같은 집단 지혜가 쌓인다. 반면 ChatGPT의 답변은 독단적이다. 그것이 맞든 틀리든 당신은 그 답변만 본다. 댓글도 없고, 다른 의견도 보이지 않는다.
내가 최근에 본 예시가 있다. 어떤 개발자가 Node.js의 이벤트 루프에 대해 ChatGPT에 물었고, 그 답변을 그대로 학습 자료로 사용했다고 했다. 그런데 그 설명이 완벽하지는 않았다. 단순화된 설명이었다. 실제로 이벤트 루프의 세부 동작 방식은 그것보다 훨씬 복잡하다.
문제는 ChatGPT가 "이것은 단순화된 설명입니다"라고 명시하지 않는다는 것이다. 마치 완전한 설명인 것처럼 느껴진다.
문서 읽기의 중요성이 더 커졌는가, 줄어들었는가
공식 문서를 읽는 일이 예전처럼 중요하지 않아 보인다. ChatGPT가 있으니까. 나는 팀의 주니어 개발자들에게 "공식 문서를 읽어봐"라고 말할 때마다 약간의 죄책감을 느낀다. 왜냐하면 나도 이제는 공식 문서를 그렇게 자주 읽지 않거든.
하지만 여기서 중요한 건 결론이 아니라 과정이다. 공식 문서를 읽다 보면 몰랐던 기능을 우연히 발견한다. 다른 섹션의 예제를 보면서 관련 개념을 학습한다. 이런 우연들이 깊이 있는 이해를 만든다.
반면 ChatGPT에 구체적인 질문을 하면 그 질문에만 정확히 답변을 받는다. 관련된 다른 기능은 모른다. 알아야 한다는 생각도 못 한다.
예를 들어 Python의 list comprehension에 대해 배웠다고 하자. 공식 문서를 읽다 보면 generator expression이라는 관련 개념을 만난다. 그리고 "아, 같은 원리인데 메모리 효율이 다르네"라고 깨닫는다. 이것이 깊이다.
ChatGPT에게 "list comprehension의 문법을 설명해 줄 수 있냐"고 물으면 정확한 설명을 받는다. 하지만 generator expression까지 언급되지는 않을 가능성이 높다. 왜냐하면 당신이 묻지 않았으니까.
진짜 문제는 따로 있다
AI 시대의 학습 방식 변화가 만드는 가장 큰 문제는 사실 암기도, 문서 읽기도 아니다. 그것은 "비판적 사고의 약화"다.
프로그래밍을 배우는 과정은 원래 고통스럽다. 무언가 작동하지 않을 때 그 이유를 찾기 위해 깊이 파고들어야 한다. 이 과정 속에서 당신은 시스템을 깊이 있게 이해한다. 버그가 발생했을 때 충분히 비판적으로 생각할 수 있는 능력이 생긴다.
하지만 ChatGPT로 모든 게 빨리 해결되면? 당신은 왜 버그가 발생했는지 깊이 생각할 필요가 없다. 그냥 AI의 설명을 믿으면 된다. 그리고 대부분의 경우 그 설명이 맞다. 문제는 "대부분"이라는 단어다. 모든 경우가 아니다.
내가 본 사례들:
- ChatGPT가 생성한 React 코드의 useEffect 의존성 배열이 잘못됐는데, 개발자는 그 점을 지적받을 때까지 몰랐다.
- TypeScript의 제네릭을 잘못 이해한 채로 코드를 작성했는데, 타입 체크는 통과했고 런타임에서만 문제가 발생했다.
- SQL 쿼리의 성능이 나쁜데, 개발자는 "ChatGPT가 만든 거니까 당연히 최적화되어 있을 거"라고 생각했다.
이런 일들은 개발자가 자신의 코드를 비판적으로 검토했다면 피할 수 있었다. 하지만 AI에 대한 맹신이 그런 검토를 방해했다.
AI 시대의 새로운 학습 방식
그렇다면 AI 시대에는 어떻게 학습해야 할까? 내 제안은 이렇다.
첫째, ChatGPT를 "빠른 참고서"로 생각하되, "진리"로 생각하지 말아라. AI가 제시한 답변을 받아들이기 전에 항상 한 번 더 생각해보자. "이게 정말 맞나? 왜 이렇게 되나?"
둘째, 여전히 깊이 있는 학습은 필요하다. 하지만 그 학습의 대상이 바뀌었다. 이제 "API의 세부 사항"을 암기할 필요는 없다. 대신 "개념과 원리"에 집중하자. 이벤트 루프, 프로토타입 체인, 함수형 프로그래밍 같은 것들. ChatGPT는 이런 개념의 설명을 해줄 수 있지만, 그것을 진정으로 "이해"하려면 여전히 당신의 노력이 필요하다.
셋째, 공식 문서는 여전히 중요하다. 단, 이제 목적이 바뀌었다. 세부 사항을 찾기 위해서가 아니라, "전체 그림"을 보기 위해서. 공식 문서는 그 기술의 설계자들의 의도를 반영한다. 이것은 ChatGPT에서는 얻을 수 없는 가치다.
넷째, 실제 문제를 많이 풀어보자. 이것은 예전이나 지금이나 변하지 않은 진리다. ChatGPT가 코드를 만들어주고, 당신이 그것을 이해하기 위해 노력하는 과정. 이 과정 속에서 진정한 학습이 일어난다.
오랜 개발 경험으로 내린 결론
내가 프로그래밍을 배우던 시대와 지금은 정말 다르다. 나는 고전 방식으로 배웠다. 책을 읽고, 예제를 직접 쳐보고, 버그를 직접 고쳤다. 그 과정은 느렸지만 깊었다.
지금의 주니어 개발자들은 ChatGPT와 함께 배운다. 그 과정은 빠르지만 얕을 수 있다. 하지만 빠른 피드백 루프도 장점이다. 더 많은 것을 더 빨리 시도해볼 수 있기 때문이다.
둘 다 옳다. 시대가 다를 뿐이다. 중요한 건 각 시대의 도구를 지혜롭게 사용하는 것이다. AI를 맹신하지도, 거부하지도 말고, 정확히 이해하고 활용하자. 그리고 "개념 학습"이라는 기본을 절대 놓지 말자. 그것만이 당신을 AI를 능숙하게 다루는 개발자로 만들 것이다.