8월 2일, 소프트웨어 개발자 Ankur Sethi가 자신의 블로그에 트렌드에 역행하는 제안을 올렸다. AI로 코드를 작성할 때 복사·붙여넣기를 하지 말고, AI가 생성한 코드를 에디터에 직접 손으로 다시 입력하자는 것이다. 그는 AI에게 단호한 규칙을 세웠다. 코드는 채팅창에만 보여주고, 파일은 절대로 직접 수정하지 말 것. 이 짧은 글은 당일 Hacker News에서 363점과 300개 이상의 댓글을 받으며 하루 중 두 번째로 뜨거운 토론글이 되었다.
그림: 논쟁의 현장, 제목 아래로 치열한 댓글란이 이어진다. 출처: news.ycombinator.com
댓글란은 즉시 두 입상으로 갈라졌다. “AI를 끊지 못하는 사람들이 만든 새로운 기도 방식이다.” “몸매를 유지하는 가장 좋은 방법이 차 뒤를 따라 걸어가는 것이라고 말하는 꼴이다.” “이 제안은 터무니없이 어리석다.” 비판도 많았지만, 강한 공감을 표하는 이들도 많았다. 그중 자주 인용된 댓글이 있다. “예전에는 관리직으로 옮긴 개발자의 코드 감각이 녹슨다고 생각했다. 이제 우리는 모두 관리직이 되어버렸다.”
코드는 들어왔지만 이해는 남지 않았다: ‘인지 부채’
그는 왜 이런 수고를 자처할까? Sethi는 10년 이상의 프로그래밍 경력을 지녔고, AI 보조 도구도 적극 활용해왔다. AI에게 맡기면 몇 분 만에 새로운 기능이 완성된다. 하지만 시간이 지날수록 찜찜한 기분이 들었다. 코드는 저장소에 들어갔지만, 이해는 머릿속에 들어오지 않았다. 기능은 잘 동작하지만 정작 자신이 그것이 어떻게 작동하는지 설명할 수 없었다.
그는 이를 인지 부채(cognitive debt), 즉 갚지 않은 이해의 빚이라고 부른다. 나중에 그 코드를 수정해야 할 때가 오면, 다시 AI에게 “이 부분이 무슨 역할을 하나요?”라고 물어봐야 한다. 시험 전에 친구 숙제를 그대로 베껴 적은 학생이 나중에 단 한 줄도 읽지 못하는 상황과 같다.
그가 일반적인 방법을 시도해보지 않은 것은 아니다. 오늘날 개발자들의 표준적인 동작은 AI가 코드를 제시하고 사람이 한 줄씩 리뷰하는 것이다. 하지만 방어적인 코드가 수백 줄씩 이어지고 주석도 부실하며 미세한 오류가 숨어 있는 코드를 읽는 것은 대단히 지루하고 고통스럽다. 그는 블로그에서 “회사 일이라면 참겠지만, 개인 프로젝트에서는 절대로 참을 수 없다. 개인 프로젝트의 즐거움은 과정 자체와 자신의 손으로 직접 작성한 코드에서 나온다”고 말했다.
이 고민에는 과학적 근거도 있다. MIT 연구팀이 대학생 54명을 대상으로 글쓰기 실험을 진행했다. 한 그룹은 ChatGPT를, 다른 그룹은 검색엔진을, 마지막 그룹은 순수하게 스스로 작성하게 했다. 뇌파 측정 결과, AI를 사용한 그룹의 뇌 신경 연결성이 가장 약했다. 글을 완성한 지 몇 분 후 방금 쓴 내용을 요약하게 했을 때도 AI 그룹의 성적이 가장 낮았으며, 자신이 이 글을 썼다는 느낌조차 옅었다. 도구가 많은 것을 대신할수록 뇌의 참여는 줄어든다. 연구팀은 이것이 경각심을 가질 만한 신호라고 짚었다.
그림: MIT 연구(Kosmyna 등)의 뇌파 데이터 — 외부 도구가 많이 개입할수록 뇌 신경 연결이 약해진다. 출처: brainonllm.com
Sethi의 대응책은 AI에게 명확한 선을 그어주는 것이었다. 그는 프로젝트 지침 파일에 다음과 같이 적었다. “나는 이 프로젝트에 들어오는 모든 줄의 코드를 이해하고 싶다. 내가 명시적으로 요청하지 않는 한 파일을 생성, 수정, 이동, 삭제하지 말 것. 모든 수정 제안은 채팅창에만 출력하고 입력은 내가 직접 한다. 의존성 설치나 명령 실행도 내가 수행한다.” AI를 대필자가 아닌 자문위원으로 활용하는 방법이다.
다시 입력하는 과정에서 실제로 훈련되는 것
방식은 느리고 우직해 보인다. AI가 채팅창에 코드를 생성하면, 그는 에디터에 한 줄씩 타이핑한다. 이해되지 않는 구문이 나오면 멈춰 서서 문서를 찾아보거나 AI에게 설명을 요구한다. 그는 효율이 ‘10배속’에서 ‘2배속’으로 떨어졌다고 말하지만, 그 대가로 모든 코드가 자신의 손과 눈을 거쳐가게 된다.
여기에는 오랜 프로그래밍 학습의 원칙이 담겨 있다. 80~90년대에 코딩을 배운 이들은 기억할 것이다. 책이나 잡지에 나온 예제 코드를 복사해서 쓸 수 없어 일일이 손으로 입력하고 실행하며 수정하곤 했다. 수동 입력은 자연스럽게 사람을 천천히 가게 만든다. 손이 키보드를 치는 동안 눈으로 코드를 읽고, 머릿속으로 ‘이 줄이 무엇을 하는지’를 검증하게 된다.
키보드를 치는 근육 기억(Muscle Memory)은 코드의 구조를 손가락에 새겨 넣는다. 다음에 유사한 기능을 만들 때 머리보다 손이 먼저 기억해낸다.
타이핑 과정은 그 자체로 코드 리뷰가 된다. Sethi는 손과 머리가 함께 움직일 때 AI의 환각(Hallucination)이나 좋지 않은 설계를 훨씬 더 쉽게 발견할 수 있다고 말한다. 입력이 끝나면 머릿속에 ‘코드 지도’가 그려진다. 어떤 기능이 어디에 있고, 수정하려면 어디를 건드려야 하는지가 명확해진다. 다음에 AI에게 지시를 내릴 때도 더 정확하게 프롬프트를 작성할 수 있다. 댓글란에는 작가 헌터 S. 톰슨이 젊은 시절 헤밍웨이의 소설을 처음부터 끝까지 타자기로 다시 쳐보며 거장의 문체와 리듬을 체득했던 사례를 언급하는 이도 있었다. 코드를 다시 치는 것도 본질적으로 같은 이치다.
반대파의 반론: 암기일 뿐인가, 직관인가
가장 강한 반론을 제기한 이는 사용자 f311a였다. 코드를 다시 입력하는 것은 미적분 답안을 다시 베껴 적는 것과 같아서, ‘기억’은 훈련될지 몰라도 ‘직관’은 키울 수 없다는 주장이다. 베껴 적는 사람은 각 단계를 작성하는 법은 알게 되어도 왜 처음에 그런 설계를 선택했는지, 다른해법은 없는지 알지 못한다. 그의 제안은 반대다. “먼저 스스로 작성하고, 그 후에 AI에게 최적화를 맡겨라.”
이 시각에 동조하는 이들도 많았다. “그런 논리라면 개발자는 컴파일러가 생성한 어셈블리 코드도 직접 다시 쳐야 하느냐”는 비꼬는 의견부터, “개발의 병목은 타이핑 속도가 아니며 저가치 작업에 시간을 낭비하는 것”이라는 지적도 나왔다. 동료들로부터 ‘일이 느리다’는 평가를 받을 위험을 경고하는 이도 있었다. 반면 찬성파는 ‘구문적으로는 맞지만 의미적으로 비어 있는 출력’을 수동적으로 소비하는 것만으로는 학습 프로세스가 손상된다는 연구 결과를 인용하며, 눈으로 읽는 것과 진정으로 이해하는 것은 다르다고 맞섰다.
| 수동 입력 찬성파 | 수동 입력 반대파 |
|---|---|
| 숙제 베끼기 = 미습득, 재입력 = 진정한 이해 | 풀이 베끼기는 암기 훈련일 뿐 직관을 키우지 못함 |
| 속도를 줄여야 AI의 환각과 안 좋은 설계를 발견 | 병목은 타이핑이 아님, 시간 낭비 |
| 근육 기억과 코드 지도로 수정 시 속도 향상 | 먼저 스스로 작성하고 AI로 최적화하는 것이 효율적 |
| 오랜 원칙: 프로그래밍은 직접 쳐서 배워야 함 | 도구는 사람을 해방하여 더 중요한 일을 하게 해야 함 |
양측의 대립은 결국 같은 질문의 양면이다. AI에게 작업의 대행을 맡긴 후, 당신의 역량은 성장하고 있는가 아니면 녹슬고 있는가? 찬성파는 역량의 퇴화를 두려워하고, 반대파는 ‘수동 입력’이라는 방식의 비효율성을 경계한다. 사람이 설계를 담당하고 AI가 실행을 보조하는 구조를 통해서도 역량 퇴화를 막을 수 있다는 시각이다.
코딩을 하지 않는 모든 이들이 직면한 부채
이 논쟁은 겉보기엔 개발자 커뮤니티의 일처럼 보인다.하지만 AI를 활용해 업무를 처리하는 모든 지식 노동자가 동일한 갈림길에 서 있다. AI에게 연말 보고서를 쓰게 할 때 당신은 스스로 글을 쓰는 능력을 유지하고 있는가? AI에게 발표 자료나 데이터 정리 작성을 맡길 때 분석과 표현 능력은 얼마나 남아 있는가? ‘AI가 대신해주면서 정작 자신은 발전하지 못하는 현상’은 이번 기술 변화가 모두에게 던지는 질문이며, 개발자는 단지 가장 먼저 그 벽에 부딪힌 이들일 뿐이다.
코딩을 하지 않는 이들도 이 논쟁에서 세 가지 실천적인 아이디어를 얻을 수 있다. 첫째, AI에게 초안을 만들게 한 뒤 자신의 언어로 직접 수정하는 것이다. 수정 과정이 곧 이해의 과정이 된다. 둘째, AI에게 개요와 틀만 잡게 하고 세부 내용은 직접 채워 넣는 방식이다. 셋째, Hacker News 댓글에서 호평받은 방법을 활용하는 것이다. 작업이 끝난 후 AI에게 완성된 결과물에 대해 질문을 내게 하고, 답변하지 못하는 부분을 ‘갚지 못한 인지 부채’로 파악하는 것이다.
손으로 다시 입력하는 것이 최선의 해법인지에 대해서는 300개가 넘는 댓글 속에서도 하나의 결론으로 모이지 않았다. Sethi 본인조차 이 방법이 “어처구니없이 비효율적”이라는 점을 인정한다. 하지만 이 논쟁은 우리에게 짚어볼 만한 질문을 남긴다. “도구 덕분에 10배 빨리 달릴 수 있게 되었을 때, 당신은 무엇을 대가로 지불하여 진정한 이해를 얻을 것인가?” 이 질문에 AI가 대신 대답해줄 수는 없다. 기술이 가속하는 시대에 빠르게 달리는 것도 좋지만, 자신의 발로 걷는 법을 잊어서는 안 된다.
참고 링크:
- Ankur Sethi: Prevent cognitive debt by manually retyping LLM-generated code
- HN 토론 (item?id=49153374)