Agentic coding 시대의 refactoring, token 비용으로 드러난 효과

Martin Fowler의 글이 흥미로운 이유는 refactoring을 미덕이나 취향으로 말하지 않고, agentic coding의 비용 문제로 재측정했기 때문이다. 실험 대상은 agent가 거의 전부 작성한 약 15만 줄 규모의 애플리케이션이었다. 그중 Rust data access layer 하나가 17,155줄짜리 단일 파일로 자라났고, Fowler는 같은 기능 변경을 반복 실행하면서 refactoring 전후의 token 사용량을 비교했다.

실험 구조는 단순하지만 설계가 날카롭다. 먼저 같은 대표 변경 요청을 fresh sub-agent에게 수행하게 해 baseline을 잡는다. 그다음 correctness-preserving refactoring을 한 단계씩 적용하고, 매번 똑같은 prompt로 같은 변경을 다시 시킨 뒤 token, 시간, 파일 크기를 기록한다. 사람이라면 앞선 시도를 학습해 결과가 섞이지만, 새 agent를 쓰면 codebase 구조 변화가 비용에 어떤 영향을 주는지 더 분리해서 볼 수 있다.

결과의 핵심 수치는 분명하다. 입력 token은 baseline 159,564에서 마지막 단계 27,360으로 줄었다. 약 83% 감소다. 전체 data access layer의 총 LoC는 크게 줄지 않았지만, 가장 큰 파일이 17,155줄에서 3,695줄로 작아지면서 agent가 필요한 파일만 좁혀 읽기 쉬워졌다. 무작정 파일을 잘게 나누는 효과가 아니라, 반복되는 구조를 뽑고 내부 언어를 만든 뒤 관련 코드를 찾기 쉬운 형태로 옮긴 효과에 가깝다.

HN 댓글은 이 지점을 바로 파고들었다. 한 댓글은 LLM이 잘 factored code에서 훨씬 이득을 보지만 스스로 그런 코드를 만들지는 못한다는 경험과 맞아떨어진다고 했다. 다른 댓글은 tests가 refactoring의 전제라는 Fowler식 원칙을 다시 짚었다. agent가 코드를 고칠수록 테스트는 인간과 모델 모두가 읽는 spec이 된다.

흥미롭게도 Fowler의 결론은 “agent에게 refactoring을 맡기면 된다”가 아니다. Claude는 어떤 refactoring이 적합한지 스스로 잘 고르지 못했고, 사람이 구체적인 절차를 제시해야 했다. 비용 절감 폭은 크지만, refactoring 자체의 비용과 품질 관리가 남는다. 이 글은 agentic engineering에서 구조 좋은 코드가 단순한 미관이 아니라 반복 작업의 입력 비용을 줄이는 운영 지표가 될 수 있음을 보여준다. 원문과 HN 토론은 Martin Fowler 블로그, HN 스레드에서 확인할 수 있다.