오토매틱 프로그래밍
제 유튜브 채널에서 얼마 전부터 AI의 도움을 받아 소프트웨어를 작성하는 과정을 “오토매틱 프로그래밍”이라는 용어로 부르기 시작했습니다. 머지않아 이 과정은 그냥 “소프트웨어를 작성하는 과정”이 될 거라고 저는 믿습니다.
혹시 눈치채지 못하셨다면, 오토매틱 프로그래밍은 같은 LLM을 쓰더라도 과정을 이끄는 사람의 직관과 설계, 지속적인 조율, 그리고 소프트웨어에 대한 아이디어에 따라 전혀 다른 결과를 만들어냅니다.
제발 “Claude가 바이브 코딩으로 이 소프트웨어를 만들어줬다”는 말은 그만해 주십시오. 바이브 코딩은 과정에 전혀 참여하지 않고 AI를 이용해 소프트웨어를 생성하는 방식입니다. 원하는 것을 아주 두루뭉술하게 설명하면 LLM은 학습된 내용과 그 실행에서 우연히 주도권을 잡은 특정 샘플링 등에 따라 자발적으로 떠오르는 첫 번째 아이디어나 설계, 코드를 내놓을 뿐입니다. 바이브 코더는 많아야 제대로 동작하지 않거나 기대와 다른 점을 보고하는 정도에 그칩니다.
과정이 실제로 무슨 일이 일어나고 있는지 알면서 진행하는 진정한 소프트웨어 생산이라면 기억하십시오. 그 소프트웨어를 만들고 있는 사람은 바로 *당신*이라는 것을요. 그리고 LLM이 학습하는 것이 사전 학습 데이터에만 달려 있는 것은 아니지만(RL이 큰 비중을 차지합니다), 사전 학습 데이터 자체는 인간이 만들어낸 것이라는 점도 기억하십시오. 그러니 우리가 남의 것을 가로채는 것이 아닙니다. AI가 생성한 코드를 “우리의 것”이라고 해도 됩니다. 그럴 권리가 우리에게는 있습니다. 사전 학습은 사실 우리 모두의 집단적 선물이며, 이를 통해 많은 개인이 그렇지 않았다면 결코 할 수 없었을 일을 해낼 수 있게 되었습니다. 어떤 의미에서는 우리가 이제 하나의 집단 지성으로 연결된 것과 같습니다.
물론 바이브 코딩이 무슨 일이 벌어지고 있는지 제대로 이해하지 못한 채 소프트웨어를 만들어내는 과정이라면 — 그 나름의 역할이 있고 소프트웨어 생산을 민주화한다는 점에서 저는 전혀 문제될 것이 없다고 생각합니다 — 오토매틱 프로그래밍은 AI의 도움을 받아 높은 품질을 지향하고 제작자의 소프트웨어에 대한 비전을 엄격히 따르는 소프트웨어를 만드는 과정입니다(이 비전은 다층적입니다. 높은 수준에서 특정한 일을 정확히 어떻게 할 것인지부터 직접 개입해 AI에게 특정 함수를 어떻게 작성해야 하는지 알려주는 일까지 포함할 수 있습니다). 그리고 물론 이 과정에서 근본적으로 중요한 것은 *무엇*을 만들 것인가 하는 점입니다.
저는 프로그래머이며, 오토매틱 프로그래밍을 사용합니다. 이런 방식으로 제가 만들어내는 코드는 제 것입니다. 제 코드이고, 제 결과물이며, 제 창작물입니다. 저도, 여러분도 자랑스러워할 수 있습니다.
아직 완전히 납득이 되지 않는다면 Redis를 생각해 보십시오. Redis에는 기술적으로 특별히 새로운 것이 많지 않습니다. 특히 초기에는 유능한 시스템 프로그래머라면 누구나 작성할 수 있는 기본 자료구조와 네트워킹 코드의 조합에 불과했습니다. 그런데 왜 그토록 유용한 소프트웨어가 되었을까요? 그 안에 담긴 아이디어와 비전 때문이었습니다.
프로그래밍은 이제 자동이지만, 비전은 아직 그렇지 않습니다.
글을 무작위로 읽기