Automatic programming

Salvatore Sanfilippo

자동 프로그래밍

원문은 Salvatore Sanfilippo님이 에 게재했습니다. 이 블로그 구독하기

제 유튜브 채널에서 저는 얼마 전부터 AI의 도움을 받아 소프트웨어를 작성하는 과정을 ‘자동 프로그래밍’이라는 용어로 부르기 시작했다. 곧 이 과정은 그냥 ‘소프트웨어를 작성하는 과정’ 그 자체가 되리라 믿는다.

혹시 눈치채지 못했다면 말하자면, 자동 프로그래밍은 같은 LLM을 쓰더라도 직관과 설계, 지속적인 조율, 그리고 소프트웨어에 대한 아이디어를 가지고 과정을 이끄는 사람이 누구냐에 따라 전혀 다른 결과를 만들어낸다.

제발 “Claude가 바이브 코딩으로 이 소프트웨어를 만들어줬어요”라는 말은 그만하자. 바이브 코딩은 과정에 전혀 참여하지 않은 채 AI를 시켜 소프트웨어를 생성하는 방식이다. 원하는 것을 아주 두루뭉술하게 설명하면 LLM은 학습된 내용과 해당 실행에서 우연히 우세했던 샘플링 등에 따라 자발적으로 떠오른 첫 번째 아이디어나 설계, 코드를 그대로 내놓는다. 바이브 코더가 할 수 있는 일은 많아야 뭔가 작동하지 않거나 기대와 다르다고 보고하는 정도다.

과정이 실제로 무슨 일이 일어나고 있는지 당신이 알고 있는 진짜 소프트웨어 프로덕션이라면 기억하라. 그 소프트웨어는 *당신*이 만들고 있는 것이다. 그리고 기억할 것은, LLM이 학습하는 것이 사전 학습만이 전부는 아니지만(RL이 차지하는 비중도 크다) 사전 학습 데이터는 인간이 만든 것이므로 우리는 무언가를 가로채는 것이 아니라는 점이다. AI가 생성한 코드가 ‘우리의 것’이라고 해도 된다. 그럴 권리가 있다. 사전 학습은 사실 우리 모두의 집단적 선물이며, 덕분에 많은 개인이 그렇지 않았다면 결코 할 수 없었을 일을 할 수 있게 되었다. 어떤 면에서는 우리가 하나의 집단 지성으로 연결된 것처럼 말이다.

물론 바이브 코딩이 무슨 일이 일어나고 있는지 제대로 이해하지 못한 채 소프트웨어를 만들어내는 과정이라면 — 바이브 코딩도 나름의 자리가 있고 소프트웨어 생산을 민주화하니 나는 전적으로 괜찮다고 생각한다 — 자동 프로그래밍은 AI의 도움을 받아 높은 품질을 추구하고 제작자의 소프트웨어에 대한 비전을 엄격하게 따르며 소프트웨어를 만들어내는 과정이다(이 비전은 다층적이다. 높은 수준에서 특정한 것들을 정확히 어떻게 할 것인지부터 직접 개입해 AI에게 특정 함수를 어떻게 작성해야 하는지 알려주는 수준까지 아우른다). 그리고 물론 과정의 근본적인 부분은 *무엇을* 만들 것인가이다.

나는 프로그래머이며, 자동 프로그래밍을 사용한다. 이런 방식으로 내가 생성하는 코드는 내 것이다. 나의 코드, 나의 결과물, 나의 프로덕션이다. 나와 당신은 자랑스러워해도 된다.

아직 완전히 납득하지 못했다면 Redis를 생각해보라. Redis에는 기술적으로 특별히 새로운 것이 별로 없다. 특히 초기에는 유능한 시스템 프로그래머라면 누구나 작성할 수 있는 기본적인 자료구조와 네트워킹 코드의 합에 불과했다. 그렇다면 왜 그토록 유용한 소프트웨어가 되었을까? 그 안에 담긴 아이디어와 비전 때문이다.

프로그래밍은 이제 자동화됐다. 비전은 아직 아니다.

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.

댓글