원문 캡처 · blog.adrq.dev
원문 캡처 · blog.adrq.dev

AI 에이전트가 코드를 빠르게 만들수록 소프트웨어를 책임지는 사람에게는 모든 코드를 직접 작성하는 능력보다 시스템의 큰 그림을 파악하고, 문제가 생겼을 때 필요한 만큼 깊이 파고드는 역량이 중요해진다는 주장이다. 이를 위해 글은 컴퓨터과학의 기초, 폭넓은 지식, 필요할 때 깊이 배우는 능력을 제시한다.

글의 계기가 된 것은 CI 실패였다. Codex가 App.tsx 한 줄에 컴포넌트 하나를 넣는 식으로 코드를 작성했고, SonarQube는 순환 복잡도 문제를 표시했다. 코드를 포매팅한 뒤 살펴보니 복잡성은 업무 요구사항에 필요한 수준이었지만, Codex에 SonarQube를 만족하도록 리팩터링을 요청하자 코드가 10개 파일로 나뉘었고 CI가 통과했다. 글쓴이는 이 사례를 통해 에이전트가 만든 코드를 책임지려면 문제가 실제 결함인지 판단하고 필요할 때 직접 조사해야 한다고 설명한다.

글은 에이전트를 심해에서 광물을 캐는 잠수 로봇에 비유한다. 낙관론자는 로봇이 작업하는 동안 사람이 결과를 받으면 된다고 본다. 회의론자는 로봇이 길을 잃거나 유지하기 어려운 복잡한 시스템을 만들 수 있다고 우려한다. 글은 어느 한쪽처럼 모든 코드를 직접 읽거나, 반대로 코드를 들여다보지 않아도 된다고 보는 태도 모두에 동의하지 않는다.

대신 시스템을 맡은 사람은 전체 구조를 추상화한 지도를 갖고, 이상이 생기면 어디를 얼마나 깊이 살펴볼지 알아야 한다고 주장한다. 이를 위해 필요한 역량은 세 가지다. 자료구조와 알고리즘, 네트워킹, 동시성, 분산 시스템 같은 기초 지식은 문제의 징후를 알아보는 데 쓰인다. 여러 분야를 아우르는 폭넓은 지식은 어디를 조사할지 판단하는 데 도움을 준다. ‘필요할 때 깊이 파고드는 능력’은 낯선 문제를 해결하는 데 필요한 것을 배우되, 혼자 해결하기 어렵다면 도움을 구하는 태도다.

글쓴이는 에이전트 오케스트레이터의 안정성 문제를 해결하다가 과거에 읽은 Kubernetes 책에서 ‘레벨 트리거 상태 머신’ 개념을 떠올려 핵심 구조를 다시 설계한 경험도 소개한다. 이 사례를 바탕으로 에이전트가 만든 시스템을 책임질 사람은 기초와 폭넓은 지식을 갖추고, 문제가 생겼을 때 빠르게 배우며 필요한 깊이까지 조사할 수 있어야 한다고 제안한다. 글에서 말하는 시스템 소유자는 문제가 생겼을 때 대응을 맡는 사람이다.

추상화가 새는(leaky) 현상에 관한 설명은 조엘 스폴스키의 글을 참고할 수 있다.