저는 과거에 대부분의 사람들이 하는 방식대로 코드를 리뷰했습니다. PR 을 열고 diff 를 스캔한 뒤 주석을 남기거나 승인하거나 변경을 요청하는 것이죠. 그러다 보니 이상한 일을 시작하게 되었습니다. 저는 실제 PR 에 손을 대기 전에 AI 코드 리뷰 대화 내용을 먼저 내보내는 (export) 습관을 들였습니다. 불필요해 보이시나요? 저를 믿으세요.
실시간 AI 코드 리뷰의 문제점
ChatGPT 나 Claude 에 코드를 붙여넣고 리뷰를 요청하면 그 대화는 황금과 같습니다. AI 는 제가 놓친 엣지 케이스 (edge cases) 를 찾아냅니다. 고려하지 않았던 패턴을 제안합니다. 실제 버그를 잡아냅니다. 하지만 그 대화가 곧바로 플랫폼의 기록으로 사라집니다. 다음에 유사한 코드를 리뷰할 때면 다시 처음부터 시작해야 합니다.
오프라인 리뷰 워크플로우
지금 제가 하는 일은 다음과 같습니다:
- 코드를 Claude 나 ChatGPT 에 붙여넣고 본격적인 리뷰 대화를 진행합니다.
- 후속 질문을 던집니다. "동시성 (concurrency) 은 어떻게 하나요?", "이 스레드 안전 (thread-safe) 한가요?", "보안 관련 우려사항은 없나요?" 등입니다.
- 대화가 충분히 철저하다고 느껴질 때 PDF 로 내보냅니다.
- 실제 PR 을 만지기 전에 내보낸 PDF 를 디자인 문서처럼 읽습니다.
- 내보낸 파일은 reviews/ 폴더에 넣어 향후 참조용으로 둡니다.
내보내는 과정은 약 20 초 정도 걸립니다. 저는 XWX AI Chat Exporter 를 사용하는데, 이는 코드 포맷팅을 완벽하게 보존합니다. 문법 강조 (syntax highlighting) 등 모든 것이 유지되는데, 코드를 리뷰할 때 이는 중요합니다.
왜 이것이 생각보다 더 잘 작동하는가?
내보낸 리뷰를 오프라인에서 읽는 것은 채팅 창을 스크롤하는 것과는 다릅니다. 기술 문서처럼 느껴집니다. 장시간 대화의 경우 자동 생성된 목차 (table of contents) 를 통해 특정 우려사항으로 바로 이동할 수 있습니다. 그리고 예상치 못한 점이 하나 있습니다. 과거 코드 리뷰 대화들이 폴더에 쌓여 있으면 리뷰 전반에 걸친 패턴을 발견할 수 있다는 점입니다. "오류 처리 (error handling) 에 대해 이제 세 번째로 같은 대화를 나누고 있네요. 아마 팀 표준이 필요하지 않을까요?" 이는 일시적인 채팅 기록으로는 얻을 수 없는 통찰 (insight) 입니다.
복리 효과
이 습관을 2 개월 동안 실천한 결과, 약 30 개의 내보낸 코드 리뷰 대화 내용을 가지고 있습니다. 이들은 제가 팀에서 유일하게 이 일을 하고 있음에도 불구하고 이상한 형태의 기관 지식 (institutional knowledge) 이 되었습니다. 새로운 코드를 볼 때 빠르게 확인할 수 있습니다. "이전에 비슷한 것을 리뷰한 적이 있었나?" 종종 답은 '예'이며, 내보낸 대화에는 제가 완전히 잊어버렸던 메모가 포함되어 있습니다.
이건 과잉일까?
아마도 그렇습니다. 주 2 회 PR 을 리뷰한다면 아마도 그렇겠죠. 하지만 매일 코드를 리뷰하고 AI 를 프로세스의 일부로 활용한다면, 이러한 대화를 내보내는 데 드는 비용은 거의 없으며, 첫 번째로 해당 내용을 다시 돌아볼 때 배당금을 얻게 됩니다. 핵심은 일관성입니다. 여러분을 가르쳐 준 모든 대화를 내보내고 파일에 저장하세요. 필요할 때까지 잊어버리세요. 여러분의 미래의 자아 — 목요일 오후 4 시에 까다로운 PR 을 응시하고 있는 그 사람 — 은 여러분을 고마워할 것입니다.