‘둠(DOOM)’의 개발자 존 카맥(John Carmack)이 던진 비유가 흥미롭다. 인공지능(AI)이 코드를 만들어내는 시대가 오면서 사람이 직접 코드를 작성하는 ‘손코딩’이 언젠가는 일본 무술처럼 변할 수 있다는 이야기다.
처음에는 코딩이 사라진다는 주장처럼 들릴 수 있다. 하지만 카맥이 말하는 핵심은 코딩의 소멸이 아니다. 코딩의 역할과 가치가 달라질 수 있다는 이야기에 가깝다.
카맥은 미야모토 무사시의 『오륜서』를 읽은 경험을 바탕으로 무술과 프로그래밍의 변화를 연결한다.
무술은 원래 생존을 위한 기술이었다. 전장에서 상대를 제압하고 살아남기 위해 필요한 실전 능력이었다. 하지만 사회와 전쟁의 방식이 바뀌면서 무술의 의미도 달라졌다. 오늘날 사람들은 반드시 싸우기 위해 무술을 배우지 않는다. 스포츠로 수련하고, 몸과 정신을 단련하고, 기술 자체를 익히기 위해 수련한다.
실전에서 반드시 필요했던 기술이 시간이 지나면서 ‘도(道)’가 된 것이다.
카맥이 바라보는 손코딩의 미래도 이와 비슷하다.
초기의 프로그래머들은 컴퓨터의 가장 낮은 수준까지 내려가야 했다. 기계어와 어셈블리 수준에서 명령어를 직접 작성하며 컴퓨터의 동작을 제어했다.
하지만 프로그래밍은 끊임없이 추상화됐다.
컴파일러가 등장하면서 기계어를 직접 다룰 필요가 줄었다. 고수준 프로그래밍 언어가 등장하면서 개발자는 인간의 사고방식에 가까운 언어로 프로그램을 작성할 수 있게 됐다. 라이브러리와 프레임워크가 등장하면서 수많은 기능을 처음부터 직접 구현할 필요도 없어졌다.
개발자는 이미 오랫동안 코드를 직접 작성하는 일에서 한 단계씩 멀어져 왔다.
그리고 생성형 AI는 이 흐름을 다시 한 번 밀어붙이고 있다.
그 대표적인 현상이 ‘바이브코딩(vibe coding)’이다.
바이브코딩에서는 개발자가 모든 코드를 직접 작성하지 않는다. 자연어로 원하는 기능과 결과를 설명하고, AI가 코드를 생성하면 이를 실행해보면서 다시 요구사항을 전달한다. 코드를 한 줄씩 만들어가는 대신 AI와 대화하며 결과물을 만들어가는 방식이다.
“로그인 기능을 만들어줘.”
“이 데이터를 그래프로 보여줘.”
“모바일 화면에 맞게 바꿔줘.”
과거에는 이런 요구를 프로그래밍 언어로 번역해야 했다. 이제는 자연어로 설명하면 AI가 그 사이의 상당 부분을 담당한다.
프로그래밍의 인터페이스가 코드에서 의도로 이동하고 있는 셈이다.
여기서 카맥의 무술 비유가 의미를 갖는다.
검을 직접 잘 휘두르는 것과 싸움을 잘하는 것이 반드시 같은 것은 아니다. 칼을 얼마나 빠르게 휘두르는지보다 언제 칼을 뽑아야 하는지, 어디를 겨눠야 하는지, 애초에 싸워야 하는 상황인지 판단하는 것이 중요할 수 있다.
코딩도 비슷하다.
AI가 코드를 만들어주는 시대가 오면 개발자의 경쟁력은 코드를 얼마나 빠르게 입력하느냐만으로 설명하기 어려워진다.
오히려 중요한 것은 무엇을 만들어야 하는지를 발견하는 능력이다.
누군가에게 어떤 문제가 있는지 발견하고, 그 문제를 기술로 해결할 수 있는 지점을 찾아내는 것. 사람의 필요와 기술 사이에 새로운 접점을 만드는 것. 그리고 그 아이디어를 실제 서비스로 연결하는 것.
AI가 코드를 만들어주는 비용이 낮아질수록 이 부분의 중요성은 오히려 커질 수 있다.
과거에는 아이디어가 있어도 실제 제품으로 만들기까지 상당한 개발 시간과 비용이 필요했다. 개발자를 고용하고, 기획서를 만들고, 디자인하고, 개발하고, 테스트하는 긴 과정이 필요했다.
하지만 AI와 바이브코딩의 등장으로 이 과정의 일부가 빠르게 짧아지고 있다.
간단한 웹서비스나 애플리케이션의 프로토타입 정도라면 이제 아이디어를 가진 사람이 직접 만들어볼 수도 있다.
그렇다면 문제가 하나 생긴다.
누구나 만들 수 있게 된다면 무엇을 만들어야 하는지가 더 중요해지는 것 아닌가.
코드를 만드는 능력이 희소하지 않게 될수록 아이디어를 발견하는 능력, 문제를 정의하는 능력, 사람과 기술의 접점을 찾는 능력이 중요해질 수 있다.
이것은 단순히 ‘기획자가 개발자보다 중요해진다’는 이야기도 아니다.
개발자의 역할 자체가 달라질 수 있다는 의미다.
과거의 개발자가 주어진 요구사항을 코드로 구현하는 사람에 가까웠다면, AI 시대의 개발자는 문제를 발견하고, 아이디어를 구체화하고, AI를 이용해 그것을 빠르게 현실로 만드는 사람에 가까워질 수 있다.
바이브코딩은 이런 변화를 가장 직접적으로 보여준다.
개발자가 AI에게 코드를 만들어달라고 요청하는 순간에도 실제로 중요한 것은 코드가 아니다.
무엇을 만들어야 하는지 설명하는 것이다.
처음에는 “버튼 하나 만들어줘”라고 시작할 수 있다. 하지만 좋은 결과물을 만들기 위해서는 그 버튼을 왜 만들어야 하는지, 사용자가 어디에서 그것을 눌러야 하는지, 눌렀을 때 무엇이 일어나야 하는지 정의해야 한다.
결국 AI가 코드를 대신 작성할수록 기획과 문제 정의의 영역이 개발의 앞단으로 이동한다.
그리고 여기에서 손코딩의 의미도 달라진다.
AI가 대부분의 코드를 만들어주는 시대가 온다고 해서 직접 코드를 작성하는 사람이 사라지는 것은 아니다. 오히려 손코딩은 생산성을 위한 필수 작업에서 벗어나 하나의 숙련과 수련으로 남을 가능성이 있다.
컴퓨터가 어떻게 작동하는지 이해하고, 소프트웨어의 구조를 직접 설계하고, 자신의 생각을 코드로 표현하는 능력은 여전히 의미가 있다.
다만 그것이 모든 소프트웨어를 만드는 유일한 방법일 필요는 없어진다.
무술과 마찬가지다.
현대의 무술 수련자가 매일 전쟁터에 나가는 것은 아니다. 그렇다고 무술이 의미를 잃은 것은 아니다. 실전이라는 목적에서 어느 정도 분리되면서 오히려 기술 자체를 깊이 이해하고 수련하는 영역이 만들어졌다.
손코딩 역시 그렇게 될 수 있다.
반드시 해야 하는 일이 아니라, 깊이 있게 할 수 있는 일이 되는 것이다.
그렇다면 AI 시대에 코딩을 배우는 이유도 달라질 수 있다.
모든 사람이 전문 개발자가 되기 위해 코딩을 배울 필요는 없을 수 있다. 하지만 AI가 만들어내는 것을 이해하고, 자신의 아이디어를 구체화하고, 기술과 대화하기 위해서는 여전히 코딩에 대한 기본적인 감각이 필요하다.
마치 자동차를 직접 만들지는 않더라도 자동차가 어떻게 움직이는지 알면 운전과 선택의 폭이 넓어지는 것과 비슷하다.
결국 중요한 것은 코드를 누가 쓰느냐가 아니다.
무엇을 만들 것인가.
왜 만들어야 하는가.
누구의 문제를 해결하는가.
그리고 사람과 기술이 만나는 새로운 접점은 어디에 있는가.
AI가 코드를 생산하는 비용을 낮출수록 이 질문의 가치는 오히려 높아질 수 있다.
프로그래밍의 역사는 계속해서 추상화돼 왔다. 기계어에서 어셈블리로, 고수준 언어로, 라이브러리와 프레임워크로 이동했다. 이제 생성형 AI와 바이브코딩은 그 추상화를 다시 한 단계 끌어올리고 있다.
이번에는 자연어가 프로그래밍의 새로운 인터페이스가 될 수 있다.
그렇다면 카맥의 비유는 단순한 미래 예측이 아니다.
프로그래밍의 역사를 바라보면 인간은 이미 여러 차례 ‘직접 하는 것’에서 ‘무엇을 할 것인지 결정하는 것’으로 이동해왔다.
AI는 그 변화를 한 번 더 밀어붙이고 있다.
손코딩이 언젠가 ‘무도’가 된다면 코딩이 사라져서가 아니다.
코드를 만드는 일이 더 이상 가장 어려운 일이 아니게 되기 때문이다.
누구나 만들 수 있는 시대가 오면 결국 차이를 만드는 것은 무엇을 만들 것인지 아는 사람이다.
바이브코딩은 그 시대를 보여주는 하나의 신호다.
그리고 AI 시대의 개발자는 코드를 가장 많이 쓰는 사람이 아니라, 사람의 문제와 기술 사이에서 새로운 접점을 발견하고 그것을 실제 무언가로 만들어내는 사람이 될 수 있다.
어쩌면 코딩의 미래는 ‘코딩을 잘하는 사람’의 시대가 아니라 ‘무엇을 코딩해야 하는지 아는 사람’의 시대인지도 모른다.
그렇게 보면 카맥의 질문은 결국 코딩이 사라지느냐는 질문이 아니다.
코딩이 더 이상 단순한 기술이 아니라 하나의 ‘도(道)’가 될 수 있느냐는 질문이다.

한재호 기자
댓글0
첫 댓글을 남겨 보세요.