자연어가 프로그래밍 언어가 되다

 '고래'라는 아이디를 사용하는 개발자 분이 브런치에 쓴 글이 공감이 되었습니다. "이제 개발자 다 없어지나요?"라는 질문, 그에 대한 답은 '개발'의 정의가 바뀌고 있습니다라는 것입니다.
이 글이 흥미로운 건, AI 코딩 도구의 등장을 프로그래밍 언어의 진화 역사 안에 놓고 보기 때문입니다.

LLM은 자연어용 컴파일러입니다

프로그래밍 언어는 계속 자연어에 가까워져 왔습니다. 회로를 켜고 끄는 것만 표현하던 기계어에서, 레지스터 단위 연산을 다루는 어셈블리어로, CPU와 메모리를 직접 조작하는 C언어로, 추상적인 로직을 표현하는 고수준 언어로. 매번 한 단계씩 사람의 말에 가까워졌습니다.
그리고 지금, LLM의 등장으로 그 추상화가 한 번 더 도약했습니다. 한국어든 영어든 자연어 자체가 프로그래밍 언어가 됐습니다. C언어에 C 컴파일러가 있고, 자바에 자바 컴파일러가 있는 것처럼, 자연어에는 LLM이라는 컴파일러가 생긴 겁니다. 클로드 코드, Codex, Kiro 같은 도구는 자연어용 IDE인 셈이고요.
이 비유가 정확한 이유는, LLM의 한계도 같이 설명해주기 때문입니다.

기존 컴파일러와 결정적으로 다른 점

기존 컴파일러는 같은 입력에 같은 출력을 냅니다. 결과가 다르면 버그입니다. 코드가 틀렸거나, 컴파일러가 틀렸거나. 디버깅 대상이 명확합니다.
LLM은 같은 입력에 항상 같은 출력이 나오지 않습니다. 확률이 들어가기 때문입니다. 이게 버그인지 아닌지도 모호합니다. 그래서 원하는 결과를 안정적으로 얻으려면, 의도를 아주 정교하게 전달해야 합니다. 의심의 여지가 없도록.
필자의 표현대로 "지금 전 세계 프로그래머들이 자연어 코딩 컨벤션을 정하고 있는 중"입니다. 어떤 형식으로 지시해야 LLM이 가장 결정론적인(예측 가능한) 코드를 내놓는지, 모두가 탐색하고 있습니다.

한국 개발자의 숨겨진 기회

여기서 한국인 개발자의 오랜 핸디캡이 해소되는 대목이 나옵니다.
프로그래밍 언어는 영어 단어와 영문법을 차용해서 만들어졌습니다. 영어가 모국어인 사람은 생각이 곧 코드가 되기 쉽습니다. "if the calculation is correct, add ten points to the total score"라는 문장이 거의 그대로 코드가 됩니다.


한국어가 모국어인 사람은 "산수 계산이 맞으면 총점에 10점을 더한다"는 생각을 영어로 변환하는 과정이 추가됩니다. 적절한 영단어를 찾아야 하고, 영문법에 맞는지도 고민해야 합니다. 변수명 정하는 것만으로도 에너지가 소모됩니다.


LLM이 등장하면서 이 장벽이 사라졌습니다. 한국어로 생각하고, 한국어로 지시하면 됩니다. 내부적으로 번역 계층이 있겠지만, 개발자 입장에서는 처음으로 모국어로 코딩할 수 있게 된 겁니다.

본질은 변하지 않는다

필자가 가장 날카로운 지적을 하는 부분이 여기입니다.
자연어로 코딩하려면 결국 원하는 것이 명확해야 합니다. 아주 상세한 스펙을 글로 정의하고, 요구사항에 모순이 없는지 체크하고, 작은 단위로 나눠서 하나씩 구현해야 합니다.
"아니 이거 근데 이거 익숙하지 않나? 이게 코딩 아닌가?"
맞습니다. 기획 의도를 정교하게 파악해서 코드로 담아내는 것. 기획자, 디자이너와 대화하면서 원하는 것을 구체화하는 것. 함수를 잘게 쪼개고 코드만 읽어도 의도를 알 수 있게 하는 것. 이건 원래 좋은 개발자가 매일 하던 일입니다. 추상화 계층이 자연어 레벨로 올라갔을 뿐, 본질은 그대로입니다.


지금 쏟아지는 AI 코딩 도구의 기능들도 마찬가지입니다. MCP는 공통된 규격으로 다른 서비스를 연결하는 것이고, Skills는 잘 만든 함수 라이브러리를 임포트하는 것이고, Agent는 각 로직의 역할을 분리하는 것이고, Multi-Agent는 비동기 병렬 처리이고, Orchestration은 메인 스레드가 바쁘지 않게 관리하는 것입니다.
개발자에게는 사실 다 익숙한 개념입니다. 자연어로 작성되었다는 것만 다를 뿐.

진입장벽은 낮아지고, 좋은 개발자는 더 희소해집니다

프로그래밍 언어의 추상화 수준이 올라갈 때마다 같은 패턴이 반복됐습니다. 문법의 허들이 낮아지면 사용자가 폭발적으로 늘고, 서비스 수가 급증합니다. 하지만 그 모두가 좋은 프로그래머가 되고, 좋은 서비스가 되지는 않았습니다.
언제나 중요했던 건 두 가지입니다. 비즈니스 도메인에서 진짜 풀어야 할 문제를 찾아내는 능력. 그리고 그 문제를 논리적으로 풀어나가는 능력. 이건 기계어 시대에도, C언어 시대에도, 파이썬 시대에도 변하지 않았고, 자연어 코딩 시대에도 변하지 않을 겁니다.
아이러니한 건, 코드를 직접 작성하는 사람이 줄어들수록, 자연어 디버깅만으로 해결되지 않는 문제를 시스템 레벨에서 진짜 디버깅할 수 있는 사람이 더 희소해진다는 점입니다. 개발 진입장벽은 낮아졌지만, 좋은 개발자를 찾는 건 오히려 더 어려워질 겁니다.

"해줘" 한마디의 의미

글의 마지막이 웃기면서 뼈아픕니다.

"아니 그러고 보니 높으신 분들은 이미 자연어 프로그래밍을 하고 있었네. '해줘!' 한마디 하면 휴먼 인텔리전스가 알아서 맥락 파악하고, 모호한 부분은 스스로 추론해서 채우고, 결과물을 뱉어냈잖아. 물론 가끔 환각도 하고, 컨텍스트 윈도우 초과하면 앞에 말한 거 까먹기도 하고."

모호하게 시키면 모호한 결과가 나옵니다. LLM에게든 사람에게든. 차이가 있다면, LLM에게는 "모호하게 시키면 돈을 더 내게 해야" 할 수 있다는 것 정도.
결국 자연어 코딩 시대에도 핵심은 같습니다. 문제를 정확히 정의하는 사람이 이기고, 대충 지시하는 사람은 대충 된 결과를 받습니다. 도구가 바뀌었을 뿐, 일의 본질은 그대로입니다.