-
[Code Review] 코드 리뷰 경험 공유 및 리뷰하는 이유code review 2024. 12. 28. 02:06
이 글은 제가 지금까지 코드리뷰를 하거나 받으면서 느낀 점과, 그 과정에서 얻게 된 배움과 생각을 공유하기 위해 작성한 글 이다.
나의 첫 코드리뷰는 약 2년 전에 우아한 테크 코스 프리코스를 진행하면서의 스터디였다.
그땐 뭣 모르던 시절로 코드리뷰를 받기만 하였고,, 다른 사람의 코드를 보고 피드백을 줄 정도의 역량은 없었습니다.
처음 코드리뷰를 받았을때 내 코드를 소개 하면서 발표를 하였다.
그땐 나의 밑바닥? 완전 벌거 벗은 것 마냥 다 보여주는 느낌이라 부끄럽기만 하였다.
(지금 생각해보면 부끄럽다고 숨기는게 아니라 성장을 위해 당당하게 받으면서 공부를 했어야 했다.)
그리고 다른 사람들의 코드를 보면서 좋은 점은 카피를 하였고 그때 객체지향 프로그래밍(OOP)에 대해서 어느정도 느낌을 받았다.
그땐 그랬다.
그리고 나서 1년 6개월 전에 NHN Academy 에서 본격적으로 코드리뷰를 체계적이고 적극적으로 활용 하기 시작하였다.
코드리뷰를 통해 토론을 하며 코드를 개선하고 공부하고 성장을 하였다. 그래서 나는 코드리뷰를 하면 좋은 점이 많다고 생각하고 해야 한다고 생각한다.
여기까지가 나의 코드 리뷰 역사? 이고
이제 코드리뷰에 대해서 내가 생각한 방법? 어떤 코드리뷰가 좋은가에 대해서 말해 보겠다.
코드리뷰란?
-> 코드를 검사하여 문제를 식별하고 소프트웨어 품질을 개선하는 데 사용되는 동료 평가 과정
코드리뷰는 다양한 목적으로 인해 한다고 알고 있다.
특히! 조직에서는 조직의 코드 컨벤션을 잘 지켜졌나, 이 코드에 버그가 있냐 등등의 목적으로 쓰인다.
하지만 그본적인 목적은 개발자의 성장이다
내가 코드 리뷰를 하면 내 동료가 몰랐던 것을 하나 더 알게 되고 이로 인해 동료가 더 성장을 할 수 있으며 동료의 성장은 팀의 성장으로 이어진다고 생각 한다.
그리고 동료에게 설명을 위해 나도 좀 더 자세하게 공부를 하게 된다.
여기까지 코드리뷰와 코드리뷰의 목적이다.
작자가 생각하는 좋은 코드리뷰란?
1. 틀린 부분이 있다면?
- 직접적인 답변 보다 생각할 기회를 제공 하여 동료가 스스로 공부하고 깨달음을 얻을 수 있게 질문을 던지자
2. 간단한 Sample 코드 제공
- 코드를 제공 함으로써 힌트나 아이디어를 제시하여 동료가 개선 방향을 더 쉽게 이해 할 수 있게 하자
3. 감정 상하게 하지 않기
- 위에 사진도 사실 잘못된 코드리뷰라고 생각한다.
저렇게 리뷰를 하는게 아니라 (이건 잘 못 된 것 같아요, 다른게 맞는 것 같아요) -> Long 타입이라서 validation을 다른 방식으로 하는게 어떨까요? - 위에처럼 피드백을 줄 때 문제를 지적하고 답을 알려주는 것 보다는 개선 방향을 제안하는 형태가 좋다고 생각한다.
4. 가독성을 고려한 리뷰
- 코드 리뷰도 글을 쓰고 읽기 때문에 가독성에 신경을 써야한다.
- 적절한 줄바꿈, 띄어쓰기를 활용하고 이모티콘을 함께 활용하여 가독성을 높여보자
5. 좋은 부분은 칭찬하기
- 잘 작성된 부분을 보면 가볍게 칭찬을 하면 좋다. ex. (이 부분 좋네요. 배워 갑니다 등등)
- 긍정적인 피드백은 동료의 자신감을 높이고 더 나은 코드를 작성하는 동기부여가 된다고 생각한다.
6. 리뷰 내용을 반드시 반영해야 한다는 생각을 버리기
- 코드리뷰는 가르치는 과정이 아니라 협업의 과정이다.
- 리뷰어는 피드백을 제공할 뿐이다. 결국 해당 리뷰의 반영 여부는 작성자의 몫이다.
- 즉, 리뷰 과정은 강요가 아니라 조언과 토론의 과정임을 이해 한다고 하면 리뷰의 질문등이 달라진다 라고 생각한다. (해당 코드의 설계 부분을 토론 하는 과정이 성장하는데에 큰 도움이 된다고 생각한다)
7. 해결책이 아닌 조언을 제공
- 리뷰로 인해 다양한 관점을 통해 해결책을 찾게 유도하는게 좋다고 생각한다.
- 예를들면 : 이 문제를 해결하기 위해 A 방법도 사용할 수 있지만 B 방법도 고려해 보면 어떨까요?
8. 동료가 생각하게 만들기
- 질문과 피드백을 통해 단순히 문제를 수정하는 데서 그치지 않고, 동료의 사고를 확장 시키는 것을 목표로 한다.
- ex) 이 문제를 더 간단히 해결할 방법은 무엇일까요?
코드리뷰는 단순히 문제를 해결하는 과정이 아니라, 함께 성장하는 협업의 과정입니다.
제가 정리한 원칙이 더 나은 코드리뷰를 만드는 데 작은 도움이 되었으면 합니다. 😊
코드 리뷰가 필요하신 분은 언제든지 연락 주세요!
jhjh0022@naver.com
코드리뷰는 언제나 환영입니다.
함께 고민하고 성장하며 더 좋은 코드를 만들어가요! 😊