본문 바로가기
ETC/IT 이야기

코드리뷰 이야기

by 코딩의성지 2023. 2. 23.

 코드리뷰에 대해 부정적인 사람들이 생각보다 많다. 5년전 신입으로 입사한 회사에서 처음으로 코드리뷰를 접한 적 있다. 상사의 지시로 진행하게 된 코드리뷰의 결말은 최악에 가까웠다. 같이 입사한 동기 둘과 했던 코드리뷰는 코드의 퀄리티를 높이기는 커녕 개발 시간을 딜레이 시켰고, 서로의 감정을 건드리는 일이 생겼다. 결국 코드리뷰는 시작한지 몇개월 만에 없어졌고 프로젝트 또한 예정된 시간에 끝마쳐지지 못했다. 왜 이러한 일이 발생했을까?

 

 모든 개발자들이 코드리뷰를 아주 중요하다고 생각하지만 그 과정 자체를 무조건 긍정적인 것이라 생각하지 않는다. 먼저 코드 리뷰 자체가 시간과 노력을 쏟아부어야하는 일이기 때문이다. 정상적인 코드리뷰를 진행하기 위해서는 개발자들이 꽤 많은 시간을 투자해야한다. 만약 한참 바쁘거나 타이트한 일정을 소화하고 있을 때, 코드리뷰는 굉장한 부담을 줄 수 있다.

 

 그리고 코멘트를 주고 받는 것에 대한 불편함이 큰 것도 한 몫 한다. 코드리뷰를 받는 다는 것 자체가 나의 작업물을 다른 사람에게 평가받는 것이다. 실력이 조금 부족한 주니어에게 코드리뷰는 두려운 과정일 수 있다. 반대의 경우도 마찬가지다. 타인의 코드에 비판적인 코멘트를 다는 것이 부담스럽다. 다른 사람의 코드가 어렵거나 혹은 수정할 부분이 보이는 경우 코멘트를 많이 다는데, 이러한 경우에서 서로의 감정을 건드는 말을 하게 될까 여간 부담스러운 것이 아니다.

 

 몇년 뒤, 새로운 회사에서 코드리뷰를 다시 마주하게 되었다. 예전의 아픈(?) 기억 때문인지 코드리뷰를 한다는 것 자체가 부담이었고 두려웠다. 하지만 예전과 같은 일을 반복할 수는 없었다. 어떻게 하면 좋은 리뷰를 할 수 있을지 많은 고민을 했고, 이를 실행에 옮겨 보기로 했다. 1년간 많은 시행 착오 덕분에 지금은 좋은 코드리뷰 문화 속에 근무하고 있다. 간단하게 나마 지금 우리팀의 코드리뷰 문화를 공유해 보겠다. 

 

- 리뷰이(Reviewee) 일 때

코드를 작성함에 있어 몇가지 원칙을 지킨다.

 

1. 팀의 코드 컨벤션을 잘 지켰는지 확인한다.

2. 코드 상의 논리적인 오류나 오탈자 점검한다.

3. deprecated 된 기능을 사용하고 있는지 점검한다.

4. 성능을 위한 최적화를 했는지 확인한다.

5. 이전의 PR 에서 코멘트 받은 실수를 반복했는지 점검한다.

6. 코멘트를 받을 것으로 예상되는 부분에 사전 설명을 추가한다.

7. PR 을 올리는 코드 양은 최소화 한다.

 

 위의 7가지 원칙만 지켜도 코드리뷰 중 일어날 수많은 충돌을 사전에 방지한다. 위의 원칙은 복잡하지 않다. 다만, 지금 내가 가진 역량으로 내가 최선의 코드를 짜냈는지를 정확하게 드러내야만 수준 높은 코드리뷰가 이루어 질 수 있다.

 

-리뷰어(Reviewer) 일 때

1. 로직에 대한 오류나 오탈자를 코멘트한다.

2. 구현된 로직 중 개선할 수 있는 방법을 제안한다.

3. 사용한 라이브러리가 신뢰할 수 있는 것인지 확인한다.

4. 코드 상 이해가 안되는 부분에 대해 질문한다.

 

 위의 4가지 원칙은 코멘트를 남기는 리뷰어에게 도움되는 원칙이다. 상대방의 코드를 리뷰한다는 것은 굉장히 어려운 일이다. 실력이 나보다 높은 사람의 코드를 리뷰하는 것은 더욱더 어렵다. 그렇기에 내가 상대방 코드를 이해하고 리뷰하기 위해 어떤 노력을 했는지 자세히 알려주는 것도 중요하다. 이러한 과정은 부드러운 소통이 되는 코드리뷰로 이어질 것이다.

 

  코드리뷰에서 가장 중요한 것은 상대방에 대한 존중이다. 코드리뷰 과정을 스포츠 경기라 생각하자. 모든 스포츠가 치열하게 경쟁하고 승리를 위해 노력하지만, 결국 마지막은 상대방에 대한 배려와 존중이 중요하다.

 

 

반응형

댓글