Post

새로운 코드리뷰 도입하기 (지난 코드리뷰를 떠올리며)

들어가며

지금 이수하고 있는 부트캠프에서 두 번째 팀프로젝트를 시작하게 되었다. 약 2주 동안 새로 구성된 팀원들과 프로젝트를 기획하고 컨벤션, 개발 환경 등을 세팅하는 과정을 진행했는데 모두 다른 팀에서 모이다보니 코드 스타일, 회고, 협업 툴 사용 방식 등 꽤 많은 부분에서 의견이 달랐다.

아무래도 새로운 팀이 꾸려졌으니 우리 팀만의 문화가 필요하다고 느꼈고, 곧 개발을 들어갈 예정이니 코드리뷰 규칙을 정하는 것이 우선이라고 생각했다.


이전 팀에서의 코드리뷰

나는 바로 직전 팀프로젝트에서 처음 코드리뷰를 해봤는데, 마침 팀에서 프로젝트 경험이 많았던 팀원이 코드리뷰를 도입하자고 주도해준 덕분이었다.

처음엔 그거.. 어떻게 하는거지..? 👀 했었는데 팀원이 달아주는 리뷰도 참고하고 다른 사람들은 어떻게 하는지 검색해보기도 하면서 리뷰어, 리뷰이 역할을 점차 수행할 수 있었다.


image

아주 가볍디 가벼운 질문도 던지거나


image

리뷰어가 새로운 지식을 얻어가거나


image

나와 내가 충돌하다가 미처 지우지 못한 부분도 찝어주거나


image

팀원이 깜빡한 것 같은 부분도 알려주고


image 이렇게 코드 개선 방향을 추천함으로써


image image

코드 리팩토링은 물론이고 내가 새로운 지식을 얻곤 했다.


그 덕분에 우리가 했던 코드리뷰가 굉장히 긍정적인 경험으로 남아있는데, 다소 아쉬운 점도 몇 가지 있었다.

아쉬웠던 부분

  1. 다른 팀원이 맡은 파트의 비즈니스 로직이 잘 이해되지 않았던 것 image

  2. 마감에 쫓겨 막바지엔 셀프 승인을 했던 것

    image

    (내가 MR 보내고 내가 혼자 코멘트 적고 내가 머지하고..
    이마저도 셀프 승인 몇 번하다가 혼자 코멘트 남기고 싶어서 남긴 거 들고온거다)
    물론 마감 기한 준수가 더 중요하다 판단하기 때문에 어쩔 수 없는 결정이라 생각한다.

이러한 아쉬운 부분들도 반영하여 이번 팀에서는 새로운 코드리뷰 규칙을 도입하려 한다.


새로운 코드리뷰 도입

우리 팀원들의 경우 이전 프로젝트에서 코드리뷰를 하지 않았거나, 하다가 그만둔 경우가 대부분이었다. 그렇기에 앞서 언급한 아쉬웠던 부분들 개선 + 다음과 같은 사항들을 고려해야 했다.

  • 프로젝트 일정이 타이트하므로 가벼운 수준으로 진행하기
  • 처음 해보는 팀원도 이거.. 어떻게 하는거지..? 👀 같은 과정없이 쉽게 할 수 있게 하기

또한 어떤 방식을 도입할 수 있을까 찾아보다가 블로그 글 주니어 개발자들의 (얕은) 코드리뷰 도입기과 우아한형제들 기술블로그의 코드리뷰가 쏘아올린 작은공을 보게 되었다.

이 글들을 참고하여 다음과 같이 코드리뷰 규칙과 MR Template을 구성했다.

코드리뷰 규칙

  1. MR 내용은 머지 템플릿(Merge Template)에 따라 일관된 형태로 남긴다.
  2. 리뷰 담당자는 가벼운 마음으로 아래 역할을 수행한다.
    • 오타 찾기
    • 질문하기
      변수명, 비즈니스 로직 등 모르는 거 물어보기 (질문받은 사람은 이를 설명하면서 다시 복기할 수 있고 질문한 사람은 답변을 보고 로직에 관한 지식을 얻는 목적)
    • 제안하기
      이러이러한 목적이라면 이렇게 해보면 어떨까요? 정도로 자신의 가설과 제안을 함께 작성한다.
  3. hotfix나 주석 제거와 같이 로직에 큰 변화가 없다면 셀프로 머지한다. (단, 사유와 함께 셀프머지 할 것을 알리기)
  4. 작은 작업 및 기능 단위로 MR을 올린다. (300줄 이상의 코드 변경은 리뷰어를 힘들게 한다.)

MR Template

1
2
3
4
5
6
7
8
9
10
11
12
13
## 작업 개요

## Jira 티켓 넘버
<!-- 관련된 이슈 넘버가 있으면 이곳에 기입해주세요 -->

## 어떤 이유로 MR를 하셨나요?
- [ ] feature 병합(feature issue #를 남겨주세요)
- [ ] 버그 수정(아래에 issue #를 남겨주세요)
- [ ] 코드 개선
- [ ] 기타(아래에 자세한 내용 기입해주세요)

## 스크린샷 및 세부 내용 - 왜 해당 MR이 필요한지 자세하게 설명해주세요
<!-- 세부사항을 항목으로 설명해주세요 -->


물론 나도 잘 알고 있다고 말할 수 없겠지만, 나한테 코드리뷰가 좋은 경험으로 남아있듯이 이번 프로젝트에서 처음 접할 팀원들도 좋은 경험이 되어 다른 팀 구성원이 되어서도 전파하고 다녔으면 한다 👻

This post is licensed under CC BY 4.0 by the author.