확률적 코드 원숭이 정리
대규모 언어 모델을 둘러싼 끝없는 과대광고 기계는 우리가 소프트웨어 개발 혁명의 문턱에 서 있다고 믿게 만들려 합니다. 프로그래머가 쓸모없어지고 그들의 키보드에는 먼지가 쌓이는 새로운 시대, 충분한 GPU와 병렬로 돌아가는 확률적 코드 원숭이들을 아무 문제에나 쏟아붓기만 하면 충분한 시간과 연산 자원이 주어졌을 때 Fabrice Bellard와 Jeff Dean의 코딩 실력을 불러낼 수 있는 시대가 왔다는 것입니다. 이 서사는 (놀랍지 않게도) 실제 엔지니어보다는 주로 팟캐스트 장사꾼과 인플루언서들이 지어내는 것이며, 점잖게 말해도 공상에 가까운 과장입니다. 노련한 소프트웨어 엔지니어에게 이 신문물 도구들은 우리를 대체하는 존재가 아니라, 때로는 다루기 버겁고 화가 치밀게 만들기도 하지만, 단단한 손과 주의 깊은 눈을 요구하는 강력한 전동 공구입니다.
현재 형태의 언어 모델은 천재와 바보가 기묘하게 뒤섞인 존재입니다. 예를 들어 Gemini 2.5 Pro를 봅시다. Google의 최신 작품은 깊이 있는 분석에 놀라울 만큼 능숙해서, 수십만 줄에 달하는 방대한 코드베이스를 집어삼키고 단 하나의 오타를 섬뜩할 정도로 정확하게 짚어낼 수 있습니다. Mountain View에서 칠리에 넣고 있는 사전 학습 비법 핫소스가 무엇이든, 확실히 꽤나 매운 것이 분명합니다. 그런데 바로 이 모델에게 기초적인 정규식 문자열 치환을 시켜 보면, 에이전트가 파일에 대한 기본적인 텍스트 편집을 하려고 루프를 맴도는 동안 걸음마쟁이의 멍한 눈빛에 해당하는 디지털 버전을 보게 될 것입니다. 컴퓨터 과학 박사후 연구원과 걸음마쟁이가 어색하게 합쳐진 모습입니다.
한편으로 Anthropic의 Claude Opus 4.1과 그보다 알뜰한 사촌인 Sonnet 4.0이 있습니다. 이 모델들은 현 세대의 믿음직한 일꾼으로, 지시를 따르고, 코드를 정밀하게 리팩터링하며, 대체로 영감은 없을지언정 유능한 페어 프로그래머처럼 행동하는 일관된 적성을 보여 줍니다. Gemini 2.5가 이따금 보여 주는 순수한 천재성의 번뜩임은 부족할지 몰라도, 그 꾸준함 덕분에 소프트웨어 제작이라는 일상적인 고된 작업에서 매우 귀중한 존재가 됩니다. 여력이 있는 사람에게 진정으로 강력한 조합은 둘 다 전략적으로 활용하는 것입니다. 거대한 컨텍스트 윈도와 분석 능력을 위해서는 Gemini를, 믿을 만한 실행을 위해서는 Claude를 쓰는 것입니다.
진정으로 쓸모 있는 코딩 동반자 명단에서 눈에 띄게 빠져 있는 것은 OpenAI의 과대평가된 제품들입니다. 최신 GPT-5 모델조차 가장 사소한 일회성 스크립트를 넘어서는 작업에는 거의 쓸모가 없는 것으로 드러나며, 더 크고 서로 얽힌 시스템의 미묘한 차이를 번번이 파악하지 못하고, 학습 데이터도 (2024년 초 시점으로) 크게 낡았습니다. 한편 특화된 추론 모델들은 너무 느리고 비용 효율이 낮아서, 빠르고 반복적인 전문 소프트웨어 개발 주기에는 애초에 고려 대상조차 되지 못합니다. 대부분의 코딩 작업에서 이 모델들은 완전히 뒤처졌으며, 경쟁 모델들이 여유롭게 자리 잡은 파레토 프런티어에 한참 못 미칩니다. 성능 대비 가격이라는 중요한 계산에서 OpenAI 모델들은 그저 설득력 있는 근거를 제시하지 못합니다.
이 모델들을 프로그래밍에 제대로 활용하려면 표준 ChatGPT 인터페이스 같은 단순한 웹 API는 사실상 쓸 수 없습니다. 이런 것들은 의미 있는 복잡도를 지닌 작업에는 기능적으로 쓸모가 없습니다. 효과적인 코딩 어시스턴트에는 코드베이스에 대한 상황 인식, 즉 심볼을 색인하고, 편집 도구를 호출하고, 검색을 실행하고, 외부 린터를 활용하며, 무엇보다 Language Server Protocol의 진단 결과를 해석하는 능력이 필요합니다. 이처럼 환경에 깊이 뿌리내리지 못하면 모델은 사실상 눈을 가린 채 코딩하는 셈입니다. 따라서 진정으로 강력한 구현은 독립형 명령줄 인터페이스와 이러한 컨텍스트를 제공하는 Zed, VS Code, 또는 Vim(이단자들이라면 Emacs)용의 수많은 플러그인과 같이 긴밀하게 통합된 코드 개발 환경에서 찾을 수 있습니다. 다만 벤처 자본의 지원을 받는 새로운 부류의 상용 도구에 대해서는 한마디 경고해 두겠습니다. 이들의 가격 모델은 종종 의도적으로 불투명하며, 코딩 지원 분야의 Uber처럼 작동합니다. VC 보조금에 익숙해지지 마십시오. 오래가지 않을 것이기 때문입니다. 전략은 뻔합니다. 강력하면서도 저렴하게 책정된 서비스에 중독시킨 다음, 의존하게 되면 최대한의 가치를 뽑아내는 것입니다. 언제나 그렇듯 첫 한 방은 공짜입니다.
소프트웨어 경제에 관한 불편한 진실은 그중 상당 부분이 우아한 아키텍처나 보안, 유지보수성과는 아무 관련이 없다는 점입니다. 그것은 생각 없이 하는 JSON 배관 작업, YAML 농사, 보일러플레이트 CRUD 애플리케이션, 그리고 영감 없는 데이터 대시보드가 끝없이 펼쳐진 광활한 영역입니다. 불쉿 잡에 대한 그레이버의 분석은 더 넓은 경제 전반에 적용되는 만큼 정보 기술 직종에도 똑같이 적용됩니다. 대부분의 소프트웨어는 헛소리이며, 이는 “헛소리(bullshit)“라는 단어의 엄밀한 철학적 용법에서 확률적 헛소리 엔진이라고 적절히 묘사될 수 있는 기술에 완벽하게 들어맞습니다. 이것이 바로 “서브프라임 소프트웨어 시장“으로, 프로덕션의 가혹한 현실과 마주하는 순간 재작성될 운명에 놓인 일회용 코드의 영역입니다. 언어 모델은 피상적인 검사를 통과할 만큼만 그럭저럭 괜찮은 “React로 TODO 앱 만들어 줘” 식의 솔루션을 찍어 내는 데 섬뜩할 정도로 능숙합니다. 어쩌면 존재하지 말아야 할 시장일지도 모르지만 그 존재는 부정할 수 없으며, 이 모델들은 놀라운 속도로 그 시장을 통째로 집어삼킬 태세를 갖추고 있습니다.
이렇게 AI가 생성한 코드가 확산되면서 전례 없는 규모의 사이버 보안 악몽이 함께 찾아옵니다. 이 모델들은 토큰 효율을 추구하는 과정에서 지름길을 택하기로 악명이 높으며, 주니어 엔지니어조차 피해야 한다고 알고 있을 법한 터무니없는 취약점을 끌어들입니다. 이들은 내력벽을 마스킹 테이프로 붙여 지탱하는 시공업자의 디지털 버전입니다. 최근 연구에 따르면 AI가 생성한 코드는 무려 45%의 사례에서 보안 결함을 포함하고 있었습니다. 그 자체로 상당 부분이 안전하지 않은 방대한 공개 코드로 학습된다는 바로 그 본질이 취약점 증폭의 피드백 루프를 만들어 냅니다.
이 문제를 더욱 악화시키는 것은 “MBA 엔지니어“의 부상입니다. 강력한 언어 모델로 무장한 프로젝트 관리자가 갑자기 자신을 노련한 소프트웨어 아키텍트라고 착각하는 것입니다. 이 현상은 이미 앞으로 수년간 조직을 괴롭힐 디지털 슬롭과 기술 부채의 거대한 해일을 일으키고 있습니다. 기초 지식이 부족한 이들은 종종 결함이 있는 모델의 출력을 의심 없이 받아들이고, 그 결과 깨지기 쉽고 불투명하며 언제 터질지 모르는 유지보수 재앙과도 같은 시스템을 만들어 냅니다. 우리는 모두 이 새로운 현실, 즉 이 과신에 찬 아마추어들이 남긴 디지털 난장판을 치우는 데 우리 시간의 상당 부분을 쓰게 될 미래에 적응해야 할 것입니다.
이 모델들의 비결정적이고 솔직히 말해 게으른 본성은 상황을 더욱 복잡하게 만듭니다. 이들은 존재하지 않는 API를 환각하는 경향이 있으며, 출력 토큰을 최소화한다는 명목으로 경고 한마디 없이 중요한 부분에 플레이스홀더나 지나치게 단순화된 로직을 끼워 넣는 일이 잦습니다. “되게 만들어 줘“와 같은 모호한 프롬프트는 기이하고 예측할 수 없는 동작을 부르는 지름길입니다. 이 도구들을 효과적으로 다루는 핵심은 모델에게 마음대로 하도록 맡기는 대신, 정확하고 상세한 프롬프트로 바람직한 해법을 향해 이끄는 데 있습니다. 그리고 현재로서는 이를 위해 자신이 무엇을 하는지 잘 아는 실무자의 정밀하고 수준 높은 소프트웨어 전문 지식이 필요합니다.
특히 짜증스러운 특성 하나는 이 모델들에게 실패하는 단위 테스트를 고치는, 겉보기에는 단순한 일을 맡겼을 때 드러납니다. 모델은 근본적인 비즈니스 로직을 살펴 실제 결함을 진단하는 대신, 기만적인 단순함의 길을 택하는 경우가 많습니다. 즉, 테스트 단언이 기대하는 출력을 정확히 만들어 내는 경로만 하드코딩하도록 코드를 정교하게 수정할 뿐, 그 이상은 아무것도 하지 않습니다. 이는 과목 내용을 배우는 대신 시험 정답지를 그냥 외워 버리는 학생의 코딩 버전입니다. 그 결과물인 코드는 우스꽝스럽고 쓸모도 없습니다. 이는 화가 치밀기는 하지만, 우리 대부분이 십 대 시절 코딩을 배우며 익힌 진정한 엔지니어링 모범 사례를 털끝만큼도 갖추지 못한 채 이 시스템들이 얼마나 자주 코드를 외삽해 내는지를 완벽하게 보여 주는 사례입니다.
안목 있는 시니어 엔지니어에게 나아갈 길은 분명합니다. 이 도구들을 전술적으로 사용하는 법을 익혀 두는 것이 좋습니다. 이 언어 모델들은 우리의 생계를 위협하는 존재가 아니라, 전술적으로 그리고 건전한 회의주의를 갖고 사용해야 할 도구입니다. 견고한 엔지니어링 관행—강력한 타입 시스템, 포괄적인 코드 표준 도구, 코드베이스 인덱싱, 엄격한 린터—과 결합하면 이들의 출력은 크게 개선되고 최악의 충동은 억제될 수 있습니다. 이들은 우리를 문법과 보일러플레이트의 지루함에서 해방시켜, 더 높은 추상화 수준에서 아키텍처와 시스템 설계에 집중할 수 있게 해 줍니다.
이러한 모델이 진정한 엔지니어의 역량을 자발적으로 갖추게 될지는 아직 풀리지 않은 연구 문제이며, 솔직히 말해 상당히 의심스러운 일입니다. 순전한 규모 확장을 통한 개선의 S자 곡선에서 우리가 이미 후반부에 와 있다는 증거가 늘어나고 있으며, Google과 Anthropic 같은 거대 기업들은 임의적인 벤치마크에서 고작 1퍼센트를 올리기 위해 수백억 달러를 쏟아붓고 있습니다. 물론 이러한 벤치마크는 벤치마크 그 자체 외에는 거의 아무것과도 상관관계가 없으며, 실질적인 수익성보다는 주로 기업의 자랑거리를 재는 은유적인 잣대 역할을 할 뿐입니다. 이러한 자본 지출은 명백히 지속 불가능하며, 벤처 캐피털의 낙관론이 부풀린 전형적인 거품입니다. 특히 코딩 지원이 이러한 모델이 실제로 수익을 내는 몇 안 되는 분야 중 하나라는 점을 생각하면 더욱 그렇습니다. 그러나 소프트웨어의 역사가 조금이라도 참고가 된다면, 이 엄청난 비용은 필연적으로 급락할 것입니다. 몇 년 안에 오늘날의 최상위 모델에 상응하는 모델이 64기가바이트 메모리를 갖춘 MacBook Pro에서 무리 없이 돌아가는 모습을 상상하기는 어렵지 않으며, 이러한 성과는 현재의 기존 강자들이 아니라 어느 악착같은 중국 연구소가 이뤄 낼 가능성이 높습니다. 이는 미국인들이 자동차를 발명하고 한참 뒤에 Toyota가 수익성과 제품 품질을 완성해 낸 일본 자동차 산업의 디지털판이라 할 수 있습니다. 이러한 모델을 실존적 위협으로 보는 주장은 점점 더 우스꽝스러워 보입니다. 이 모델들은 빠르게 범용 도구가 되어 가고 있으며, 핵무기보다는 Honda Civic에 훨씬 더 가깝습니다. 우리는 범용화와 거품의 붕괴를 환영해야 합니다.
순수한 기술적 유용성과 명백한 결함을 넘어, 이러한 도구에는 진지하게 고려해야 할 피할 수 없는 윤리적 차원이 존재합니다. 사려 깊은 많은 엔지니어가 이러한 모델의 출처에 대한 진정한 불안감 때문에 아예 사용을 거부하며 “AI 비건“이 되기를 택하고 있습니다. 그들의 정당한 반대 이유는 학습에 사용된 불투명한 데이터 출처에서부터 모델을 만드는 데 필요한 착취적인 노동 관행에 이르기까지 다양합니다. 게다가 바로 이러한 시스템을 만드는 연구소의 지도부에서는 준종교적 열광이라는 불안한 기류가 흘러나오고 있으며, 이 합리주의 컬트 같은 천년왕국적 열정은 냉철한 관찰자라면 누구든 멈칫하게 만들 만합니다. 하지만 이러한 변화를 비켜 가면서도 활력 있고 성공적인 소프트웨어 엔지니어로 남는 것은 충분히 가능합니다. 이 길을 가려면 소프트웨어의 보다 부티크적이거나 장인적인 영역, 일종의 디지털 장인 정신에 의도적으로 집중해야 합니다. 언어 모델이 안전한 Linux 커널 모듈을 작성하거나, 학습 코퍼스 밖에 있는 틈새 프로그래밍 언어를 설계하거나, 심우주 탐사선의 펌웨어를 디버깅하는 일은 당분간 없을 것입니다. 언어 모델 생태계에서 빠지고 싶은 사람들에게는 이러한 전문적인 틈새 분야에서 보람 있고 상당히 수익성 좋은 경력이 기다리고 있습니다. 참여가 반드시 필요한 것은 아니기 때문입니다. Trader Joe’s의 Two Buck Chuck이 존재한다고 해서 보르도의 빈티지 와인이 밀려나지 않았듯이, AI 코드도 부티크 전문성에 대한 수요를 대체하지 못할 것입니다.
결국 우리는 완전히 자율적인 소프트웨어 엔지니어라는 공상 과학 시나리오와는 아직 거리가 한참 멉니다. 이러한 모델은 여전히 믿기 어려울 만큼 정교한 패턴 보간기, 즉 고차원 단어 계산기일 뿐이며, 유용하기는 하지만 스스로 방향을 정하고 창의적으로 구상할 수 있는 인간 엔지니어의 인식과 안목을 갖추기에는 놀라울 만큼 거리가 멉니다. 진짜 질문은 이러한 모델의 확산이 더 나은 소프트웨어를 더 빠르게 만들 수 있는 세상이라는 순이익으로 이어질지, 아니면 유지보수가 불가능하고 안전하지 않은 코드로 뒤덮인 디지털 슈퍼펀드 오염 부지라는 완전한 재앙으로 이어질지입니다. 그 답은 오직 시간과 수많은 실험 및 정리 작업만이 알려 줄 것입니다.