AI는 코드를 대신 써주지만 유지보수성은 대신 길러주지 않는다
소프트웨어 엔지니어 Alexandru Nedelcu가 AI에 의존한 개발 관행을 정면으로 비판하는 글을 공개했다. 그는 최근 한 달 사이에 "2025년 이후로 코드를 한 줄도 쓰지 않았다"는 말을 여러 번 들었다고 운을 뗀다. 업계가 변하고 있는 것은 맞지만, 코드를 읽고 쓰는 일 자체를 놓아버린 개인과 조직은 그 대가를 치르게 된다는 것이 그의 논지다.
핵심 근거는 측정의 부재다. 코드 유지보수성과 좋은 아키텍처는 즉시 적용할 수 있는 지표가 없다. 나쁜 아키텍처나 유지보수 불가능한 코드의 결과는 몇 달, 길게는 몇 년이 지나야 드러난다. 그렇기 때문에 린터에 넣을 만한 '적합도 함수'가 존재하지 않고, AI가 학습할 대상도 명확하지 않다는 것이다.
그가 정의하는 나쁜 코드는 읽기 어렵고 이해하기 어렵고 미래의 변화에 대응해 진화시키기 어려운 코드다. 한 곳을 고쳤는데 전혀 멀리 떨어진 로직이 비결정적인 방식으로 깨지는 나비효과, 설계의 불변식이 불분명해 일관성이 무너지는 상태, 목과 구현 세부사항에 의존해 리팩터링을 가로막는 취약한 테스트가 그 특징이다.
숙련된 엔지니어는 이런 징후를 훨씬 이른 시점에 감지한다. 문제는 그 직관이 규칙 목록으로 정리될 성질이 아니라는 점이다. 모든 판단이 맥락에 의존하기 때문에, 초보자의 생산성을 높여주는 규칙과 전문가의 판단은 서로 맞지 않는다. 전문가는 규칙을 따르는 사람이 아니라 규칙을 만드는 사람이라는 설명이다.
AI의 한계는 여기서 갈린다. 유지보수성이 무엇인지에 대해 학습된 데이터가 없고, 강화학습에 쓰이는 보상 신호는 몇 달 뒤가 아니라 즉시 측정 가능해야 한다. 결국 AI는 초보자용 규칙서에서 규칙을 배우고, 세상에 널린 코드에서 패턴을 익히는데 그 코드 대부분은 품질이 좋지 않다.
구체적인 사례로 함수 분해를 든다. 최신 모델조차 코드를 "단순화"할 때, 큰 함수를 이해하려면 추출된 작은 함수의 구현까지 함께 읽어야 하는 형태로 쪼개는 실수를 한다. 재사용 가능하면서 이해를 돕는 함수를 정의하는 일은 숙련이 필요한 예술에 가깝고, Dreyfus 모델 기준으로 대부분의 개발자가 아직 '고급 초보자' 단계에 머물러 있다는 것이다.
더 큰 문제는 AI에게 코드 작성을 넘어 읽기까지 맡기는 흐름이다. 선택을 하지 않고, 실수에 책임을 지지 않고, 그 실수에서 배우지 않으면 숙련에 도달할 수 없다. 실수를 하는 주체가 AI로 옮겨가면 AI도 배우지 않고, AI에 의존하는 사람도 배우지 않는다는 지적이다.
저자는 자신을 반AI론자로 규정하지 않는다. LLM을 일상 업무에 통합해 쓰고 있고 동료들에게 활용법을 가르치며, 지루하고 소모적인 작업을 처리하는 데서 효율 이득도 얻고 있다고 밝힌다. 다만 그것은 어디까지나 도구이며, 다른 기술 혁명들처럼 열기가 가라앉을 것이라고 본다.
그는 앞으로 더 많은 기업이 'NO-AI' 정책을 경쟁 우위로 내세우게 될 것이라고 전망한다. 소프트웨어 업계는 이미 대규모 자동화를 해온 특수한 분야이고 LLM이 유일한 자동화 수단도 아니라는 논리다. LLM에 C/C++ 컴파일러를 만들라고 지시할 수도 있지만, GCC나 LLVM을 클론하면 더 나은 결과를 무료로 얻는다는 예를 든다. 같은 CRUD 앱을 반복해서 재발명하는 대신 다른 목표에 시간과 자원을 쓰는 편이 낫다는 것이다.
이 글은 개인의 관찰과 논증에 기반한 의견이며, 유지보수성을 측정할 지표가 없다는 주장 역시 저자의 논거다. AI 도구가 주는 효율 이득 자체를 부정하지는 않으며, 미래 전망은 검증된 데이터가 아닌 예측임을 분명히 하고 있다.
관련 글
- AI 소프트웨어 팩토리는 에이전트보다 게이트를 먼저 세워야 한다.코딩 에이전트가 PR을 쏟아내는 시대, 진짜 병목은 생성이 아니라 리뷰다. 인테이크·격리·도구·검증·머지 게이트 다섯 단계로 구성된 AI 소프트웨어 팩토리의 실제 구조와 각 단계의 검문 장치를 정리했다.
- AI 에이전트 시대의 개발자 면접, 리트코드 대신 무엇을 물어야 하나AI 코딩 에이전트가 개발 실무를 바꾸면서 면접 방식도 흔들리고 있다. Hacker News에서 한 면접관이 지원자의 80%가 코드를 직접 쓰지 않는다고 밝힌 것을 계기로, 코드 리뷰·페어 면접·프롬프트 평가 등 여러 대안이 논의됐다.
- GitHub, Copilot 에이전트 런타임을 Rust로 전면 재작성…80만 줄을 AI가 대부분 작성GitHub가 Copilot 에이전트 런타임을 TypeScript·Node.js에서 Rust로 전면 재작성했다. 80만 줄이 넘는 코드를 AI 에이전트가 대부분 작성했고, 128개 PR로 점진 배포하면서 성능이 크게 개선됐다.
- Bend, 증명으로 AI 코딩 실수를 막고 GPU까지 쓰는 언어Bend는 AI가 생성한 코드의 오류를 수학적 증명으로 차단하고, C에 가까운 단일 코어 성능과 GPU 병렬 실행을 제공하는 새 언어다. LAWS.bend와 증명 검사로 커밋 전에 규칙 위반을 막는 워크플로를 제안하며, 개발자는 에이전트에 Bend 사용을 지시할 수 있다.
- 에이전트가 코드 작성 외에 할 수 있는 실용적 쓰임을 다시 묻는다.코딩 에이전트 담론이 코드 생성 성능에만 쏠린 가운데, 코드를 쓰지 않고도 실무에서 쓸모 있는 에이전트 활용법을 조명한 글이 lobsters에 올라왔다. 원문 본문을 확보하지 못해 구체적 사례는 담지 못했고, 제목이 던지는 문제의식과 개발자에게 주는 시사점만 정리했다.