- 원문 제목: You still have to refactor, even with AI
- 원문 링크: https://www.adamhjk.com/blog/you-still-have-to-refactor-even-with-ai/
- 번역일: 2026-03-30 KST
AI 에이전트가 형편없는 코드를 만든다거나, 반대로 AI를 안 쓰면 뒤처진 엔지니어라는 식의 극단적인 주장들이 인터넷에 넘쳐난다. 하지만 이런 논쟁에는 중요한 착각이 하나 있다. AI가 인간 엔지니어의 역할을 없애준다고 보는 것이다. 실제로는 그 반대에 가깝다. AI는 소프트웨어 엔지니어링을 없애지 않는다. 다만 엔지니어가 코드를 직접 다루는 방식에서, 아키텍처와 변화의 흐름을 다루는 방식으로 관점을 옮기게 만든다.
소프트웨어가 현재 형태로는 더 이상 요구사항을 감당하지 못하는 순간이 오면 우리는 그것을 리팩터링이라고 부른다. 이 기본 사실은 AI 시대에도 바뀌지 않는다.
초기에는 저자도 에이전트를 자신의 기존 워크플로를 보조하는 도구로 썼다. 자동완성보다 조금 더 강한 보조 장치 정도로 본 것이다. 그런데 1년 남짓 지나면서 에이전트가 더 복잡한 프로토타입까지 빠르게 만들 수 있게 되자, 다른 문제가 드러났다. 처음엔 속도가 엄청나지만 시간이 지나면 코드베이스가 자기 무게를 못 이기고 무너진다. 여기저기 중복이 생기고, 구조가 흐트러지고, 점점 유지보수 불가능한 덩어리가 된다.
이 지점에서 흔히 “봐라, 결국 AI가 만든 코드는 엉망이다”라는 결론에 도달하기 쉽다. 저자도 한동안 그렇게 생각했다. 하지만 나중에 보니 문제는 AI 자체보다도, AI를 바라보는 프레임에 있었다. 에이전트를 나를 보조하는 존재로만 보면 성능이 제한된다. 지금의 엔지니어 역할은 에이전트를 보조하는 쪽에 더 가깝다.
내가 세상에 존재했으면 하는 소프트웨어가 있다면, 내 일은 비결정적인 모델이 처음부터 모든 판단을 완벽히 하길 기대하는 게 아니다. 대신 더 나은 결과가 나오도록 시스템을 겹겹이 설계하는 것이다. 에이전트를 속이는 게 아니라, 에이전트가 내 요구사항과 품질 기준을 만족하도록 환경과 피드백 루프를 만드는 일이다. 다시 말해 “기계를 만드는 기계”를 만드는 일이다.
저자는 최근 실제 사례를 든다. DigitalOcean의 S3 호환 오브젝트 스토리지를 백엔드로 쓰기 위해 엔드포인트 설정을 추가해야 했고, Claude에게 구현을 맡겼다. 첫 구현은 겉보기엔 됐지만 실제 테스트를 해보니 아주 취약했다. 이유를 보니 코드베이스 곳곳에 S3 클라이언트를 생성하는 코드가 열 군데나 있었고, 에이전트는 그중 네 군데를 놓쳤다.
그럴 때 해야 하는 일은 단순하다. 에이전트에게 리팩터링을 시키면 된다. 코드가 잘못 분해돼 있는 “이음새(seam)”를 찾아내고, 그 구조를 다시 잡아야 한다. 이 과정 자체는 예전과 다르지 않다. 달라진 점은 속도다. 에이전트가 소프트웨어를 엄청난 속도로 생산하기 때문에, 리팩터링 루프와 아키텍처 수정 루프 역시 훨씬 짧아진다.
문제는 기존의 소프트웨어 개발 프로세스가 보통 “사람이 코드를 충분히 이해하고 있다”는 가정 위에 세워져 있다는 점이다. 코드를 일일이 읽고 수정하면서 느껴지는 마찰이 사라지면, 무엇을 리팩터링해야 하는지 어떻게 감지할 것인가? 변경 속도가 너무 빨라지면 동료 리뷰어들은 어떻게 따라갈 것인가? 예전 프로세스 그대로는 버티기 어렵다.
그래서 저자는 프로세스 자체를 다시 설계해야 한다고 말한다. 아키텍처 가이드나 스킬 문서에 어떤 안티패턴을 막아야 하는지 더 명확히 적어야 할 수도 있다. 매일 자동으로 적대적 코드 리뷰를 돌려서 단순한 DRY 리팩터링 후보를 찾게 할 수도 있다. 그리고 이런 자동 수정이 제품을 망치지 않도록 외부 블랙박스 테스트를 더 강하게 세워야 한다.
인간이 결국 마주하는 문제는 예나 지금이나 같다. 소프트웨어가 바꾸기 어렵고, 지나치게 취약하고, 요구사항 변화에 충분히 유연하지 않다는 것이다. 이것을 “AI는 좋은 코드를 못 쓴다”는 증거로 볼 수도 있지만, 저자는 시선을 바꾸자고 제안한다. 인간의 일은 점점 더 에이전트가 더 나은 결과를 내도록 이끄는 일, 즉 시스템과 루프를 개선하는 일로 이동하고 있다는 것이다.
AI 에이전트가 코드를 썼다고 해서 좋은 소프트웨어 엔지니어링의 기본기가 사라지는 건 아니다. 오히려 더 빨리, 더 자주, 더 체계적으로 수행해야 한다. 아키텍처를 더 많이 생각해야 하고, 리팩터링에 더 집요해야 하며, 입력과 출력의 품질을 보장하는 적대적 검증 루프를 더 많이 만들어야 한다. 기본은 그대로다. 다만 AI 덕분에 모든 일이 훨씬 빠르게 벌어질 뿐이다.