최근 코드리뷰를 하면서 자주 드는 생각이 하나 있다. 사람들은 생각보다 Pull Request를 가볍게 올린다. 기능을 구현하는 동안에는 시간을 꽤 쓰는데, 막상 PR을 만드는 순간에는 일이 거의 끝났다고 생각하는 경우가 많다.
예전에도 이런 느낌은 있었는데, AI를 같이 쓰는 환경으로 들어오면서 이게 더 심해졌다고 느낀다. 전보다 훨씬 빨리 돌아가는 코드를 만들 수 있게 되었고, 그래서 더 쉽게 일단 되니까 올리자 쪽으로 기울기 쉬워졌다. 겉으로 보면 동작은 한다. 그런데 조금만 더 읽어보면 괜히 거슬리는 부분들이 계속 나온다. 팀에서 잘 안 쓰는 방식으로 코드를 짜놨다거나, 요구사항을 충족한 듯 보이나 빈 곳이 있다던지, import 를 해야 하는데 패키지명을 모두 적어두었다던지. AI 를 사용하기 전에는 이런 일이 드물었던 거 같다.
왜 이 얘기를 적는가
내가 코드리뷰를 하면서 제일 자주 불편했던 지점은, 기능이 돌아간다는 것으로 끝난다는 점이다. 그런데 기능이 돌아가는 것과 안심하고 머지할 수 있는 것은 꽤 다른 얘기다.
안심하고 머지하려면 적어도 몇 가지는 같이 봐야 한다. 요구사항을 빠뜨린 건 없는지, 테스트가 진짜 중요한 경우를 잡고 있는지, 수정 범위가 괜히 넓어지지 않았는지, 그리고 이 코드가 지금 팀 코드베이스 안에서도 자연스럽게 읽히는지 같은 것들이다. 나는 요즘 특히 마지막이 더 중요해졌다고 느낀다. AI가 만들어 준 코드는 빠르고 그럴듯한 경우가 많지만, 그 코드가 지금 우리 팀 코드처럼 읽히는지는 또 다른 문제이기 때문이다.
PR은 검수 단계
나는 PR을 단순히 업로드하는 절차로 보지 않는다. 구현이 끝났다는 표시라기보다, 마지막으로 내가 품질을 책임지는 검수 단계에 가깝다고 생각한다.
좋은 PR은 리뷰어의 시간을 아껴준다. 더 정확히 말하면, 리뷰어가 진짜 봐야 하는 것에 집중할 수 있게 해준다. 방향이 맞는지, 설계가 어색하지 않은지, 더 좋은 선택지가 있는지 같은 것들 말이다. 반대로 작성자가 스스로 한 번 걸렀어야 할 문제들을 그대로 PR에 남겨두면, 리뷰는 토론이 아니게 되는 거 같다.
시간은 소중하다. 지금 같이 일하는 사람의 시간도 그렇고, 나중의 내 시간도 그렇다. 새벽에 터지는 문제는 보통 거창한 데서 시작되지 않는다. 머지 직전에 이 정도면 되겠지 하고 넘긴 작은 실수에서 시작되는 경우가 많다.
최소 두 번 다시 본다
그래서 PR을 올리기 전에 최소 두 번은 다시 보는 편이다.
첫 번째는 draft PR을 만들기 직전이다. 이때는 구현이 되었는지보다, 제대로 구현되었는지를 본다. 요구사항을 빠뜨린 건 없는지, 테스트가 중요한 경우를 놓치고 있지는 않은지, AI가 만든 코드가 우리 팀 스타일 안에서도 자연스럽게 읽히는지 같은 걸 다시 본다. 이 단계에서 걸러지는 게 생각보다 많다. 특히 AI로 빨리 짠 코드일수록, 사람 기준으로 한 번 다시 읽어보지 않으면 은근히 어설픈 부분이 남는다.
두 번째는 merge 직전이다. 리뷰를 받고 수정까지 끝나면 끝이라고 생각한다. 그런데 오히려 그때가 위험한 경우도 있다. 수정 과정에서 범위가 미묘하게 넓어졌을 수도 있고, 원래 의도와 다른 코드가 섞였을 수도 있다. 그래서 머지하기 전에는 한 번 더 확인하고, 제대로 구현되었다면 머지를 누르는 편이다.
AI를 같이 쓰는 지금
요즘은 빠르게 만들고 빠르게 내보내는 분위기이다. AI를 붙이면 그 속도는 더 올라간다. 예전에는 반나절 걸리던 수정이 이제는 한 시간 안에도 끝나는 것처럼 보일 때가 있다.
문제는 속도가 올라갈수록 검수도 같이 빨라질 수 있다고 착각하기 쉽다는 점이다. 실제로는 오히려 반대라고 생각한다. 코드가 빨리 만들어질수록, 마지막에는 사람이 더 천천히 읽어야 한다. 깨끗한 코드, 철저한 테스트, 엄격한 기준 같은 말이 요즘은 약간 옛날 얘기처럼 들릴 수도 있는데, 나는 지금이야말로 그런 기준이 더 중요하다고 느낀다. AI가 생산성을 올려준 만큼, 마지막 판단의 책임은 더 또렷하게 사람에게 남는다.
마무리
PR을 진지하게 만든다는 게 일을 느리게 만든다고 생각하지는 않는다. 오히려 나중에 더 큰 비용으로 돌아올 문제를, 지금 감당 가능한 시점에 먼저 치르는 쪽에 가깝다.
앞으로는 AI 를 사용하면, 코드를 빨리 쓰는 건 어렵지 않을 거 같다. 하지만 머지 직전까지 기준을 낮추지 않는 태도는 여전히 드물 것 같고, 그래서 더 중요해질 것 같다.