코드 리뷰로 학습하기

코드 리뷰란 다른 사람이 작성한 코드를 보고, 코드를 개선하기 위해 서로 논의하는 것을 말합니다. 간단한 오타수정부터 기능, 올바른 이름짓기, 디자인 등등 코드를 개선하기 위한 많은 일들을 할 수 있습니다. 그래서 많은 개발 조직에서 코드의 품질을 유지하기 위해 코드 리뷰를 적극 활용하고 있습니다. 하지만 코드 리뷰는 단순히 코드를 개선하는 일 뿐만 아니라 개발자들이 많은 지식들을 배울 수 있는 좋은 기회입니다. 코드 리뷰를 이용해서 무엇을 더 배울 수 있을까요?
더 좋은 코드를 만들 수 있을까?
다른 사람의 코드를 읽으면서 코드의 의도를 파악하고 더 개선할 수 있는 부분은 없는지 찾습니다. 만약 내가 모르는 것을 발견했다면 문서나 책을 통해서 찾아봅니다. 새롭게 공부하며 지식을 습득하게 되고 그 지식에 대한 아주 휼륭한 예제코드도 같이 알게됩니다. 이해하는게 어렵다면 작성자에게 질문할 수 있으니 아주 휼륭한 선생님도 같이 얻게 된 셈입니다. 나라면 이 문제를 어떻게 해결할까? 더 좋은 방법으로 해결할 수 있을까? 혹은 더 효율적으로 이 문제를 해결할 수 있을까? 고민합니다. 만약 개선할 부분을 찾았다면 작성자에게 제안을 해야 합니다. 근데 제안을 할 때 이유도 같이 첨부해야겠죠?
작성자는 처음 알게되는 개념일 수 있기 때문에 아주 자세하게 설명해야 합니다. 하지만 내가 다른 사람에게 설명할 수 있을정도로 알고 있지 않다면 설명하기가 어렵습니다. 그래서 문서나 책을 통해 자세히 공부한 다음에 정리를 해서 설명해야 합니다. 이 과정에서 공부를 할 수 밖에 없게됩니다.
먼저 코드 리뷰 하기
이런! 제가 생각했던게 틀렸습니다.
코드 리뷰의 가장 좋은 점중 하나는 먼저 코드 리뷰를 하면 나도 코드 리뷰를 받을 수 있다는 사실입니다. 더 좋은 방법이라고 생각했지만, 작성자가 코드를 작성하여 코드에 대해서는 더 많이 알고 있기 때문에 더 좋은 방법이 있을 수 있습니다. 코드 리뷰를 보고 정말 좋은 제안이라고 받아들인다면 내가 잘 작성했다는 것을 확인할 수 있습니다. 만약 작성자가 생각했을 때 코드 리뷰가 별로라고 생각한다면 왜 별로라고 생각하는지 답변이 올 것입니다. 그러면 내가 제안한 코드 리뷰에 대해서 다시 코드 리뷰를 받을 수 있게됩니다!
셀프 코드 리뷰
내가 작성한 코드를 다른 사람이 보기 전에 나 스스로 코드 리뷰를 하게 되면 또 새로운 사실들을 많이 발견할 수 있습니다. 다른 사람이 코드를 볼 때 관점으로 바라보는 연습을 하면 나는 당연하게 이해될거라고 생각했던 것들을 다른 사람들이 봤을 때는 이해하기 어려운 코드들을 발견할 수 있습니다. 그러면 더 의도를 드러내도록 수정할 수 있고 혹은 더 생각이 나지 않는다면 다른 사람들에게 “더 좋은 방법이 있을까요?“라고 조언을 구할수도 있습니다. 만약 코드로 설명할 수 없는 부분은 코멘트로 부가설명을 더할 수 있습니다.
같이 성장하기
코드숨에서는 코드 리뷰를 통해 수강생들의 학습을 도와드리기도 하지만 사실은 가장 많이 배우는 사람들은 리뷰어입니다. 더 많이 알려드리기 위해 더 많이 공부하고 있고, 리뷰를 하면서 같이 성장하고 있습니다.
참고
- Code Review Developer Guide - https://google.github.io/eng-practices/review/
- 피드포워드 - 교보문고 - http://www.kyobobook.co.kr/product/detailViewKor.laf?barcode=9791187856795
- 피드포워드 서평 - 윤석 블로그 - https://hannut91.github.io/blogs/books/feed-forward