들어가며: 왜 생산성에 집착하게 됐나
2025년 초에 나는 번아웃 직전이었다. 매일 야근하면서 코드를 짰는데, 돌이켜보면 실제로 "가치 있는 코드"를 작성하는 시간은 하루에 2~3시간밖에 안 됐다. 나머지는 뭘 했냐면: PR 리뷰 대기, 로컬 빌드 기다리기, Jira 티켓 정리, 반복적인 보일러플레이트 작성, 디버깅을 위한 로그 뒤지기.
그래서 2025년 3월부터 의식적으로 "개발 시간 어디에 쓰고 있나"를 RescueTime으로 기록하기 시작했다. 한 달 후 데이터를 분석해보니 충격적이었다. 일하는 시간 중 42%가 "도구와 씨름하는 시간"이었다. 그때부터 도구와 워크플로우 최적화에 미친 듯이 매달렸고, 1년이 지난 지금 체감 생산성이 확실히 2배 이상 올랐다.
이 글은 내가 직접 써보고 정착한 도구들의 리스트와, 실제 측정 데이터를 바탕으로 한 효과 분석이다. "이 도구 좋다더라" 수준이 아니라, "3개월 써본 결과 이만큼 시간이 줄었다"는 수치를 함께 공유한다.
나의 개발 워크플로우
IDE: IntelliJ IDEA 궁극의 셋업
VS Code와 IntelliJ를 둘 다 1년 넘게 쓰다가 결국 IntelliJ로 정착했다. 이유는 간단하다: Java/Kotlin 프로젝트에서는 IntelliJ의 코드 분석 능력이 압도적이다. "이 메서드 어디서 호출되나" 같은 거 찾을 때 VS Code는 텍스트 검색이지만 IntelliJ는 의미론적 분석을 해준다.
내가 필수로 쓰는 IntelliJ 플러그인 목록:
| 플러그인 | 용도 | 생산성 효과 |
|---|---|---|
| Key Promoter X | 단축키 학습 | 2주 만에 마우스 사용 60% 감소 |
| String Manipulation | 문자열 변환 (camelCase ↔ snake_case) | 변수명 리팩토링 시간 80% 절약 |
| Rainbow Brackets | 괄호 색상 구분 | 중첩 코드 가독성 대폭 향상 |
| GitToolBox | 인라인 blame, 상태 표시 | git log 확인 시간 50% 절약 |
| .ignore | .gitignore 관리 | ignore 파일 작성 시간 절약 |
| Database Navigator | DB 연결/쿼리 | 별도 DB 클라이언트 불필요 |
그리고 IntelliJ Live Templates를 적극 활용한다. 예를 들어 stest를 타이핑하면 Spring Boot 테스트 클래스 보일러플레이트가 자동 생성된다. 자주 쓰는 패턴 15개를 등록해뒀는데, 하루에 최소 30분은 아끼는 것 같다.
AI 코딩 도구: 직접 비교한 솔직한 후기
2025년부터 2026년 초까지 GitHub Copilot, Claude Code, Cursor, Codeium을 번갈아가며 써봤다. 처음엔 회의적이었는데, 지금은 AI 도구 없이 코딩하라고 하면 맨손으로 못 박는 기분이 들 것 같다.
| 도구 | 강점 | 약점 | 나의 활용법 | 월 비용 |
|---|---|---|---|---|
| Claude Code | 복잡한 리팩토링, 아키텍처 상담, 긴 맥락 이해 | IDE 통합이 Copilot보단 약함 | 설계 상담, 복잡한 버그 분석, 코드 리뷰 | $20 |
| GitHub Copilot | 자동완성 속도, IDE 통합 최고 | 복잡한 로직에서 헛소리 빈도 높음 | 보일러플레이트 자동 생성, 단순 구현 | $19 |
| Cursor | 코드베이스 이해도, 멀티파일 수정 | IntelliJ 대비 Java 지원 약함 | 프론트엔드 작업, 빠른 프로토타이핑 | $20 |
| Codeium | 무료, 가벼움 | 정확도가 유료 도구 대비 떨어짐 | 개인 사이드 프로젝트용 | 무료 |
내 현재 셋업은 IntelliJ + GitHub Copilot(자동완성) + Claude Code(설계/리뷰) 조합이다. 단순 반복은 Copilot이, 머리 아픈 설계 결정은 Claude가 해결해준다. 이 조합으로 보일러플레이트 코드 작성 시간을 약 70% 줄였다.
다만 AI 도구를 쓸 때 주의할 점: 생성된 코드를 반드시 이해한 후 커밋하라. 처음엔 AI가 만든 코드를 대충 훑고 넘겼다가, 프로덕션에서 N+1 쿼리 문제가 터진 적이 있다. AI가 만든 JPA 쿼리가 LAZY 로딩을 제대로 처리 안 했던 거다. 그 이후로는 AI 생성 코드는 무조건 한 줄 한 줄 읽는다.
도구 도입 전후 시간 측정 결과
CLI 도구: 터미널 생산성의 비밀 무기들
GUI를 싫어하는 건 아닌데, 반복 작업은 CLI가 압도적으로 빠르다. 내가 매일 쓰는 CLI 도구들:
lazygit - Git을 터미널에서 쾌적하게
이걸 발견하고 나서 SourceTree를 삭제했다. TUI(Terminal UI)로 깔끔하게 staging, commit, push, rebase를 할 수 있다. 특히 interactive rebase가 직관적이라서, 커밋 히스토리 정리할 때 최고다. brew install lazygit 하나로 설치 끝.
fzf - 퍼지 파인더의 끝판왕
파일 찾기, 명령어 히스토리 검색, Git 브랜치 전환... 뭐든 fzf를 붙이면 된다. Ctrl+R에 fzf를 연결하면 명령어 히스토리 검색이 혁명적으로 바뀐다. 이전에 쳤던 긴 Docker 명령어? 기억 안 나도 fzf로 몇 글자만 치면 바로 나온다.
bat - cat의 상위 호환
cat 대신 bat를 쓰면 문법 하이라이팅, 줄 번호, Git diff 표시가 자동으로 된다. 사소해 보이지만 코드 파일을 터미널에서 확인할 때 가독성 차이가 크다.
ripgrep (rg) - grep보다 10배 빠른 검색
대규모 코드베이스에서 문자열 검색할 때 grep -r은 너무 느리다. ripgrep은 .gitignore를 자동으로 존중하고, 속도가 미친 듯이 빠르다. 68만 줄 코드베이스에서 검색 결과가 0.3초 안에 나온다.
나의 .zshrc 핵심 alias 목록
# Git 관련
alias gs='git status'
alias gc='git commit'
alias gp='git push'
alias gl='lazygit'
alias gco='git checkout $(git branch | fzf)'
# Docker
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
alias dlog='docker logs -f $(docker ps --format "{{.Names}}" | fzf)'
# Kubernetes
alias k='kubectl'
alias kgp='kubectl get pods'
alias klogs='kubectl logs -f $(kubectl get pods -o name | fzf)'
# 자주 쓰는 디렉토리
alias proj='cd ~/projects/$(ls ~/projects | fzf)'
자동화 파이프라인: 사람이 안 해도 되는 건 기계에게
Git 워크플로우 최적화
우리 팀이 쓰는 Git 워크플로우는 GitHub Flow를 약간 변형한 것이다:
main브랜치는 항상 배포 가능 상태 유지- 기능 브랜치는
feat/JIRA-123-description형식 - PR 생성 시 자동으로 AI 리뷰 + 린트 체크 실행
- Approve 2개 받으면 자동 merge (squash merge)
- merge 되면 자동으로 스테이징 배포
- 스테이징에서 1시간 이상 문제 없으면 프로덕션 자동 배포
이전에는 release 브랜치를 따로 관리했는데, 그때는 merge conflict 해결에 하루의 30%를 썼다. 지금은 conflict가 거의 안 생긴다. 브랜치 수명을 최대 2일로 제한한 게 핵심이었다.
코드 리뷰 효율화: AI + 사람 하이브리드
코드 리뷰에 가장 많은 시간 최적화를 적용했다. 이전에는 500줄짜리 PR 리뷰에 1시간이 걸렸는데, 지금은 20분이면 된다.
비결은 단계적 리뷰:
- 1단계 (자동): PR 올리면 AI 봇이 코드 스타일, 잠재적 버그, 성능 이슈를 코멘트 (2분 소요)
- 2단계 (자동): CI에서 테스트 + 커버리지 체크 + 보안 스캔 (5분 소요)
- 3단계 (사람): 리뷰어는 비즈니스 로직과 설계에만 집중 (13분 소요)
AI가 "이 변수 null 체크 안 했네요" 같은 기계적인 리뷰를 다 해주니까, 사람은 "이 설계 방향이 맞나?"에 집중할 수 있게 됐다. 리뷰 품질도 오히려 올라갔다.
시간 측정 결과: 진짜 200% 올랐나?
RescueTime + WakaTime 데이터 기준으로 비교해본다:
| 지표 | 2025년 3월 | 2026년 3월 | 변화 |
|---|---|---|---|
| 일일 코딩 시간 | 2.5시간 | 5.2시간 | +108% |
| 주당 완료 티켓 수 | 3.2개 | 7.5개 | +134% |
| PR 머지까지 평균 시간 | 18시간 | 4시간 | -78% |
| 빌드 대기 시간 (일) | 45분 | 8분 | -82% |
| 야근 일수 (월) | 12일 | 3일 | -75% |
"생산성 200%"라는 제목이 과장이 아님을 데이터가 보여준다. 핵심은 "코딩 실력이 올라서"가 아니라 "코딩 외의 시간을 극적으로 줄여서"이다. 도구에 투자하는 시간은 한 번이지만, 그 효과는 매일 누적된다.
마무리: 도구보다 중요한 것
도구 이야기를 잔뜩 했지만, 마지막으로 하고 싶은 말은 이거다: 가장 큰 생산성 향상은 "뭘 하지 않을지 결정하는 것"에서 왔다.
불필요한 미팅 거절하기, 완벽주의 포기하고 80% 수준에서 출시하기, "나중에 리팩토링하자"를 진짜 나중에 하기. 이런 결정들이 도구 최적화보다 더 큰 영향을 줬다.
여기서 공유한 도구와 워크플로우가 정답은 아니다. 각자의 환경과 성향에 맞게 커스터마이징해서 써야 한다. 중요한 건 "지금 내 시간이 어디에 쓰이고 있나"를 먼저 측정하고, 가장 낭비가 큰 곳부터 최적화하는 것이다.
10년차 풀스택 개발자. Spring Boot, Flutter, AI 등 실무 경험을 기록합니다.
GitHub →
💬 댓글