
코드 리뷰를 도입하겠다고 했을 때, 팀원들의 반응은 냉랭했다. “시간만 낭비하는 거 아니야?”, “내 코드를 지적받는 게 싫어”라는 반응이었다. 하지만 1년 후, 코드 리뷰는 우리 팀의 핵심 문화가 되었다. 이 글은 그 변화의 과정을 기록한 것이다.
시작: 코드 리뷰 도입 결정
왜 코드 리뷰를 도입했나
2024년 초, 우리 팀은 코드 리뷰 없이 개발하고 있었다. 각자 코드를 작성하고, 바로 메인 브랜치에 머지했다. 버그가 자주 발생했고, 코드 품질도 일관되지 않았다.
“코드 리뷰를 도입하면 코드 품질이 향상되고, 버그도 줄어들 거야.” 이렇게 생각하며 코드 리뷰를 제안했다.
팀원들의 반응
하지만 팀원들의 반응은 예상과 달랐다.
“코드 리뷰는 시간만 낭비해.” “내 코드를 지적받는 게 싫어.” “이미 바쁜데 리뷰까지 해야 해?”
특히 시니어 개발자 한 분이 강하게 반대했다. “내가 10년 넘게 개발했는데, 왜 리뷰를 받아야 해?”
주니어 개발자들도 부담스러워했다. “선배들 앞에서 코드를 보여주는 게 부끄러워.”
첫 번째 도전: 강제 도입과 저항
GitHub Pull Request 필수화
반대가 있었지만, 나는 코드 리뷰가 필수라고 생각했다. GitHub에서 Pull Request 없이는 머지할 수 없도록 설정했다.
# .github/branch-protection.yml
required_pull_request_reviews:
required_approving_review_count: 1이제 코드를 머지하려면 최소 1명의 승인이 필요했다.
초기 갈등
하지만 이 결정이 갈등을 불러왔다.
갈등 1: 리뷰어 부족
- 리뷰어가 없어서 머지가 지연됨
- 개발 속도가 느려짐
- 팀원들의 불만 증가
갈등 2: 리뷰 품질 문제
- “LGTM” (Looks Good To Me)만 달고 통과
- 의미 없는 리뷰
- 코드 품질 개선 없음
갈등 3: 감정적 갈등
- 코드 지적을 개인 공격으로 받아들임
- 리뷰어와 리뷰이 간의 갈등
- 팀 분위기 악화
내 고민
“내가 잘못 선택한 건가?”라는 생각이 들었다. 코드 리뷰가 팀을 나쁘게 만들고 있는 것 같았다. 하지만 포기하지 않았다. 방법을 바꿔야 했다.
두 번째 도전: 문화 만들기
코드 리뷰 가이드라인 작성
강제만으로는 안 된다는 것을 깨달았다. 문화를 만들어야 했다. 코드 리뷰 가이드라인을 작성했다.
코드 리뷰 원칙:
- 코드를 리뷰하되, 사람을 비판하지 않는다
- 건설적인 피드백을 제공한다
- 질문을 통해 학습 기회를 만든다
- 칭찬도 함께한다
리뷰어 행동 지침:
- “이렇게 하면 더 좋을 것 같아요” (긍정적 표현)
- “왜 이렇게 작성하셨나요?” (질문으로 시작)
- “좋은 접근이에요! 다만…” (칭찬 후 개선 제안)
리뷰이 행동 지침:
- 피드백을 방어적으로 받지 않는다
- 질문이 있으면 명확히 설명한다
- 동의하지 않으면 토론한다
리뷰 예시 공유
좋은 리뷰와 나쁜 리뷰의 예시를 공유했다.
나쁜 리뷰:
"이 코드는 잘못됐어요."
"왜 이렇게 했어요?"좋은 리뷰:
"이 부분은 좋은 접근이에요! 다만 성능을 고려하면
이렇게 수정하는 게 어떨까요? [코드 예시]"
"이 로직이 복잡한데, 혹시 이렇게 리팩토링하면
더 읽기 쉬울 것 같아요."세 번째 도전: 점진적 개선
작은 것부터 시작
처음에는 작은 것부터 시작했다. 스타일, 네이밍, 주석 같은 것부터 리뷰했다. 복잡한 로직은 나중에 다루기로 했다.
리뷰 시간 제한
리뷰에 너무 많은 시간을 쓰지 않도록 했다. 각 PR당 리뷰 시간을 30분으로 제한했다. 작은 변경사항은 빠르게 승인하고, 큰 변경사항만 집중적으로 리뷰했다.
자동화 도구 활용
의미 없는 리뷰를 줄이기 위해 자동화 도구를 활용했다.
- ESLint: 코드 스타일 자동 검사
- Prettier: 코드 포맷팅 자동화
- SonarQube: 코드 품질 자동 분석
이렇게 하면 사람은 로직과 아키텍처에 집중할 수 있었다.
네 번째 도전: 팀원들의 변화
첫 번째 전환점
3개월이 지나면서 변화가 보이기 시작했다. 한 주니어 개발자가 코드 리뷰를 통해 배운 점을 공유했다.
“리뷰를 받으면서 이렇게 하면 더 좋다는 걸 배웠어요.” “이전에는 몰랐던 패턴을 알게 됐어요.”
시니어 개발자의 변화
시니어 개발자도 변화했다. 처음에는 반대했지만, 코드 리뷰를 통해 주니어 개발자들을 가르칠 수 있다는 것을 깨달았다.
“코드 리뷰를 하면서 팀원들의 코드를 보고, 가르칠 수 있어서 좋아요.” “나도 리뷰를 받으면서 새로운 관점을 배워요.”
코드 품질 개선
코드 품질이 눈에 띄게 개선되었다.
이전:
- 주간 버그 리포트: 평균 20개
- 코드 스타일 불일치: 자주 발생
- 중복 코드: 많음
6개월 후:
- 주간 버그 리포트: 평균 10개
- 코드 스타일 일관성: 크게 향상
- 중복 코드: 크게 감소
다섯 번째 도전: 문화의 정착
자발적 참여
1년이 지나면서 코드 리뷰가 자연스러워졌다. 이제는 강제하지 않아도 팀원들이 자발적으로 리뷰를 요청했다.
“이 부분 좀 리뷰해주세요.” “더 좋은 방법이 있을까요?”
지식 공유의 장
코드 리뷰가 지식 공유의 장이 되었다. 새로운 패턴, 라이브러리, 기법을 코드 리뷰를 통해 공유했다.
팀워크 향상
코드 리뷰를 통해 팀워크도 향상되었다. 서로의 코드를 보면서 더 잘 알게 되었고, 협업이 원활해졌다.
배운 점들
1. 강제만으로는 문화를 만들 수 없다
처음에는 강제로 도입했지만, 이것만으로는 부족했다. 문화를 만들려면 팀원들의 이해와 동의가 필요하다.
2. 작은 것부터 시작하라
처음부터 완벽한 코드 리뷰를 하려고 하지 말고, 작은 것부터 시작하라. 스타일, 네이밍 같은 것부터 시작해서 점진적으로 개선하라.
3. 긍정적인 피드백이 중요하다
코드를 지적하는 것만으로는 부족하다. 좋은 점도 함께 언급하고, 건설적인 피드백을 제공해야 한다.
4. 자동화 도구를 활용하라
의미 없는 리뷰를 줄이기 위해 자동화 도구를 활용하라. 사람은 로직과 아키텍처에 집중할 수 있게 하라.
5. 시간이 필요하다
문화를 만드는 데는 시간이 필요하다. 하루아침에 바뀌지 않는다. 인내심을 가지고 꾸준히 노력해야 한다.
현재 상태
코드 리뷰가 일상이 되다
지금은 코드 리뷰가 일상이 되었다. PR을 올리면 자동으로 리뷰가 요청되고, 팀원들이 자발적으로 리뷰한다.
코드 품질 향상
코드 품질이 크게 향상되었다. 버그가 줄었고, 코드 스타일이 일관되었고, 중복 코드가 감소했다.
학습 문화
코드 리뷰를 통해 지속적으로 학습하는 문화가 생겼다. 새로운 패턴과 기법을 공유하고, 함께 성장하고 있다.
다른 개발자들에게
코드 리뷰 문화를 만들고 싶다면
코드 리뷰 문화를 만들려는 팀이 있다면, 다음을 고려해보길 바란다:
- 가이드라인 작성: 명확한 가이드라인을 작성하라
- 작은 것부터: 작은 것부터 시작하라
- 긍정적 피드백: 긍정적인 피드백을 제공하라
- 자동화 활용: 자동화 도구를 활용하라
- 인내심: 시간이 필요하다. 인내심을 가져라
실패를 두려워하지 말라
처음에는 저항이 있을 수 있다. 하지만 꾸준히 노력하면 문화가 정착된다. 우리의 경험이 다른 팀에게 도움이 되기를 바란다.
결론: 문화를 만드는 여정
코드 리뷰 문화를 만드는 것은 쉽지 않았다. 저항과 갈등이 있었고, 실패도 있었다. 하지만 결국 성공했다.
지금은 코드 리뷰 없이는 개발할 수 없다. 코드 리뷰를 통해 코드 품질이 향상되었고, 팀워크가 좋아졌고, 지속적으로 학습하는 문화가 생겼다.
처음엔 싫어했지만, 지금은 없어서는 안 될 것이 되었다. 이것이 바로 문화의 힘이다.