인공지능(AI) 코딩 도구의 발전으로 코드 작성 비용이 급격히 낮아졌지만, 정작 생성된 코드를 이해하고 관리하는 비용은 역설적으로 더 커지고 있다는 분석이 나왔습니다. 대규모 언어모델(LLM) 기반의 AI는 사람이 따라잡기 힘들 정도로 빠르게 코드를 쏟아내면서, 소프트웨어 복잡성 증가라는 새로운 문제에 직면하고 있기 때문입니다.
AI 코딩 도구는 개발자의 코딩 부담을 크게 줄였지만, LLM이 생성하는 코드는 기존 컴파일러 출력과는 본질적으로 다릅니다. 컴파일러는 결정적이고 원본 소스 코드를 보존하며 기계어라는 좁은 도메인에 한정되지만, LLM은 비결정적이며 원본 소스를 보존하지 않고 일반 소프트웨어 전체로 출력 범위가 넓습니다. 이는 마치 디즈니 영화 '환타지아'의 '마법사의 제자'처럼, 통제 불능의 코드를 양산할 위험을 내포합니다. 특히 미션 크리티컬한 소프트웨어의 경우, LLM이 생성한 코드라도 개발자가 그 기저를 이해해야만 합니다. 그러나 LLM은 사람이 이해할 수 있는 속도보다 훨씬 빠르게 코드를 생성하기 때문에, 아무도 이해하지 못하는 대규모 변경이 발생할 수 있습니다.
이러한 문제에 대응하기 위해 '빼는 엔지니어(subtractive engineer)'라는 새로운 역할이 주목받고 있습니다. 이들은 LLM이 생성한 코드를 맹목적으로 받아들이기보다, 면밀히 검토하고 단순화를 제안하며, 불필요한 코드와 시스템 경계를 제거하는 데 집중합니다. 코드가 저렴해진 시대에 소프트웨어의 핵심 위험은 복잡성(complexity)이며, 이는 시스템 규모에 따라 기하급수적으로 증가합니다. 복잡성에 대한 두려움이 없는 LLM은 기존 문제 위에 코드를 계속 쌓아 시스템을 붕괴시킬 위험이 있습니다. 따라서 '빼는 엔지니어'는 '아니오'라고 말하고 통제력을 유지하며, 컴퓨터 프로그래밍의 기예를 지키는 중요한 역할을 수행하게 될 것입니다. 이는 단순히 코드를 만드는 것을 넘어, 시스템 전체의 품질과 유지보수성을 고려하는 새로운 개발 패러다임을 제시합니다.