본문 바로가기
한걸음씩/책 & 강의 정리

구글 엔지니어는 이렇게 일한다 #9장 코드 리뷰를 읽고

by TLOWAC 2024. 11. 22.

#9 코드 리뷰

| 일부 내용
지식과 책임을 '소유권' 이라 부르고, 소유권을 행사하는 사람을 소유자 라고 합니다. 단순히 해당 영역의 소스 코드가 소유자의 것이라는 뜻이 아니라 회사가 추구하는 가치가 지켜지도록 관리한다는 의미의 소유 입니다.

 

'회사가 추구하는 가치가 지켜지도록 관리한다'

코드 리뷰를 하면서 이런식으로 방향을 정의한적이 있던가. 단순히 팀의 컨벤션, 회사의 컨벤션, 코드의 효율성 및 가독성만을 탐독하지 않았나 반성하게 된다.

 

| 일부 내용
구글은 아무리 작더라도 코드베이스를 수정하는 거의 모든 변경에 코드 리뷰를 요구합니다. 이러한 강제적인 규제는 비용을 유발하고 엔지니어링 속도에도 영향을 줍니다. 코드 베이스에 새로운 코드를 추가하는 속도를 늦추고 필요한 변경을 제때 반영하기 어렵게 할 수도 있습니다.

 

책에서는 위의 설명과 더불어 그럼에도 불구하고 코드 리뷰가 필요한 몇가지 이유들에 대해서 설명한다.

그중에서 나는 3가지에 깊이 공감한다. '1)변경된 코드를 다른 엔지니어도 잘 이해합니다.' , '2)지식이 공유 됩니다.' , '3)팀이 소유권(주인의식)을 더 강하게 느낍니다.'

이것은 3장의 '지식 공유' 에서 나온 '단일 장애점 (SPOF)' 문제를 풀어나가는데도 영향을 주기 때문이다.

 


 

| 일부 내용
코드 리뷰를 필수라고 못박으면 작성자들에게 자신의 코드를 한번 더 들여다보게 하는 효과가 생깁니다.
-----
사소한 결함은 나중에 해결하겠다는 안이함으로 말이죠.

 

이따금 테스트코드를 작성하는것을 까먹고 Commit 하여, PR 에서 반려 당했던 나의 과거가 떠오른다.

하지만, 확실히 코드 리뷰를 필수적으로 하게 되면 나의 코드를 한번 더 읽어 보며, 해당 PR 을 리뷰해줄 리뷰어를 위해 코드의 가독성 작업의 필요성, 변경사항들을 좀 더 자세히 작성하게 된다.

 


 

| 일부 내용
리뷰를 통한 지식 공유는 지역, 국가, 프로젝트 경계에 구애받지 않고 코드베이스 구석구석의 모든 엔지니어에게 빠르게 전파됩니다. 코드 리뷰야말로 지식을 퍼뜨리기에 완벽한 기회입니다.

 

생각을 해보면 서로 다른 도메인의 업무를 진행중이더라도, 코드 리뷰를 통해 서로 담당하고 있는 업무의 도메인과 더불어 해당 프로젝트의 전반적인 진행 사항을 알 수 있다. 

 

하지만, 염려되는 한가지는 코드 리뷰 작업으로 인한 업무 지연이다. 이를 현명하게 대처할수만 있다면 코드 리뷰는 실보다 득이 더 많은것은 분명 하다.

 


 

| 일부 내용
코드 리뷰는 작성자와 리뷰어 모두에게 배움의 기회임을 기억하세요. 이 점만 잊지 않으면 어떤 의견 충돌도 감정싸움으로 번지지 않을 것입니다.

 

책에서 이러한 내용이 언급되듯이 현실에서도 코드 리뷰가 자칫 감정 싸움으로 전환되는 케이스가 존재한다.

코드 리뷰가 감정 싸움으로 전환되는것을 인지했다면, 토의를 잠시 멈추고 상황을 멀리서 돌아볼 필요가 있다.

 

항상 상대를 존중하고 겸손해야한다.


 

| 일부 내용
코드 리뷰는 지금 당장만이 아니라 후대를 위해 현재 하고 있는 일을 기록하는 행위 입니다.

 

키야........ 사장님 여기 소주 하나요..!

개발자가 코드 리뷰라는 행위를 바라보는 관점을 엿볼 수 있었다. 더욱이 이런 마인드로 코드 리뷰에 임한다니 감탄만이 나온다.

 


 

| 일부 내용
구글은 조직이 매우 거대하고 거의 모든 코드를 모노리포에서 투명하게 관리하기 때문에 코드를 새로 추가하면 얼마 지나지 않아 누군가 이용하기 시작합니다. 따라서 롤백은 그 사이에 코드를 이용하기 시작한 엔지니어들의 작업에 지장을 주게 됩니다. 작은 변경은 원자적이라서, 또 빠르게 리뷰 할 수 있어서 이런 피해를 줄여줍니다.

 

PR 을 작게 만들어 코드 리뷰를 진행하는게 단순히 리뷰어가 해당 PR 을 리뷰하기 편하게 하기 위함 뿐만 아니라, 이슈 발생시 '롤백' 을 용이하게 하기 위함이라는점에서 신기하게 다가 왔다. 막상 경험을 퇴고해보면 배포 후 이슈가 발생하여 특정 commit 을 기준으로 롤백을 했던 경험이 있었기 때문이다.

 

 

반응형

댓글