일관성 있는 Agentic AI Workflow를 팀 프로젝트에 적용하는 법

개요
코딩 에이전트가 개발의 필수 도구가 된 지금, AI 를 쓰지 않는 개발자를 찾기가 오히려 어렵다. 기업들도 이 흐름에 발맞춰 OpenAI, Claude, Gemini를 종류별로 전부 구독하며 적극적인 사용을 장려한다.
하지만 비싼 비용을 들여 AI를 구독한다고 해서 생산성이 저절로 높아지지는 않는다.
METR 리서치에 따르면 AI 코딩 도구를 사용했을 때 개발 완료 시간이 오히려 19% 증가했다는 결과도 있다. 개발자들은 20% 단축을 기대했지만, 실제로는 정반대였다.
반면, SNS에서 자주 회자되는 프로그래밍좀비라는 개발자는 AI를 활용해 350개의 앱을 개발하고 수익화에 성공했다고 한다. 중국인 개발자 EastonDev는 10,000라인 레거시 코드를 14일 만에 리팩토링하며 테스트 커버리지, 버그, 성능 지표까지 개선했다.
같은 도구를 쓰면서 왜 이런 생산성 차이가 생길까? 개인이 각자 알아서 AI를 사용하다 보면, 도구에 대한 이해도, 축적된 경험, 효과적인 활용법에 따라 결과가 천차만별이기 때문이다. AI 구독은 개인 능력의 상한선을 높여주지만, 그것이 곧 팀 전체의 생산성 향상으로 이어지지는 않는다.
이 글에서는 개인의 AI 활용 역량을 팀 전체의 역량으로 전환하는 방법을 다룬다.
LLM과 Harness의 한계
LLM의 한계는 이미 잘 알려진 내용이므로 깊이 다루지는 않겠다. 다만 트랜스포머 기반 AI에게 업무를 맡길 때 반드시 인지해야 할 본질적 한계를 짚고 넘어가보자.
1. 컨텍스트는 유한하다
아무리 컨텍스트 윈도우가 커져도, 긴 맥락이 필요한 작업에는 여전히 한계가 있다. 대규모 코드베이스 전체를 이해하거나, 수십 개 파일에 걸친 리팩토링을 한 번에 처리하기는 어렵다. 이를 해결하려면 맥락을 효과적으로 전달하는 별도의 방법을 고안해야 한다.
2. 결과물은 확률적이다
같은 프롬프트에도 매번 다른 결과가 나온다. 이는 LLM의 근본적인 생성 방식 때문이다. 창의적인 작업에서는 장점이 되지만, 일관성이 필요한 작업에서는 치명적인 단점이 된다.
3. 환각은 피할 수 없다
LLM은 자신 있는 어조로 틀린 정보를 생성한다. 코딩 맥락에서는 존재하지 않는 API를 호출하거나, deprecated된 문법을 최신인 것처럼 제안하거나, 아예 없는 라이브러리를 import하는 코드를 만들어낸다. 문제는 이런 환각이 그럴듯해 보인다는 것이다. 검증 없이 AI의 출력을 그대로 믿으면, 컴파일 에러는 그나마 다행이고 런타임에서나 확인하는 대형사고로 이어질 수 있다.