개발을 공부하는 사람들은 ‘코드 리뷰가 개발자 개인과 팀 전체의 성장에 중요한 역할을 한다’고 생각합니다. 그래서 취준생을 대상으로 하는 유료 코드 리뷰 서비스가 있기도 하고, 좋은 개발 문화를 가진 기업은 저마다의 코드 리뷰 방식이 있습니다. 그렇다면 개발자가 코드 리뷰를 받고 성장하려면 어떤 자세를 가지고 있어야 할까요? 코드 리뷰를 잘하는 방법을 소개하는 글은 많지만, 코드 리뷰를 받는 사람이 알아야 하거나 지녀야 할 자세와 관련된 자료는 부족한데요.
이번 포스팅에서는 코드 리뷰로 성장하기 위해 리뷰이가 지녀야 할 자세를 저의 경험과 더불어 정리했습니다. 아울러 인포그랩 프로덕트 팀의 코드 리뷰 문화도 함께 다뤘습니다.
코드 리뷰란?
코드 리뷰(Code Review)는 개발자들이 서로의 코드를 의도적이고 체계적으로 검토하는 행위를 의미합니다. 더 자세히 설명하자면, 이는 다른 사람이 작성한 코드를 검토하며 궁금한 부분을 질문하거나, 버그가 있는 부분을 알려주거나, 더 효율적으로 개선할 수 있는 부분을 찾아 피드백을 주고받으며 서로의 코드를 개선해 나가는 과정입니다.
코드 리뷰의 중요성
1. 다른 사람이 잘 만든 코드를 활용한 배움의 기회
개발에는 경험을 해야만 얻을 수 있는 지식이 있습니다. 구글링을 해서도 지식을 얻을 수 있지만, 가장 쉽고 빠르게 경험 지식을 배울 수 있는 좋은 방법은 바로 ‘코드 리뷰’입니다. 따라서 코드 리뷰를 통해 자신이 해보지 못한 경험과 노하우를 전수받을 수 있습니다.
2. 코딩 스타일 통일
개발자마다 다양한 코딩 스타일이 존재합니다. 하지만 여러 코딩 스타일이 섞이면 가독성이 떨어지고 유지 보수가 어려워집니다. 코드 리뷰를 하면 개발 결과물이 일관된 스타일을 유지하는 데 도움이 됩니다.
3. 버그와 장애의 사전 예방
본인은 쉽게 발견하지 못하는 실수를 다른 사람은 금방 발견할 수 있습니다. 코드 리뷰를 하면 코드의 부작용(side effect)과 오류를 좀 더 일찍 발견하여 버그와 장애를 프로덕션 환경에 배포하기 전에 예방할 수 있습니다.
4. 코드 품질 향상
'좋은 코드'의 절대적인 기준은 없습니다. 그러나 다른 사람에게 본인의 코드를 보여주고 피드백을 받으면, 스스로 코드를 작성할 때 '좋은 코드'를 한 번 더 생각하게 됩니다. 이러한 과정을 거쳐 전반적인 코드 품질을 향상할 수 있습니다.
코드 리뷰로 성장하는 리뷰이의 자세
1. 하나의 이슈에는 하나의 코드 리뷰를
코드 리뷰는 코드를 작성한 사람이 아닌 다른 사람이 수행하므로, 코드 맥락을 충분히 이해하지 않아도 리뷰할 수 있어야 합니다. 이를 위해, 가능한 작은 단위로 MR(Merge Request)을 생성하여 리뷰어가 이를 빠르게 확인하고 merge 하도록 하는 것이 중요합니다.
2. 리뷰어가 빠르게 이해할 수 있도록 최대한 많은 맥락을 제공해 주기
회사나 팀에서 이미 설정한 이슈 템플릿이 있다면 해당 템플릿을 사용합니다. 그렇지 않다면 ‘코드가 어떻게 동작하는지’가 아닌 ‘왜 이렇게 코드를 짰는지’ why를 작성합니다. 이를 뒷받침하는 공식 문서 링크를 추가하면 리뷰어를 쉽게 납득시킬 만큼 명확하고 강력한 논리적인 근거를 제공할 수 있습니다.
또한 작업 내용을 중심으로 확인받고 싶은 부분을 미리 적으면 리뷰어의 시간을 절약할 수 있습니다.
3. 빠른 시일 내에 리뷰를 받도록 최선을 다하기
‘코드를 작성하고 리뷰어를 선택하는 것까지’만 내 업무가 아니라, ‘리뷰 받은 내용을 반영해서 다시 업데이트한 다음 최종적으로 승인을 받는 것까지(내 기능을 merge 하는 것까지)’가 나의 업무임을 인지하고 책임을 져야 합니다. 그래서 리뷰어를 선택하기 전에 리뷰어가 휴가 중인지, 너무 바쁘진 않은지, 빠르게 대체할 수 있는 사람이 있는지 알아봐야 합니다.
리뷰어를 선택한 후에는 알람이 가기는 하지만, ‘리뷰를 언제까지 받을 수 있는지’ 확인하는 것이 좋습니다. 또한, 며칠이 지났는데도 무소식이라면 이 기능이 반드시 배포되어야 하기에 꼭 리뷰해 줘야 함을 주기적으로 상기시켜 주는 것도 중요합니다.
4. 리뷰어의 코멘트에 피드백 남기기
리뷰어가 코드 리뷰를 마치고 피드백을 남겨주었다면, 그것을 반영하여 코드를 수정한 다음, 다시 코드 리뷰를 요청해야 합니다. 이때 리뷰어가 남긴 코멘트에 명확하게 피드백을 남겨서 리뷰어가 확실하게 상황을 이해할 수 있도록 해주는 것이 좋습니다.
동의한다면 "반영했다", "수정했다", "업데이트했다" 등으로 답장을 남기는 걸 권장합니다. 질문 이나 동의하지 않는 내용이 있다면 추가로 코멘트를 작성해 주는 것이 좋습니다.
5. 코드는 내가 아니라는 점 명심하기
코드 리뷰를 감정적으로 받아들이지 않도록 합니다. 코드 리뷰를 받으면 작성한 코드가 비판받는 것 같은 불안감이 생기기도 하고, 감당되지 않는 코멘트를 받게 되면 내 실력에 좌절감을 느끼기도 합니다. 또한 동료나 후임에게 지적받아 불편하고 자존심 상하는 기분이 들 수도 있습니다.
하지만 내가 꾸준히 실력을 쌓아나가기 위해서 코드 리뷰만큼 좋은 건 없습니다. 따라서 코드 리뷰에 이런 마인드를 가지게 되면 성장하기 어려울 수 있습니다. 이에 가급적 리뷰어의 좋은 의도를 생각하도록 합니다.
코드 리뷰는 나를 비판하는 게 아니라, ‘나의 코드를 더욱 개선하는 제안’이라고 생각합니다. 또한, 코멘트를 많이 받았다면, 그것은 배우고 성장할 기회이며, 다음에 동일한 코멘트를 받지 않도록 실력을 향상하는 것이 중요합니다. 나보다 경험이 적은 엔지니어일지라도 다른 관점에서 볼 수 있기 때문에, 항상 배울 점이 있다는 것을 인지하며, 성장하려는 자세를 유지합니다.