brunch

You can make anything
by writing

C.S.Lewis

by 백명석 May 01. 2018

코드 리뷰에 대해서

인간답게 코드 리뷰 하기

https://www.slideshare.net/codetemplate/2018-01code-review-95601233

코드 리뷰의 가장 큰 목적은 치명적인 오류(Java에서는 Thread unsafety, Memory Leak 등)를 사전에 발견하여 서비스의 품질을 높이는 것일 것이다.

그런데 여기까지만 하면 참 재미없는 것이 코드 리뷰라고 생각한다.

나는 실제 서비스에 반영되는 코딩을 안 한 지가 오래(한 8년)되었다. 아 2016년에 혼자서 API 서버를 만들어서 배포한 기억이 있긴 하네 ㅎㅎ

나는 주로 내가 shadow coding이라고 부르는 코딩을 한다.
shadow coding는 내가 만들 용어로써 권투 선수가 가상의 상대를 대상으로 shadow boxing을 하듯이 나도 가상의 상황을 만들어 놓고 어떻게 이 문제를 풀지를 연습하고 이를 구성원들에게 공유한다. 예를 들어 코드 리뷰에서 반복적은 구조를 보면 extract object나 extract method 등을 통해 중복을 없앨 수 있는 쉬운 방법을 찾아보고, 공유한다.

나는 함께 하는 구성원들의 pull request를 최대한 많이 받아보고 코드 리뷰를 하고 코멘트를 단다. 거의 대부분의 코멘트는 치명적인 오류에 대한 것이라기보다는 하면 좋은 개선 내용이다.

이 개선 내용들은 주로 클린 코드를 통해 건전한 아키텍처를 지향하는 내용들이다. 따라서 내 코멘트는 할 수 있으면 반영하고 안 할 수도 있는 내용들이다. 그럼에도 이렇게 리뷰 활동을 하는 것은 리뷰를 통해 개발자들이 동기 부여되고, 성장하는 모습을 수차례 봤기 때문이다. 내게 코드 리뷰는 치명적 오류 발견 외에 같이 일하는 개발자들이 일을 통해 성장할 수 있는 수단으로 의미를 갖는다. 또 거기에 내가 역할을 할 수 있는 것이 내가 월급을 받는 이유 중 하나이고, 또 나를 동기 부여시켜주기도 한다.

첨부한 슬라이드는 "How to Do Code Reviews Like a Human"이란 글을 너무 재미있게 읽고 정리하면서 내 생각과 경험을 추가한 것이다. 설명이 필요 없을 수준으로 자세히 정리했으니 읽고 이해에 어려움이 없으리라 생각한다. 

코드 리뷰 관련 주위 분들의 질문 중에 "정말 좋은 개선을 제안했는데 절대 받아들이지 않는 동료가 있다. 어쩌면 좋을까?"라는 질문이 많았다. 이때 나는 "치명적인 오류가 아니라면 그냥 넘어가라. 넘어가면 코드 품질은 조금 떨어지겠지만 그와 즐겁게 일 할 수 있다. 하지만 끝까지 논쟁을 하다가 인간적인 관계가 틀어지면 같이 일하는 것이 불가능해진다"라고 답을 한다. 이는 구글 코드 리뷰 이야기에서도 나왔던 내용이고, 내가 현실에서도 겪으면서 얻은 교훈이다.

위 내용 외 코드 리뷰에 대해서 더 논의하고 싶은 신 분들은 페북이나, gmail로 문의 바랍니다.

작가의 이전글 Clean Architecture 1장을 보고
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari