
전부 모아야 한다: 에이전틱 엔지니어링 (Agentic Engineering)의 체육관 배지 (파트 2)
요약
에이전틱 엔지니어링의 핵심 역량 중 하나인 '잘못된 코드 식별 능력'을 강조합니다. AI 에이전트가 생성한 코드가 겉보기에는 완벽해 보여도 논리적 결함(예: async/await 오류)을 가질 수 있음을 경고하며, 인간 개발자의 검증 역할을 강조합니다.
핵심 포인트
- 에이전틱 엔지니어링은 AI를 활용해 실제 소프트웨어를 구축하는 과정임
- AI가 생성한 코드 중 겉보기에만 올바른 '독이 든 코드'를 찾아내는 능력이 필수적임
- LLM의 답변을 맹신하지 말고 인간이 직접 코드의 품질을 검증해야 함
- 개발자는 에이전트에게 통제권을 넘기는 것이 아니라 에이전트를 통제해야 함
지난번 우리는 네 개의 배지를 획득했습니다: bedrock, context, scoped speed, 그리고 자판기를 흔드는 대신 정원을 가꾸는 인내심이죠. 놓치셨다면 위에 링크를 걸어두었습니다. 문지기는 움직이지 않았지만, 당신은 움직였습니다.
이제 막 들어오신 분들을 위해 빠르게 복습하자면: 제가 말하는 _"에이전틱 엔지니어링 (agentic engineering)"_이란 단순히 탭 완성(tab-complete)을 하는 것이 아니라, Claude Code나 Copilot 같은 AI 에이전트(AI agents)를 사용하여 실제 소프트웨어를 구축하는 것을 의미합니다. 그리고 미리 경고해 두자면, 오늘 배지 중 하나는 증거와 함께 찾아옵니다. 무려 2억 1,100만 줄의 코드에 달하는 증거 말이죠.
처음 네 개의 체육관은 기초를 제공합니다. 유용하죠! 하지만 기초만 배워서는 아무도 챔피언이 될 수 없습니다. Celadon을 지나면 게임의 양상이 바뀝니다. 단순히 일을 하는 것이 아니라, _그 일에 속지 않는 것_이 중요해지기 시작합니다.
끝내봅시다.
배지 5: 소울 배지 (Soul Badge): 독의 맛을 배우는 법
Koga. 독 타입. 그의 체육관은 보이지 않는 벽으로 이루어진 미로라서, 닌자들이 당신을 지켜보는 동안 아무것도 없는 곳에 머리를 박으며 20분을 허비하게 됩니다. 복선이죠.
이것은 에이전트 시대의 '진정한' 배지이자, 가르치기 가장 어려운 것일 수 있습니다. 잘못된 코드를 찾아내는 것. 완전히, 그리고 아름답게 올바르게 보이는 와중에 잘못된 코드를 찾아내는 것 말입니다.
// 완료된 것처럼 보임. 실행됨. 데모 통과.
users.forEach(async (user) => {
await sendNotification(user);
...
// 실제로 기다려야 하는 방식
for (const user of users) {
await sendNotification(user);
...
첫 번째 블록의 모든 줄은 실제이며, 3명의 사용자로 구성된 데모는 작동합니다. 하지만 forEach는 당신의 await를 무시합니다. 단 하나의 알림이 나가기도 전에 로그가 출력되며, 만약 하나가 실패한다면 그 에러는 허공 속으로 증발해 버립니다. 실패할 만큼 무언가 망가진 상태는 아닙니다. 하지만 2주 뒤에 당신을 아프게 할 만큼 충분히 망가져 있는 상태죠.
그것이 바로 독의 맛입니다. 쓰지 않습니다. 아주, 아주 약간 어색할 뿐입니다.
그리고 맛 테스트(taste test)는 외주를 줄 수 없습니다. LLM에게 "이게 쓰레기(slop)인가요?"라고 묻는다면, 답변 자체에 쓰레기가 섞여 나올 수 있습니다. 맛을 보는 것은 인간의 기술이며, 이전에 독을 먹어본 경험을 통해 얻게 됩니다. (다시 한번 말씀드리지만, 배지 1번입니다.)
진짜와 약간 어긋난 것을 구분할 수 없다면, 에이전트가 운전하고 당신은 조수석에서 잠들어 있는 상태와 같습니다. 당신의 삶을 에이전트에게 떠넘기지 마세요. 그들을 통제하세요. 당신이 책임지는 인간입니다.
배지 6: 마시멜로 배지: 텔레파시가 아닙니다
어느 시점에 이르면 에이전트가 당신의 생각을 끝마치고, 당신의 스타일을 맞추며, 당신의 뇌는 조용히 그것을 "나를 이해함"이라는 항목으로 분류합니다.
그렇지 않습니다. 당신이 숙련되었을 때 실제로 일어나는 일은 훨씬 덜 신비롭습니다. 그것이 어떻게 실수하는지에 대한 멘탈 모델 (mental model)을 구축하는 것입니다. 에이전트는 엄청난 자신감을 가지고 존재하지 않는 API를 만들어냅니다. 자신의 학습 데이터보다 최신인 정보는 전혀 알지 못합니다. 그리고 당신이 마치 확신이 있는 것처럼 말한다면, 에이전트는 틀린 전제에도 기꺼이 동의할 것입니다.
// 대부분의 사람들이 보내는 방식
"버그가 캐시 레이어(cache layer)에 있으니, 캐시 무효화(cache invalidation)를 수정해줘"
// 당신이 할 수 있는 방식
"사용자들이 프로필 업데이트 후 오래된 데이터(stale data)가 나타난다고 보고합니다.
여기 요청 흐름(request flow)과 캐시 설정(cache config)이 있습니다.
...
충분한 확신을 가지고 말하면, 에이전트는 실제로 캐시에 버그가 있든 없든 캐시에서 버그를 찾아낼 것입니다. 먼저 추론(reasoning)하도록 요청하면 갑자기 해낼 수 있게 됩니다.
프롬프팅 (Prompting)은 당신의 프로젝트에 대해 기억상실증에 걸린 데다 허세를 부리는 습관이 있는, 아주 똑똑한 동료와 대화하는 것과 같습니다. 이 점을 내재화한다면, 당신의 프롬프트 절반은 공짜로 스스로 수정될 것입니다.
이 문제에 도움이 될 만한 "기술들"은 아주 많습니다. 몇 가지 예시는 다음과 같습니다:
https://github.com/multica-ai/andrej-karpathy-skills
Superpowers Plugin | Anthropic의 Claude
Claude는 Superpowers를 통해 브레인스토밍 (brainstorming), 코드 리뷰 (code review)를 포함한 하위 에이전트 (subagent) 개발, 디버깅 (debugging), TDD, 그리고 기술 저작 (skill authoring)을 학습합니다. 워크플로우를 확장하려면 이 플러그인을 설치하세요.
그것들을 사용하세요. 그것들은 마법이 아니라 프레임워크 (frameworks)입니다. 그것들을 사용하더라도 여전히 잘못된 결과물을 만들어낼 수 있습니다. 하지만 그것들은 당신이 너무 자주 스스로의 발등을 찍는 일을 방지하도록 도와줄 것입니다.
배지 7: 화산 배지 (Volcano Badge): 불은 누가 코드를 썼는지 상관하지 않는다
Blaine는 당신과 전투를 벌이기도 전에 퀴즈 질문에 답하게 만듭니다. 이는 단순히 단계가 더 추가된 디버깅 (debugging)일 뿐입니다. 수수께끼에 답하면, 전투를 치르게 됩니다.
코드를 생성하는 것은 튜토리얼입니다. 이 배지는 그것이 배포된 _이후_의 모든 상황, 즉 에이전트 (agent)가 작성한 것이 라이브 상태가 되어 새벽 2시에 조용히 타오르고 있을 때를 의미합니다. 여기서는 어떤 영리한 프롬프트 (prompt)도 당신을 구원하지 못합니다. 당신에게는 실제로 읽을 수 있는 로그 (logs)가 필요합니다. 트레이스 (Traces) 말입니다. 하나의 컨테이너의 JSON 로그 파일이 당신이 잠든 사이 디스크 전체를 조용히 잡아먹을 수 있다는, 어렵게 얻은 지식도 필요합니다 (제가 어떻게 아는지 묻지 마세요. 아니, 물어보세요, 정말 끔찍했으니까요).
다른 배지들과 달리, 이 배지는 구체적인 훈련 체계가 있습니다:
- 필요하기 전에 로그를 읽을 수 있게 만드세요.
console.log("here 2")가 아니라, 요청 ID (request IDs)가 포함된 구조화된 로그 (structured logs)를 사용하세요. 새벽 2시의 미래의 당신은 더 멍청한 상태일 것입니다. 그를 위해 작성하세요. - 트레이싱 (tracing) 도구를 하나 배우세요. 무엇이든 좋습니다. "이 요청이 어디서 죽었는가"는 느낌이 아니라 쿼리 (query)로 확인되어야 합니다.
- 자신의 로그를 냉철하게 읽으세요. 평범한 날에 하나의 요청을 처음부터 끝까지 추적해 보세요. 아무것도 고장 나지 않았을 때 추적할 수 없다면, 모든 것이 고장 났을 때는 가능성이 전혀 없습니다.
- 에이전트를 동료로 대하세요. 스택 트레이스 (stack traces), 로그 (logs), 스크린샷 (screenshots) 등 인간에게 공유할 모든 컨텍스트 (context)를 에이전트와 공유하세요. 에이전트가 당신을 이해하고 조사를 돕는 데 사용할 수 있는 것이라면 무엇이든 좋습니다. 그것은 매우 유용합니다.
이는 또한 당신이 비브 코딩 (vibe coded)을 했더라도 자신의 제품을 알고 있어야 함을 의미합니다. 만약 그렇지 않다면, 화재가 발생하고 Claude가 다운되었을 때 (최근 매우 자주 발생하는 일입니다), 당신은 당신의 생각과 평생 본 적 없는 코드만을 가진 채 홀로 남겨지게 될 것입니다...
배지 8: 지구 배지 (Earth Badge): 커밋에는 당신의 이름이 적혀 있다
이 부분은 여기까지 올 때까지 설명하지 않겠다고 말했었죠. 그러니 말씀드리겠습니다: Giovanni는 단순히 여덟 번째 체육관 관장이 아닙니다. 그는 로켓단 (Team Rocket)의 보스입니다. 당신은 게임 내내 그의 조직을 해체하며 시간을 보내고, 경비원이 기다리고 있는 마지막 배지는 바로 그 악당 본인으로부터 받게 됩니다.
어린 시절의 저는 그것이 멋진 반전이라고 생각했습니다. 하지만 어른이 된 저는 그 반전이 실제로 무엇을 말하고 있는지 깨달았습니다. 로켓단이 무엇인지 생각해 보세요. 그들은 포켓몬을 육성하지 않고, 훔칩니다. 그들의 철학 전체는 훈련을 하지 않고 힘을 얻는 것입니다. 그리고 Giovanni는 그것이 통한다는 것을 보여주는 살아있는 증거입니다. 그는 부유하고, 두려움의 대상이며, 도시 전체를 운영합니다. 게임은 다른 누구도 아닌 그를 당신과 리그 사이에 배치합니다. 마지막 장애물은 더 강한 트레이너가 아닙니다. 그것은 자신의 방식을 당신에게 제안하는 성공한 인물입니다.
그것이 제가 이것을 유혹이라고 부르는 이유입니다. 에이전틱 엔지니어링 (agentic engineering)의 최종 보스는 지독한 버그가 아닙니다. 그것은 지름길 철학이며, 적어도 처음에는 눈에 보이게 작동합니다. 에이전트의 판단이 당신의 판단을 조용히 대체하도록 내버려 두세요. 머지 (merge)하는 것이 진전처럼 느껴지기 때문에 배포량 (ship volume)에만 집중하세요. 코드가 맞아 보이고 시간이 늦었다는 이유로 읽지도 않은 200줄의 코드를 붙여넣으세요. 읽지 않은 에이전트의 결과물을 배포하는 것은 포켓몬을 육성하는 대신 훔치는 것과 같습니다. 서류상으로는 똑같은 힘을 가진 것처럼 보이지만, 그 중 당신의 것은 아무것도 없습니다.
그리고 이것이 주니어들에게만 발생하는 "실력 문제 (skill issue)"라고 말하기 전에 말씀드리자면, 업계 전체가 대규모로 이 현상에 빠져들고 있으며, 저희는 그 증거를 가지고 있습니다. GitClear는 5년에 걸쳐 2억 1,100만 줄의 변경된 코드 라인을 분석했습니다. 중복된 코드 블록은 단 1년 만에 8배 급증했습니다. 복사/붙여넣기(Copy/pasted)된 라인이 데이터셋 역사상 처음으로 리팩터링(refactored, "이동")된 라인을 넘어섰습니다. 커밋 후 제대로 작동하지 않아 2주 이내에 다시 작성하게 되는 코드인 '코드 이탈 (Churn)'은 AI 도입 전 기준치보다 대략 두 배 증가했습니다. 또한 Google의 자체 DORA 보고서에 따르면, AI 도입이 증가함에 따라 배포 안정성 (delivery stability)이 7.2% 하락한 것으로 나타났습니다.
단일 기업에서도 똑같은 영화를 목격할 수 있습니다. Spotify의 엔지니어링 부사장(VP of Engineering)은 최근 그들이 하루에 4,500건의 프로덕션 배포 (production deploys)를 수행하며, 현재 PR(Pull Request)의 73%가 AI의 도움을 받고 있다고 공유했습니다. 진심으로 인상적인 수치입니다. 한편, 그들의 자체 커뮤니티 포럼에는 "업데이트가 될 때마다 앱이 더 느려지고 나빠진다"는 글이 끝없이 올라오고 있으며, 이 4,500건의 배포에 대한 가장 화제가 된 반응은 제품이 거의 달라진 느낌이 없는데 이 모든 배포가 도대체 무엇을 위한 것이냐고 묻는 누군가의 질문이었습니다. AI 보조 PR이 이러한 불만을 초래했다고 말하는 것은 아닙니다. 그렇게 말하는 것은 게으른 분석입니다. 제가 말하고자 하는 것은 처리량 (throughput)은 수직 상승했지만 체감 품질 (perceived quality)은 이를 따라가지 못했으며, 그것이 바로 문제라는 점입니다.
직접 확인하실 수 있도록 출처를 남깁니다. 2억 1,100만 줄 분석:
배포 안정성에 관한 DORA:
DORA | Accelerate State of DevOps Report 2024
DORA는 소프트웨어 배포 및 운영 성능을 주도하는 역량을 이해하기 위해 진행되는 장기 연구 프로그램입니다. DORA는 팀이 이러한 역량을 적용할 수 있도록 도와 조직의 성과를 향상시킵니다.
Spotify의 일일 4,500건 배포 및 73% AI 보조 PR + 반응:
// Detect dark theme var iframe = document.getElementById('tweet-2071817938076860432-223'); if (document.body.className.includes('dark-theme')) { iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=2071817938076860432&theme=dark" }
모두가 더 빠르게 배포하고 있습니다. 하지만 무엇이 배포되고 있는지는 명확하게 개선되고 있지 않습니다. 아무도 이를 결정하지 않았습니다. 수백만 명의 개발자들이 한 번에 하나의 리뷰를 건너뛰며 이 흐름에 휩쓸려 왔습니다. 그것이 바로 이것을 보스전 (boss fight)으로 만드는 요소입니다.
당신을 현실에 직시하게 만드는 짜증 나는 사실: 에이전트 (agent)는 PR (Pull Request)에 대한 책임을 지지 않습니다. 당신이 집니다. 에이전트가 코드를 망가뜨렸을 때, 아무도 모델을 대상으로 티켓 (ticket)을 발행하지 않습니다. 이제 코드는 저렴합니다. 하지만 당신의 이름값은 그렇지 않습니다.
여덟 개의 배지. 이제 무엇을 해야 할까요?
관문은 끝이 아닙니다. 새로운 시작입니다. 인생의 모든 일이 그렇듯, 일단 정상에 도달하고 나면 그것이 수많은 정상 중 하나였음을 깨닫게 됩니다...
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기



