선사ㅣHE:A:GENCYㅣCCong.AI · @sunsa

조너선 켈리가 밝힌 AI 코딩이 '쓰레기 코드'가 되는 이유와 아키텍처의 중요성

· 영상 405초
다이옥서스 랩스의 조너선 켈리는 검증과 아키텍처 설계 없이 코딩 에이전트로 쏟아낸 코드는 결국 머지되지 못하는 쓰레기 코드가 된다고 지적했습니다. 코드를 생성하는 비용은 낮아졌지만, 시스템 구조를 설계하고 결과물의 품질을 증명하는 엔지니어의 기준은 오히려 더 높아졌습니다.

단 3명의 엔지니어가 30만 줄 규모의 소프트웨어를 개발할 때 AI 코딩 에이전트를 어떻게 다루어야 생산성을 극대화할 수 있을까요? 크로스 플랫폼 UI 프레임워크를 개발하는 다이옥서스 랩스(Dioxus Labs)의 조너선 켈리(Jonathan Kelley)는 유튜브 'AI Engineer' 채널을 통해 공개된 강연에서 AI 도구를 극단까지 활용하며 겪었던 실패와 배움을 상세히 밝혔습니다. 크로스 플랫폼이란 여러 운영체제에서 똑같이 동작하는 방식을 뜻합니다. 프레임워크란 프로그램을 쉽게 만들도록 돕는 기본 뼈대를 의미합니다.

생성형 AI와 코딩 에이전트의 발전으로 누구나 손쉽게 수만 줄의 코드를 작성할 수 있게 되면서 소프트웨어 개발 업계에서는 코드 생성 속도보다 코드의 품질 관리가 핵심 과제로 떠올랐습니다. 무작정 쏟아낸 코드가 왜 방치될 수밖에 없었는지, 엄격한 언어 환경이 어떻게 AI의 방파제가 되는지, 그리고 코드가 값싸진 시대에 개발자에게 남는 진짜 역량이 무엇인지 강연 내용을 바탕으로 정리해 드립니다.

조너선 켈리는 왜 AI 코딩을 '쓰레기 코드 발사기'에 비유했나

AI 코딩 도구로 수만 줄의 코드를 빠르게 생성하더라도 엄격한 품질 기준을 통과하지 못하면 결국 단 한 줄도 메인 브랜치에 머지되지 못하고 버려집니다. 머지란 새로 작성한 코드를 기존 프로그램에 합치는 일을 뜻합니다. 조너선 켈리는 다이옥서스 팀이 클로드 코드(Claude Code)를 한도까지 활용하며 수만 줄의 Rust 코드를 작성하고 오랫동안 원했던 기능들을 구현해 나갔지만, 정작 공식 코드베이스에 머지할 만한 품질 기준을 통과한 코드는 거의 없었다고 털어놓았습니다. Rust란 안정성과 처리 속도가 뛰어난 프로그래밍 언어를 의미합니다.

수년간 원했던 수천 줄의 새 기능과 버그 수정, 외부 연동 작업들은 결국 미완성 초안 상태로 방치되었으며 지금도 그대로 남아 있는 실정입니다. 조너선 켈리는 도구를 제대로 다루는 법을 모른 채 속도에만 매달렸을 때 AI가 자칫 '쓰레기 코드 발사기(slop cannon)'로 전락하기 십상이었다고 회고했습니다. 아무리 방대한 양의 코드가 쏟아져 나오더라도 제품 수준의 완성도를 갖추지 못하면 단순한 기술 부채로 전락한다는 의미입니다.

제 생각에는 코드가 아무리 그럴듯하게 출력되더라도 그 결과물이 올바른지 검증하는 작업은 전적으로 인간의 몫입니다. 저 역시 얍꽁 프로젝트에서 47분 분량의 롱폼 영상을 처리하며 다섯 개의 병목을 하루 만에 고쳤지만, 음량 정규화 필터가 배경 잡음을 20dB 키워버린 문제는 직접 수치를 측정해 보고서야 알아챌 수 있었습니다. AI가 제공하는 초안을 맹신하지 않고 엄격한 검증 장치를 선제적으로 갖추는 태도가 필수적입니다.

조너선 켈리는 왜 AI 코딩을 '쓰레기 코드 발사기'에 비유했나

러스트(Rust)의 엄격함이 AI 코딩 에이전트의 무기가 된 배경

배우기 어렵고 까다로운 프로그래밍 언어인 Rust의 엄격한 컴파일러 규칙은 오히려 AI 코딩 에이전트의 치명적인 실수를 걸러내는 강력한 방파제 역할을 합니다. 컴파일러란 사람이 짠 코드를 컴퓨터가 이해하게 바꾸는 도구를 뜻합니다. 조너선 켈리는 다이옥서스 팀이 수년간 인간 개발자를 위해 읽기 쉽고 쓰기 쉬운 개발자 친화적 도구와 친절한 에러 메시지를 구축하려 애썼지만, 정작 코딩 에이전트는 이러한 요소들을 전혀 신경 쓰지 않았다고 설명했습니다.

오히려 Rust 특유의 높은 진입장벽과 까다로운 문법이 AI 환경에서는 결정적인 장점으로 뒤바뀌었습니다. 에이전트는 지치지 않고 수많은 예외 상황을 처리하며 메모리 안전성을 강제하는 빌림 검사기(borrow checker)와 끊임없이 씨름해 주기 때문입니다. 인간 개발자가 느끼던 인지적 개발 부담을 에이전트가 대신 짊어지면서, 러스트의 지독한 컴파일러 규칙은 에이전트의 오작동을 차단하는 든든한 안전장치로 기능하게 되었습니다.

러스트(Rust)의 엄격함이 AI 코딩 에이전트의 무기가 된 배경

3명의 엔지니어가 코딩 에이전트를 활용한 실전 작업 방식

소프트웨어 개발 프로젝트에서 코딩 에이전트를 가장 효과적으로 활용하는 비결은 화려한 신기능 개발이 아니라 사람이 하기에 지루하고 반복적인 일상 업무를 맡기는 데 있습니다. 다이옥서스는 코드 자체가 곧 제품이며, 사용자들이 API와 문서를 보며 그 위에 직접 시스템을 구축하는 구조를 띱니다. API란 서로 다른 프로그램이 대화할 수 있는 연결 통로를 뜻합니다. 핵심 엔지니어 단 3명이 일하는 소규모 팀에서 사소한 패키징 오류나 설정 결함은 곧바로 사용자 경험의 심각한 저하로 이어집니다.

조너선 켈리는 엔지니어가 압축 파일이 올바른 디렉터리 구조로 풀리는지 확인하는 작업에 시간을 쓰는 것은 어려운 아키텍처 문제를 고민할 시간을 빼앗는 낭비라고 지적했습니다. 아키텍처란 소프트웨어 전체를 이루는 구조와 설계 방식을 뜻합니다. 다이옥서스 팀이 코딩 에이전트에 위임하여 실질적인 생산성 향상을 거둔 작업들은 다음과 같습니다.

3명의 엔지니어가 코딩 에이전트를 활용한 실전 작업 방식

소프트웨어 아키텍처 설계가 여전히 인간의 예술인 이유

코딩 에이전트는 시스템의 구조적 결함을 스스로 리팩터링하지 못하므로 전체 뼈대를 잡는 아키텍처 설계는 여전히 인간 엔지니어의 고유한 예술 영역으로 남습니다. 리팩터링이란 기능은 그대로 두고 내부 코드를 깔끔하게 다듬는 일을 뜻합니다. 조너선 켈리는 코딩 에이전트가 제품 출시 속도를 비약적으로 높여주지만, 코드가 반영될 기반 구조가 부실하다면 산출물 역시 나쁠 수밖에 없다고 강조했습니다.

사람 엔지니어와 달리 코딩 에이전트는 기존 시스템과의 구조적 정합성을 깊이 고민하거나 대대적인 아키텍처 재설계를 망설이지 않습니다. 기능이 기존 구조에 맞지 않더라도 에이전트는 망설임 없이 코드를 작성해 그대로 배포해 버리기 때문에 사람이 스파게티 코드를 짜듯 에이전트 역시 스파게티 코드를 훨씬 더 빠른 속도로 양산할 수 있습니다. 결국 올바른 의도를 전달하고 시스템이 나아갈 길을 구상하는 데 대부분의 개발 시간을 쏟아야 합니다.

제 생각에도 전체 작업 흐름을 관장하는 파이프라인의 틀이 먼저 잡혀 있지 않으면 에이전트가 쏟아낸 코드가 어디에 연결되어야 하는지조차 판단하기 어렵습니다. 파이프라인이란 작업들이 순서대로 이어져 처리되는 일련의 흐름을 말합니다. 제가 얍꽁을 개발할 때도 음성 인식부터 최종 렌더링까지 이어지는 전체 구조가 먼저 명확히 정의된 뒤에야 세부 기능의 완성이 가능했습니다. 정해진 시간마다 작업을 자동 실행하는 크론 설정 하나로도 시스템 전체가 흔들릴 수 있듯이, 뼈대를 잡고 검증하는 역할은 끝까지 인간의 몫입니다. 크론이란 정해진 시간마다 작업을 자동 실행하는 도구를 뜻합니다.

소프트웨어 아키텍처 설계가 여전히 인간의 예술인 이유

코드가 값싸진 시대에 요구되는 엔지니어의 진짜 실력

코드를 화면에 타이핑하는 행위 자체의 가치는 0원에 가까워졌지만 시스템을 장기적으로 설계하고 품질을 입증하는 엔지니어링의 기준은 역사상 어느 때보다 높아졌습니다. 조너선 켈리는 강연의 결론부에서 "이제 코드는 값싸졌지만, 품질은 그렇지 않다는 것입니다"라고 단언했습니다. 엔지니어의 본질적인 역할은 화면 가득 코드를 채우는 노동이었던 적이 한 번도 없었다는 지적입니다.

훌륭한 소프트웨어 엔지니어링이란 복잡한 문제 앞에서 우아한 해결책을 설계하고, 비즈니스와 시스템의 진화를 열 걸음 앞서 내다보며, 변화하는 요구사항 속에서도 유연성을 유지하는 작업입니다. 조너선 켈리는 AI 도구의 등장으로 이러한 고차원적 설계 역량의 중요성이 사라지기는커녕 오히려 더욱 강력하게 요구되고 있다고 역설했습니다. 생성 도구의 성능이 뛰어날수록 이를 통제하고 조율하는 사람의 설계 능력이 결과물의 완성도를 결정짓게 됩니다.

코드가 값싸진 시대에 요구되는 엔지니어의 진짜 실력

조너선 켈리의 경험은 AI 코딩 도구의 본질을 명확히 보여줍니다. 코드 생성에 앞서 꼼꼼한 검증 체계를 세우고, 에이전트에게는 지루하고 반복적인 검증 작업을 맡기며, 인간은 시스템의 진화를 내다보는 아키텍처 설계에 집중해야 합니다. 제 생각에는 코드를 작성하는 비용은 0원이 되었지만 품질을 증명하는 비용은 그대로인 만큼, 무엇을 만들고 어떻게 검증할지 판단하는 엔지니어만이 미래의 소프트웨어 생태계에서 진정한 가치를 증명할 것입니다.

이 글은 Building ambitious software — Jonathan Kelley, Dioxus Labs & Cognition — AI Engineer 영상(Building ambitious software — Jonathan Kelley, Dioxus Labs & Cognition — AI Engineer)을 바탕으로 정리했습니다.

한 줄 정리
  • 조너선 켈리는 검증 장치 없이 AI 코딩 도구를 남용하면 머지되지 못하는 방대한 쓰레기 코드가 쌓인다고 경고합니다.
  • Rust 언어의 엄격한 컴파일러와 빌림 검사기는 AI 에이전트의 오류를 사전에 걸러내는 강력한 방파제 역할을 합니다.
  • 다이옥서스 팀의 핵심 엔지니어 3명은 릴리스 검증과 에디터 확장 기능 테스트 같은 지루하고 반복적인 작업에 에이전트를 집중 활용했습니다.
  • 코딩 에이전트는 구조적 결함을 스스로 리팩터링하지 못하므로 시스템 아키텍처 설계는 여전히 엔지니어 고유의 예술 영역입니다.
  • 코드 생성 비용이 낮아진 시대일수록 시스템의 장기적인 진화를 설계하고 품질을 증명하는 엔지니어링 기준이 더욱 중요해집니다.
자주 묻는 질문

Q. 조너선 켈리는 누구인가요?
A. 조너선 켈리는 여러 운영체제에서 동작하는 크로스 플랫폼 UI 프레임워크인 다이옥서스(Dioxus)를 개발하는 다이옥서스 랩스의 대표 엔지니어입니다. AI Engineer 강연을 통해 소규모 팀에서 코딩 에이전트를 활용해 30만 줄의 프레임워크를 개발하며 얻은 실전 통찰을 공유했습니다.

Q. AI 코딩 에이전트가 생성한 코드가 '쓰레기 코드'가 된 원인은 무엇인가요?
A. 도구를 제대로 다루는 방법과 검증 기준 없이 코드 생성에만 집중했기 때문입니다. 수만 줄의 코드를 빠르게 만들어냈지만, 품질 기준을 충족하지 못해 실제 코드베이스에 머지되지 못하고 초안 상태로 방치되었습니다.

Q. AI 에이전트와 Rust 프로그래밍 언어의 궁합이 좋은 이유는 무엇인가요?
A. Rust 특유의 엄격한 컴파일러와 빌림 검사기가 에이전트의 실수를 원천 차단하기 때문입니다. 에이전트가 까다로운 문법과 예외 처리를 대신 해결해 줌으로써 개발자의 인지적 부담을 크게 덜어줍니다.

Q. 코딩 에이전트를 개발에 가장 효과적으로 활용하는 방법은 무엇인가요?
A. 새로운 대형 기능 개발보다는 일상적이고 지루한 반복 검증 작업을 위임하는 것입니다. 릴리스 전 패키징 경로 확인, 에디터 확장 기능 호환성 검사, 회귀 테스트 스크립트 작성 등에 에이전트를 투입할 때 가장 큰 효율을 얻을 수 있습니다.

Q. 코드가 값싸진 AI 시대에 엔지니어에게 남는 핵심 역량은 무엇인가요?
A. 복잡한 시스템의 장기적 진화를 내다보고 우아한 구조를 세우는 아키텍처 설계 역량입니다. 코드를 생성하는 비용이 거의 들지 않게 된 만큼, 에이전트가 올바르게 작동할 수 있는 기반 틀을 짜고 결과물의 품질을 증명하는 능력이 핵심 기준이 됩니다.

영상 대본 전문

단 3명의 엔지니어가 30만 줄의 프레임워크를 만들었습니다. 크로스 플랫폼 UI 프레임워크 다이옥서스의 이야기입니다. 먼저 AI로 코드를 쏟아붓다 슬롭 캐논이 된 경험을 짚어봅니다. 이어서 에이전트가 진짜 잘하는 일과 못하는 일을 정리합니다. 마지막으로 개발자에게 남는 진짜 실력이 뭔지 알아봅니다. 그들은 클로드 코드를 만나고 엄청난 흥분에 휩싸였습니다. [원본 영상 인용: 슬롭 캐논이 된 사연] 코드가 쏟아져 나온다고 품질이 보장되는 건 아니었습니다. 저도 얍꽁에 47분 롱폼을 넣고 병목 다섯 개를 하루 만에 고쳤습니다. 그런데 음량 정규화 필터가 잡음을 20dB 키운 건 직접 재서 알았습니다. 출력이 아무리 그럴듯해도 맞는지 검증하는 건 사람의 몫입니다. 그런데 다이옥서스 팀은 왜 하필 러스트에서 돌파구를 찾았을까요? [원본 영상 인용: 러스트와 AI의 궁합] 러스트의 지독한 컴파일러가 에이전트의 든든한 방파제가 된 겁니다. 빌림 검사기가 잘못된 코드를 다 튕겨내니 안전장치가 생겼습니다. 여기에 에이전트의 지치지 않는 탐색 능력이 결합되었습니다. 그런데 이들이 에이전트로 진짜 큰 효과를 본 작업은 따로 있었습니다. [원본 영상 인용: 지루한 작업의 자동화] 릴리즈 검증과 문서 동기화 같은 지루한 일에 에이전트가 제격입니다. 저도 매시간 도는 알림 크론에서 조건 하나가 빠져 고생한 적이 있습니다. 이런 꼼꼼한 점검과 검증 스크립트 작성에 에이전트가 큰 힘이 됩니다. 하지만 코드를 어디에 붙여야 할지 정하는 건 전혀 다른 문제입니다. [원본 영상 인용: 아키텍처는 여전히 예술이다] 에이전트는 구조적 결함을 고민하지 않고 일단 코드를 뱉어냅니다. 얍꽁도 음성인식부터 렌더까지 파이프라인 구조가 먼저 잡혀야 했습니다. 틀이 없으면 에이전트가 짠 코드가 어디에 붙어야 할지도 모릅니다. 결국 코드를 타이핑하는 시대가 끝났을 때 무엇이 남을까요? [원본 영상 인용: 코드는 싸졌지만 품질은 아니다] 조너선 켈리의 통찰은 세 가지로 요약됩니다. 첫째, 쏟아지는 슬롭 캐논을 막으려면 코드 생성보다 검증이 앞서야 합니다. 둘째, 에이전트에게는 반복적이고 지루한 검증과 탐색을 맡겨야 합니다. 셋째, 시스템의 진화를 내다보는 아키텍처 설계가 개발자의 진짜 실력입니다. 코드를 짜는 비용은 0원이 되었지만, 품질을 증명하는 비용은 그대로입니다. 결국 무엇을 만들고 어떻게 검증할지 판단하는 사람만 살아남을 것입니다.

#조너선 켈리#다이옥서스#Dioxus#Claude Code#소프트웨어 아키텍처#Rust#코딩 에이전트#AI 엔지니어링#나레이터선사#얍꽁