AI 도구 사용 이야기 feat. Claude Code, Codex, Gemini Code
AI 도구 사용 이야기 feat. Claude Code, Codex, Gemini Code
지난 글 (AI로 코드 작성 생산성 향상하기: Cursor, Devin, Cline 비교 분석)에 이어서 최근(2025년 9월)에 사용하고 있는 AI 도구들에 대해 정리해보려고 해요.
불과 5개월 전인 2025년 4월에 Cursor, Devin, Cline을 비교하는 글을 썼었는데요. 그때는 Cline과 Cursor를 조합해서 쓰면 좋겠다고 생각했었어요. 그런데 지금은 완전히 새로운 도구들을 사용하고 있어서, 기술의 변화가 정말 빠르다는 걸 새삼 느끼게 돼요.
현재는 Claude Code와 Codex, Gemini Code Assist를 적절히 섞어서 사용하고 있어요.
Claude Code: 메인 개발 파트너
가장 자주 함께 작업하는 도구는 Claude Code예요. Opus4 모델을 사용하면서 훨씬 납득이 가고 퀄리티 높은 코드를 얻을 수 있게 됐어요. 특히 구조가 어느 정도 잡혀있는 monorepo 형태의 프론트엔드 레포지토리에서 큰 도움을 받고 있어요.
회사에서는 10년이 넘은 Ruby on Rails 레포지토리를 메인으로 유지보수하고 개발하고 있는데요. 이런 대규모 레거시 환경에서는 전체 코드 컨텍스트를 모두 담으려 하지 않고, 동료들이 잘 정의해준 CLAUDE.md를 기반으로 설정된 룰을 활용하고 있어요.
핵심은 태스크의 단위를 작게 잡는 것이에요. 예를 들어 하나의 피쳐를 구현할 때, 기본적인 껍데기는 제가 주석과 함께 잡아두고, Claude Code에게 주석에 있는 내용을 구현하도록 유도해요. 상호 참조되는 클래스가 많아지거나 복잡도가 올라가는 신호(너무 오래 코드를 수정하거나, 변경되는 파일이나 라인 수가 급격히 늘어나는 경우)가 보이면 태스크를 중단하고 더 디테일하게 설명하거나 스코프를 줄여요.
최근에는 실험적으로 모듈 단위별로 README.md를 작성해서 구현하는 피쳐의 맥락을 남겨두고 있어요. LLM이 이 맥락을 명시적으로 사용하도록 지시하면 더 나은 결과를 얻을 수 있고, 추가 수정이 발생할 때마다 해당 문서를 업데이트하게 해서 코드와 문서가 함께 관리되는 점이 좋아요. 무엇보다 사람이 이해할 수 있는 문서를 남기는 것이 결과적으로 LLM에게도 도움이 된다고 생각해요.
Codex: 비동기 작업의 강력한 도우미
Codex는 OpenAI에서 제공하는 도구로, 과거 글에서 언급했던 Devin과 비슷한 역할을 해요. 하지만 퀄리티와 가격 면에서 정말 큰 차이를 보여주고 있어요. ChatGPT Plus 요금으로도 이 기능을 사용할 수 있어서 가성비가 좋아요.
주로 개인 프로젝트의 작은 기능들을 비동기로 지시해서 초안을 만들게 하는 용도로 사용하고 있어요. 개인 프로젝트는 코드베이스가 작고 도메인이 명확하기 때문에 AI 도구가 작성해주는 코드의 범위가 그리 크지 않아서 이런 방식이 효과적이에요.
실제 사용 패턴을 보면, 출근하다가 “이 기능 필요할 것 같은데”라는 생각이 들면 메모해둬야 까먹고 안하게 되니까, 그냥 생각나는 대로 프롬프트를 작성해서 바로 시켜버려요. 결과물이 항상 완벽하지는 않지만, 그래도 초안을 잡아준 상태에서 해당 브랜치를 체크아웃 받아서 조금 수정하면서 다듬다 보면 생각만 하고 지나칠 뻔한 기능들을 작은 부분이라도 실제로 구현할 수 있는 게 큰 장점이에요.
작업이 끝나면 GitHub PR로 올려서 코드 리뷰와 약간의 수정을 통해 프로젝트를 조금씩 성장시키는 데 큰 도움이 되고 있어요.
Gemini Code Assist: 코드 리뷰의 새로운 가능성
Gemini Code Assist는 테스트 삼아 사용해보고 있어요. 코드 베이스가 구글에 공유되어도 크게 문제없는 개인 프로젝트에서만 사용하고 있고요. GitHub 연동이 정말 쉬워서 시도해볼 만해요.
PR이 생성되면 자동으로 코드 리뷰를 해주는 도구인데, CodeRabbit의 대안으로 생각하면 돼요. 아직까지는 퀄리티도 괜찮게 느껴지고 있고, 무료라는 점도 큰 장점이에요. 특히 코멘트에 Priority를 표기해주는 기능이 정말 마음에 들어요.
Claude Code도 GitHub 연동을 하면 Gemini Code Assist와 똑같은 역할을 할 수 있어요. 다만 기본 설정으로는 PR에 코드 라인마다 코멘트를 해주는 기능이 조금 다른 설정이 필요한 것 같고, 대략적인 요약을 해주는 정도라서 지켜보고 있어요.
좋은 점 하나는 Gemini Code Assist가 작성한 코멘트에 Claude를 호출해서 바로 수정을 지시할 수 있다는 거예요.
현재 사용 패턴 정리
정리하면 이런 식으로 사용하고 있어요:
회사 업무: Claude Code를 주력으로 사용
개인 프로젝트: Codex를 비동기로 활용하면서, 직접 작업할 때는 Claude Code 사용
코드 리뷰: Gemini Code Assist와 Claude Code를 동시에 활용
이런 역할 분담을 하는 이유는 코드베이스의 규모와 특성 때문이에요. 회사의 방대한 레거시 코드베이스에서는 비동기로 태스크를 맡겨서 해결하기에는 적합하지 않고, 세밀한 지시와 단계적 접근이 필요해요. 반면 개인 프로젝트는 바쁠 때 직접 개발할 시간이 부족하기도 하고, 코드베이스가 작고 도메인이 명확해서 AI 도구가 비교적 안전하게 큰 단위의 작업을 해낼 수 있거든요.
마무리
몇 개월 뒤에는 또 어떻게 환경이 바뀌어 있을지 모르겠어요. 하지만 소프트웨어 엔지니어로서 이런 변화에 꾸준히 적응하고 따라가다 보면, 과거의 퍼포먼스와 비교했을 때 그때는 상상도 할 수 없었던 일들을 해내고 있을 거라고 생각해요.
AI 도구들을 사용하면서 느낀 점은, 각 도구의 특성을 파악하고 프로젝트의 규모와 성격에 맞게 적재적소에 활용하는 것이 가장 중요하다는 거예요. 대규모 레거시 코드에서는 세밀한 컨트롤이 필요하고, 작은 개인 프로젝트에서는 과감한 위임이 효과적이죠.
또한 AI 도구를 위한 특별한 문서화보다는, 사람이 이해할 수 있는 좋은 문서를 작성하는 것이 결국 AI에게도 도움이 된다는 점도 중요한 깨달음이었어요. 기술은 빠르게 변하지만, 좋은 소프트웨어를 만들기 위한 본질적인 원칙들은 여전히 유효하다고 생각해요.