AI 에이전트가 25시간 만에 1,300만 토큰을 사용해 3만 줄의 코드를 생성하며 개발 생산성의 새로운 지평을 열었다. 그러나 모든 AI 생성 코드가 생산성 향상으로 직결되지는 않는다. LLM이 작성한 57만 줄짜리 Rust SQLite 재구현 코드를 벤치마크한 결과는 충격적이다. 이 코드는 기본 키 조회 한 번에 기존 SQLite보다 20,171배 느렸다. 요구 사항을 모두 만족했지만, 실제 성능은 재앙에 가까웠다.

이것이 우리가 AI 시대 코딩에서 마주할 민낯이다. AI는 이제 복잡한 지시를 이해하고 장시간에 걸쳐 코드를 뽑아낸다. 그러나 '정확해 보이는' 코드와 '제대로 작동하는' 코드 사이의 간극은 여전히 크다. LLM은 안전한 기본값을 남발하고, 불필요하게 복잡한 솔루션을 택하며, 쿼리 플래너 같은 핵심 기능을 놓치곤 한다. 겉으로는 그럴듯하지만, 근본적인 설계 결함이나 비효율적인 알고리즘을 숨긴다. 결국 개발자는 AI가 생성한 방대한 코드 속에서 치명적인 문제점을 찾아내야 하는 새로운 과제를 떠안았다.

AI의 양산 코드는 왜 재앙이 되는가

문제는 모델의 단순한 지능 부족이 아니다. AI 에이전트는 긴 호흡의 작업을 수행하는 동안 전체 시스템의 맥락을 완벽히 이해하기 어렵다. 특히 인간 개발자가 수십 년간 축적한 디자인 패턴, 성능 최적화 기법, 아키텍처적 통찰력을 AI는 아직 스스로 터득하지 못한다. LLM은 학습 데이터에 기반해 그럴듯한 코드를 조합하지만, 특정 문제를 가장 효율적으로 해결하는 '최적의 경로'를 제시하는 데는 한계를 보인다.

실제로 OpenAI의 에이전트가 25시간 동안 3만 줄의 코드를 성공적으로 생성할 수 있었던 핵심은 모델 자체의 혁신보다 `docs/` 폴더 기반의 체계적인 운영 구조에 있었다. 목표, 계획, 실행 규칙, 그리고 지속적인 문서화가 에이전트의 장기적인 작업을 가능하게 만들었다. 이는 AI 에이전트를 효과적으로 활용하려면 뛰어난 프롬프트 엔지니어링을 넘어, 인간 개발자가 고도의 계획과 검증, 그리고 시스템적인 사고를 제공해야 함을 역설한다. AI가 코드를 쏟아내는 양과 비례하여, 인간이 그 코드를 이해하고 평가하며 수정하는 작업의 복잡성과 중요성은 기하급수적으로 커지는 셈이다.

개발자는 이제 무엇을 코딩하는가

앤트로픽의 최신 보고서는 컴퓨터 프로그래머의 75%가 AI에 가장 많이 노출되는 직군 중 하나라고 밝힌다. 이러한 수치는 개발자들에게 변화를 요구한다. 하지만 이것이 개발자의 종말을 의미하지는 않는다. 오히려 개발자의 역할이 더 고차원적인 수준으로 진화한다는 증거다. 60세 개발자가 Claude Code를 통해 다시금 프로그래밍에 대한 열정을 발견했다는 사례는 AI가 숙련된 개발자에게도 새로운 영감과 생산성 도구가 될 수 있음을 보여준다. 그들은 단순 반복 작업에서 벗어나 더 창의적이고 전략적인 문제 해결에 집중한다.

이제 개발자는 단순히 코드를 '작성하는' 일을 넘어, AI 에이전트의 '지휘자'이자 '품질 관리자'로 거듭난다. AI에게 명확한 목표와 수락 기준을 정의하고, AI가 생성한 코드의 품질과 효율성을 벤치마킹하며, 시스템 전체의 아키텍처적 일관성을 유지하는 역할이 중요해졌다. 복잡한 시스템의 숨겨진 비효율을 찾아내고, 장기적인 관점에서 코드의 유지보수성과 확장성을 보장하는 것은 여전히 인간 개발자의 고유한 역량으로 남는다.

AI는 개발자의 생산성을 폭발적으로 끌어올리는 강력한 도구다. 그러나 이 도구가 만들어내는 결과물에 대한 최종 책임과 통찰은 여전히 인간의 몫이다. 개발자는 이제 단순히 코드를 쓰는 것을 넘어, '어떤 코드를 써야 하는가'와 'AI가 쓴 코드를 어떻게 신뢰할 것인가'를 고민하는 더 깊은 단계로 나아간다.