효율을 위임하고 남은 자리에서 이야기를 쓰게 된 과정
하루 중 가장 오래 들여다보는 화면은 새까만 터미널인데, 거기에 코드가 거의 없다. 자연어다. 한국어와 영어가 섞인 문장들이 터미널 위에 줄줄이 쌓인다. "이 컴포넌트는 사용자의 입력을 받아서 상태를 업데이트하되, 이전 상태와 비교해서 변경이 있을 때만 렌더링해줘." 예전 같았으면 직접 코드를 쳤을 문장이다. 지금은 이걸 AI에게 건넨다. AI가 코드를 쓴다. 나는 그 코드를 읽고, 수정 방향을 다시 자연어로 쓴다.
이 루틴이 반복된 지 1년쯤 됐다. 그 사이에 내 안에서 뭔가가 바뀌었다. 정확히 뭐가 바뀌었는지 언어로 옮기기가 쉽지 않아서, 이 글을 쓰고 있다.
마케터에서 개발자로 전직할 때 스스로에게 최면을 걸었다. '나는 타고난 개발자다.'라고, 웃기지만 이게 꽤 잘 먹혔다. 문제를 보면 가장 짧은 경로를 찾도록 사고하게 되었다. A에서 B로 가는 데 세 가지 방법이 있으면, 가장 적은 연산으로 도달하는 길을 고르는 습관. 코드는 원래 그런 것이다. 같은 결과를 내는 함수가 두 개 있으면 더 빠른 쪽이 좋은 코드다. 군더더기는 없는 게 미덕이다.
문제는 이 근육이 코드 밖에서도 작동했다는 거다. 누군가에게 뭔가를 설명할 때, 과정을 건너뛰고 결론부터 말했다. 친구가 고민을 꺼내면 해결책부터 떠올렸다. 영화를 봐도 구조적 허점이 먼저 눈에 들어왔다. 효율이라는 렌즈가 일상의 기본값이 되어버린 셈이다. 코드를 잘 쓰게 된 대신, 이야기를 잘 듣는 사람은 아니게 됐다.
그러다 AI에게 코드를 맡기기 시작하면서 이상한 일이 벌어졌다. AI에게 "로그인 기능 만들어줘"라고 치면 코드가 나오긴 나온다. 그런데 내가 원하는 코드가 아니다. 내가 원하는 코드를 받으려면 결론이 아니라 과정을 써야 했다. 어떤 상황에서 이 기능이 필요한지, 사용자가 어떤 흐름으로 여기까지 도달하는지, 기존 코드와 어떤 방식으로 연결되어야 하는지. 맥락과 서사가 필요했다.
리처드 세넷이 『장인』에서 쓴 표현이 떠오른다. "생각하는 손." 장인은 손을 움직이면서 동시에 사고한다. 손과 머리가 분리되지 않는다. 코드를 직접 칠 때의 나도 그랬다. 타이핑하면서 생각했고, 생각하면서 타이핑했다. 그런데 AI에게 위임하는 순간, 손과 머리가 분리됐다. 손은 설계문서를 쓰고, 실행은 기계가 한다. 장인의 손에서 설계자의 손으로. 같은 키보드를 두드리는데 손의 역할이 달라졌다.
그리고 이 설계문서라는 게, 글쓰기와 꽤 닮아 있었다.
글도 결론만 적으면 맛이 없다. "이 브랜드는 잘하고 있다"라고 쓰면 아무도 고개를 끄덕이지 않는다. 왜 잘하고 있는지, 어떤 맥락에서 그 판단에 도달했는지, 읽는 사람이 같은 경로를 걸어야 비로소 결론이 설득력을 갖는다. 코드에서는 결론만 있으면 충분했다. 함수는 입력과 출력이 맞으면 그만이다. 그 사이에 무슨 일이 벌어졌는지 사용자는 알 필요가 없다.
그런데 글은 반대다. 사이에 무슨 일이 벌어졌는지가 글의 전부다.
레이먼드 카버의 소설을 읽으면 결론이 없다. 『사랑을 말할 때 우리가 이야기하는 것』에서 네 사람이 식탁에 앉아 진을 마시며 사랑에 대해 말하는데, 누구도 답을 내지 못한다. 빛이 사라지듯 이야기가 조용히 멈춘다. 결론 없이도 글이 작동한다. 오히려 결론이 없기 때문에 남는 게 있다. 카버는 결론을 쓰는 대신, 독자가 결론에 도달할 수 있는 장면을 배치했다.
AI에게 건네는 설계문서도 비슷한 구조다. 결론(코드)을 직접 쓰는 대신, AI가 결론에 도달할 수 있는 맥락을 배치한다. 그리고 글을 쓸 때도, 나는 결론을 직접 말하는 대신 독자가 그 자리에 도착할 수 있도록 장면을 놓는 연습을 하고 있다.
비트겐슈타인은 "내 언어의 한계는 내 세계의 한계"라고 썼다. 개발자로 살면서 나의 언어는 코드였다. 조건문과 반복문, 함수와 객체. 그 언어로 표현할 수 있는 세계는 명확하고 효율적이었지만, 동시에 건조했다. 과정은 생략되고 결과만 남는 세계.
자연어로 설계문서를 쓰기 시작하면서, 내 언어가 달라졌다. 맥락을 설명하고, 의도를 전달하고, 흐름을 그리는 문장을 매일 썼다. 그러다 보니 코드 바깥에서도 과정을 서술하는 힘이 붙었다. 효율의 근육 옆에 서사의 근육이 자라기 시작한 거다.
직장에서 블로그 운영을 자처한 것도, 퇴근 후에 에세이를 쓰기 시작한 것도, 웹소설의 세계관을 설계하기 시작한 것도 — 돌이켜보면 전부 이 자연어 설계문서에서 뻗어나온 가지들이다. 코드를 쓰던 손이 설계문서를 쓰게 됐고, 설계문서를 쓰던 손이 이야기를 쓰기 시작했다.
가장 빠른 길은 AI에게 맡겼다. 그러자 내 앞에 남은 건 "왜"와 "어떻게"를 설명하는 일이었다. 누군가를 설득하기 위한 이야기. 읽는 사람이 고개를 끄덕일 수 있도록 맥락을 쌓는 일.
결국 효율을 위임한 뒤에 남는 건, 사람만이 할 수 있는 일이었다. 경험을 서사로 바꾸는 것. 맥락을 읽고 이야기로 엮는 것. 코드가 할 수 없는 일. AI가 대신할 수 없는 일. 설계문서는 AI를 위해 쓰기 시작했지만, 그 과정에서 되찾은 건 나 자신의 목소리였다.
터미널에 자연어를 쓰는 손이 오늘도 키보드 위에 올라가 있다. 같은 손으로 에세이를 쓰고, 같은 손으로 소설의 첫 장면을 고치고 있다. 코드를 쓰던 손이 이야기를 쓰는 손이 된 게 아니다. 원래 이야기를 쓰는 손이었는데, 한동안 코드만 쓰고 있었나보다.