코드리뷰에 대해 이야기 하기 앞써 질문 한가지 던저보고 싶다.
하루 8시간 개발할 시간도 빠듯한데 과연 코드리뷰할 시간이 있는가?
아마 대부분의 사람들이 바쁜 나날들을 보낼것이다.
이렇게 바쁜 와중에 코드 리뷰를 왜 해야하는가?
코드 리뷰가 그렇게 중요한가?
거기에 대한 답을 이제 하려한다.
프로젝트를 2~3개 맡아서 관리하다보면 분명 겹치는 기능들이 있다.
쉬운기능들은 전 프로젝에서 다뤘기 때문에 Copy & Paste를 이용해서 가지고 와서 테스트만 해보면 된다.
하지만 꼭 상이한 기능들이 있는데 개발만 잘해놓으면 향후 계속해서 잘 써먹을 거 같은 기능들도 있다.
이러한 기능들은 한번 개발할 때 잘해 놓는 것이 중요하다.
물론 일정이 빠듯한 경우는 우선, 동작(기능)하는 것에 초점을 맞추어 개발해 놓고 잊지말고 고도화하는 것이 중요하다.
시간도 없고 개발자도 없는데 왜 굳이 코드 리뷰까지하면서 개발하는 것이 중요한가?
그 첫번째 이유는 예외적인 오류발생으로 인해 고객사나 자사 서비스에 안길 피해를 미연에 방지할 수 있기 때문이다.
QA 테스트 도입 전 리뷰를 실시하여 최대한 빠른 시점에 저비용으로 이슈가 될만한 코드 등을 제거하기 위함이다.
컴퓨터 공학을 전공한 사람이라면 소프트웨어 공학이란 과목을 수강할 것이다. 소프트웨어 공학적으로 접근해본다면 이슈가 될만한 코드(즉, 에러를 발생시킬 수 있거나 발생가능성이 있는 코드 또는 보안적으로 취약한 코드 등)를 빠르게 발견하면 할수록 개발코스트는 줄어들게 된다. 가장 최악의 경우는 배포 이후 User들이 한참사용중에 이슈가 터지는 것이다. 몇 개 기업은 이것으로 많은 User가 이탈한 현상도 경험했을 것이고 서비스를 접게 되는 것도 경험했을 것이다. 결론은 빠르게 발견하면 할수록 좋은데 코드리뷰 중에라도 발견한다면 앞서 말한 예시에 비해 상당한 저 비용으로 서비스를 개선할 수 있다.
두번째는 이후 개발부터 개발시간을 단축 시킬 수 있고 단축시킨 시간에 또 다른 까다로운 기능 개발에 중점을 둘 수가 있다.
이렇게 하나둘씩 개발을 해내다 보면 자체 프레임워크에 쌓이는 기능들이 많아진다. 즉, 해당 기능들을 개발해보지 않은 신입들이 입사를 해서 Legacy 코드만 공부를 해도 실력향상에 도움이 되고 개발을 수행할 수 있는 기능의 범위가 커지는 효과가 있다. 결국 초기 시간을 추자해서 이후 시간을 버는 전략인 것이다.
세번째는 인수인계전에 코드리뷰를 실시하는 것이다. 이것은 인수 받을 개발자 위주로 코드리뷰를 실시하여 본인이 개발하게 될 Legacy 코드의 신뢰성을 본인스스로 쌓는데 있다.
리뷰 중 이슈가 될만한 부분을 인계자에게 요구하여 개선 후 인수받는 것도 하나의 전략일 것이다. 그리고 많은 사람들이 당연하다고 생각하는
네번째 이유는 주변 동료 개발자로부터 코드 비평을 통해 더 나은 개발자로 성장할 수도 있다. 비평을 할 때 중요한 점이 있는데 그건 바로 상대를 존중하면서 코드에 대해 비평하는 것이다.
상대를 왜 존중 해야 하는가? 아무리 맞는 말이라도 꼭 따르기 싫은 말들이 있다. 그건 바로 상대방이 나를 비난하면서 지적할 때일 것이다. 이때 비난하지 않고 상대방을 존중하는 마음가짐을 갖는다면 어휘를 선택할 때에도 상대를 깔보는 듯한 말을 하지 않게 된다. 물론 비평을 받아들이는 이의 자세도 중요하다. 내 코드가 비평 받는다고 해서 내가 그들보다 못한 개발자라는 것은 아니다. 한사람이 모든 영역을 잘할 수가 없고 누구나 실수 하듯이 내가 약한 부분이거나 상대가 잘하는 영역 그리고 내가 실수한 영역을 코드리뷰를 통해 알 수 있게 되고 한단계 발전하는 자신을 보게 될 것이다.
(단, 리뷰를 진행하는 사람도 너무 방어적인 자세를 취하는 건 좋지않다.)
이외에도 여러 이유가 있을것이다.
아래는 구글에서 진행하는 코드리뷰 방식이다.
참고하면 좋을 듯 하다.
https://google.github.io/eng-practices/review/reviewer/standard.html
The Standard of Code Review
Google’s Engineering Practices documentation
google.github.io
'개발 문화' 카테고리의 다른 글
| 처음부터 잘하는 사람은 없다? (2) | 2024.09.21 |
|---|---|
| TDD 에 대한 고찰 (0) | 2024.09.17 |
| Jr 개발자의 취업난? (feat. 주니어 개발자) (2) | 2024.09.09 |
| 돈에 가중치를 둘 것인가? vs 기술에 가중치를 둘 것인가? (1) | 2024.09.05 |
| 블로그 관리가 싫었던 개발자 블로그 (1) | 2022.10.02 |