AI 코딩 시대, 판단력이 구현력을 이긴다
지난 3개월간 claude-sonnet으로 생성한 PR이 47건입니다. 그중 되돌린 게 12건이에요. 코드는 돌아갔습니다. 테스트도 통과했어요. 그런데 코드베이스에 들이면 안 될 것 같았습니다. 저는 AI 코딩 에이전트가 구현 속도를 평준화한 시대에, 개발자의 경쟁력은 거절하는 능력이라고 생각해요. 왜냐면 이제 병목은 "어떻게 짤까"가 아니라 "무엇을 들일까"로 옮겨갔기 때문이에요.
AI 에이전트가 코드를 짜는 시대, 뭐가 바뀌었나요?
코딩 속도가 공짜가 됐습니다. 3년 전엔 CRUD API 하나 만드는 데 반나절 걸렸어요. 지금은 프롬프트 3분에 초안이 나옵니다. 구현 자체는 더 이상 희소한 능력이 아니에요. AI 에이전트를 돌릴 줄 아는 주니어나 시니어나 비슷한 속도로 코드를 뽑아낼 수 있거든요.
그런데 속도가 평준화되니까 다른 게 눈에 띄기 시작했습니다. 누군 PR을 매일 10개씩 올리는데, 그중 절반은 일주일 뒤 되돌려집니다. 누군 한 달에 PR 5개인데 전부 그대로 머지되고 6개월 뒤에도 살아 있어요. 차이는 "무엇을 만들지" 판단하는 데 쓴 시간이었습니다.
제 경우엔 요즘 코드리뷰 시간이 구현 시간의 2배예요. AI가 짠 코드를 읽고, 이게 지금 필요한 건지, 기존 설계를 깨뜨리진 않는지, 3개월 뒤 유지보수 비용은 얼마나 될지 따지는 데 더 오래 걸립니다. 구현은 빨라졌는데 의사결정은 안 빨라졌거든요.
구현 속도가 평준화되자 드러난 진짜 병목
작년 11월부터 claude를 프로젝트에 본격 투입했습니다. 첫 달엔 신났어요. 기능 5개를 2주 만에 냈습니다. 그런데 3개월 뒤 보니 그중 2개는 안 쓰이고 있더라고요. 만드는 건 쉬웠는데, 만들어야 할 이유를 충분히 안 따진 겁니다.
AI 에이전트는 "이거 괜찮을까요?"라고 물으면 대부분 "괜찮습니다"라고 답해요. 구현 가능성은 거의 항상 yes거든요. 문제는 "이게 지금 우선순위 1번인가", "이 복잡도를 감당할 만한 가치가 있나"는 질문엔 답을 못 한다는 겁니다. 그 판단은 사람 몫이에요.
리팩토링 제안이 가장 도드라집니다. 지난 4개월간 AI가 낸 리팩토링 제안이 19건이었어요. 그중 실제로 채택한 건 3건입니다. 나머지는 "지금 당장 고칠 만큼 아프진 않다"거나 "이 방향으로 가면 다음 기능 추가가 더 어려워진다"는 이유로 거절했습니다. 코드 품질 자체론 AI 제안이 더 나았을 수도 있어요. 하지만 엔지니어링은 코드만 보고 결정하는 게 아니거든요.
Reddit r/ClaudeAI에서 오간 논쟁도 비슷한 맥락입니다. 누군가 "AI 코딩이 good taste를 더 중요하게 만든다"고 했어요. 저도 동의해요. taste란 결국 "이건 우리 코드베이스에 안 어울린다"고 거절하는 감각이거든요. 그 감각은 AI가 대신 못 해줍니다.
"그래도 직접 코딩 실력이 더 중요하지 않나요?"
당연히 기초 실력은 필요합니다. AI가 짠 코드를 읽을 줄 알아야 하니까요. 그런데 "직접 손으로 짤 줄 아는가"와 "코드의 장기 영향을 예측할 줄 아는가"는 다른 능력이에요.
손코딩 실력이 좋으면 AI 출력을 빠르게 검증할 수 있습니다. 맞아요. 그런데 그건 시간 절약이지, 방향 판단은 아니에요. 제가 되돌린 PR 12건 중 10건은 코드 자체엔 문제가 없었습니다. 문제는 "이걸 지금 만들어야 하나"였어요.
반대로 코딩을 못 해도 좋은 판단을 내릴 수 있냐고요? 그건 어렵습니다. 판단력은 코드가 어떻게 망가지는지 본 경험에서 나오거든요. 다만 이제는 "망가진 코드를 직접 고쳐본 경험"보다 "왜 망가졌는지 분석한 경험"이 더 중요해졌다고 봐요. AI 시대엔 고치는 건 빠른데, 왜 고쳐야 하는지 아는 게 느리니까요.
또 하나 반론은 "AI가 판단까지 해줄 날이 곧 오지 않나"입니다. 그럴 수도 있어요. 하지만 지금은 아니에요. 지난주에 claude한테 "이 두 설계 중 뭐가 나아?"라고 물었더니 둘 다 장단점을 나열하고 "상황에 따라 다릅니다"라고 했습니다. 맞는 말이긴 한데, 결정은 제가 해야 했어요. 그 "상황"을 아는 건 여전히 사람 몫이거든요.
판단력을 키우는 건 결국 경험입니다
그럼 어떻게 키우느냐. 저는 두 가지를 바꿨어요.
첫째, AI가 낸 코드를 무조건 한 번은 의심합니다. "이게 3개월 뒤에도 합리적일까?"라고 물어요. 당장은 돌아가니까 머지하고 싶어지거든요. 그런데 그렇게 쌓인 기술부채가 나중엔 더 큽니다. 지난 1월엔 급한 기능을 AI로 3일 만에 냈는데, 5월에 그거 걷어내는 데 일주일 걸렸어요. 그때부터 "지금 안 만들면 어떻게 되지?"를 먼저 묻습니다.
둘째, 코드리뷰를 더 꼼꼼히 합니다. 예전엔 "문법 틀린 데 없나", "버그 있나" 위주였어요. 지금은 "이 추상화가 과한가", "이 의존성이 필요한가"를 더 봅니다. AI는 추상화를 과하게 하는 경향이 있거든요. 인터페이스 3단 쌓아서 유연성 확보했다는데, 실제론 구현체가 하나뿐인 경우가 많아요. 그런 걸 거르는 게 판단력이에요.
엔지니어링 판단력은 실패 경험에서 자랍니다. "이런 설계는 나중에 망한다"는 걸 몸으로 아는 거예요. AI 코딩 시대에도 그 경험은 직접 쌓아야 합니다. 다만 이젠 실패를 더 빠르게 겪을 수 있어요. 옛날엔 잘못된 설계를 구현하는 데만 한 달 걸렸는데, 지금은 일주일이면 됩니다. 그만큼 시행착오 사이클이 빨라진 거죠. 그 사이클을 의식적으로 돌리면서 "왜 이게 나빴나"를 복기하는 게 핵심입니다.
AI가 코드를 대신 짜줘도, 그 코드를 받아들일지 거절할지는 여전히 사람이 정합니다. 그 거절이 합리적이려면 경험이 필요해요. 여러분은 지난 한 달간 AI가 낸 제안 중 몇 개를 거절했나요? 그 이유를 설명할 수 있나요? 그게 바로 지금 시대 개발자의 경쟁력입니다.