아버지가 90년대에 가르쳐준 AI 코딩의 교훈
1990년대 아버지와의 체스 기억(눈가리개 체스)을 소재로, LLM 시대의 AI 코딩에서 개발자가 무엇을 이해하고 통제해야 하는지를 논하는 에세이다. 저자는 바이브 코딩처럼 AI에 모든 것을 맡기면 소프트웨어가 오래가지 못하며, 강한 눈가리개 체스 기사처럼 코드의 추상적 구조와 관계를 머릿속에 깊이 모델링하는 능력이 AI 시대 프로그래머의 핵심 역량이라고 주장한다.
2026년 8월 23일 게시. 1990년대 후반의 어느 여름방학이었다. 나는 8살쯤 된 어린 아이였고, 아버지는 이전에 나에게 체스 규칙을 가르쳐주어 우리는 가끔씩 대국을 했다. 하지만 이번에는 달랐다. 대국을 시작하려는 순간 아버지는 일어나서 보드에서 물러나 방 건너편 의자에 앉아 반대쪽을 바라보았다. 내가 기물을 움직일 때마다 "E2의 폰을 E4로"라고 소리로 말하면, 아버지는 자신의 수를 대답했고 나는 그것을 보드에 다시 옮겨 놓으며 실제 상황을 볼 수 있었다. 우리는 눈가리개 체스(blindfolded chess)를 두고 있었던 것이다. 나는 기물이 X에 없는데 X에서 Y로 움직인다고 말했던 기억이 난다. 아버지는 망설임 없이 그 기물이 정확히 어디에 있는지 말해주었다. 나는 금방 패배했지만 매료되었다.
강한 플레이어들은 일반적으로 보드를 사진처럼 완벽하게 세밀하게 그려내지 않는다. 그들은 구조화된 관계들의 집합을 추적한다: 중요한 기물들이 어디에 있는지, 어떤 칸이 공격 또는 방어되고 있는지, 열린 파일, 대각선, 폰 구조, 핀·포크·허술한 기물 같은 전술적 관계, 그리고 매 수가 지나고 무엇이 변했는지. 흥미롭게도 눈가리개 기사들은 자신의 집중이 문자 그대로 보드를 '보는' 것보다 관계와 합법적 가능성에 더 향한다고 말한다. 그들의 체스 지식이 포지션의 많은 부분을 자동으로 재구성해주기 때문이다. 따라서 이 특출난 기술은 사진적 기억력이 아니라 공간적 작업 기억, 패턴 인식, 절제된 계산, 주의력 통제의 조합이다. - Claude Fable 5
나는 체스에 깊이 빠지지 않고 대신 컴퓨터와 프로그래밍으로 방향을 돌렸다. 지난 1년 남짓 LLM이 프로그래밍에서 급부상하면서 소프트웨어 엔지니어에게 모든 것이 급격히 변하고 있다. 모두가 이 새로운 세계에서 어떻게 효과적으로 일해야 하는지 알아내려 하고 있고, 의견은 제각각이다. 모두에게 분명한 것은, 무엇을 원하는지 말하는 데 시간을 거의 쓰지 않고 AI가 작성한 코드를 읽지도 않는 방식으로 AI를 사용한다면 그것은 바이브 코딩(vibecoding)이며 결과물인 소프트웨어는 (돌아가긴 하더라도) 오래가지 못한다는 점이다.
그렇다면 AI에게 얼마나 코딩을 맡기고, 얼마나 통제하고 읽고(깊이 이해해야) 할까? 어느 정도는 고급 프로그래밍 언어와 비슷하다. 그전에는 프로그래머가 실제 하드웨어와 CPU가 명령을 실행하는 방식(메모리 관리, 포인터, 스레드 같은 것들)에 대해 더 깊은 이해가 필요했다. Java나 Python으로 프로그래밍하면 이런 것들을 잊어도 되지만, 이해해야 할 것들의 목록은 여전히 고정되어 있다(다만 더 짧고 단순한 목록일 뿐이다). 지금의 차이는 AI를 사용할 때 더 이상 무엇이든 알아야 한다는 실질적 요구사항이 없다는 점이다.
당연히 숙련된 프로그래머가 Claude Code 앞에 앉으면 비기술인이 하는 것보다 결과물의 품질이 더 높을 것이다(측정하기는 어렵지만). 하지만 숙련된 프로그래머도 지치거나 지루해져서 모든 것을 읽는 것을 그만두고 AI에게 통제권을 넘길 수 있다. 인간은 본질적으로 게으르고, 어차피 AI가 운전대를 잡고 있다는 느낌이 들 때는 예리하고 집중된 상태를 유지하기 어렵다.
따라서 여러 면에서 AI를 활용한 프로그래밍은 눈가리개 체스의 정반대다. 매 턴마다 주의를 기울일 필요도 없고, 중요한 기물이 무엇인지, 전술적 관계의 세부사항(코드 인터페이스와 API 같은)을 기억할 필요도 없다. 하지만 내가 주장하고자 하는 것은, 강한 눈가리개 체스 기사를 정의하는 기술이야말로 Claude Code 터미널 앞에서 코드를 읽거나 쓰지 않으면서도 성공할 수 있는 프로그래머의 기술과 같다는 것이다. 그리고 정말 뛰어난 프로그래머들은 이미 LLM 이전에 이런 기술을 갖추고 있었다. 예를 들어 코드가 어떻게 얽히는지, 그리고 그것이 항상 더 추상적인 아이디어나 목표의 표현이라는 것을 머릿속에 깊은 멘탈 모델로 갖는 능력, 그리고 기존 구현을 단순화하거나 개선할 수 있는 능력 말이다.