코드 리뷰 문화 적응기
회사에 들어와서 신기했던 것 중 하나가 바로 코드 리뷰였다.
대학원 시절엔 혼자 코드 짜고 실험하느라, 남에게 내 코드를 보여줄 일이 거의 없었다.
그런데 회사에 오니, 매일같이 Pull Request가 올라오고 리뷰 요청이 쏟아진다.
선배들은 부담 갖지 말고 마음껏 리뷰하라고 하셨지만, 당시 나는 코드를 보고 조용히 눈팅하기 일쑤😞
이제는 (이미 좋은) 리뷰 문화를 더 잘 만들기 위해 노력하는 입장이 되었고, 갓 입사했던 시절 내가 가졌던 질문들과 함께 코드 리뷰에 대한 생각을 정리해봤다.
코드 리뷰 왜 하는거지?
변형으로는,
‘코드는 작성자가 제일 잘 알텐데 내 리뷰가 어떤 의미가 있나?’ 또는 ‘괜히 틀린 말 했다가 선배들 시간만 뺏는거 아닌가?’
코드 리뷰의 목적이야 다 아는 얘기긴 하다. 작성자가 놓친 버그를 잡고, 더 나은 구조로 개선하고 어쩌구…
하지만 주니어 입장에서 직접 기여하는 건 솔직히 쉽지 않다.
주니어의 눈으로 보는 코드리뷰의 가치👀
코드를 읽기만 해도 follow-up이 된다
바쁠수록 내가 모르는 사이에 수정되는 코드가 많고, 선배들 손이 빠를수록 내가 놓치는 부분은 많아진다. 코드 리뷰를 하면 ‘이런 변경 사항이 생겼군’ 하고 따라갈 수라도 있다. (물론 아직은 못 따라가는 날이 많다.)
나중에 작업할 때 이미 있는 클래스나 함수를 활용하기에도 용이하다. 예전에 직접 구현했던 기능해서 뿌듯하게 PR을 올렸다가 리뷰에서
“현정님 이거 여기 함수 쓰시면 돼요!” 라는 comment를 받고 close한 적도 있었다.
질문만 남겨도 남는 장사
- “이 함수는 왜 여기 정의했지?”
- “여긴 디폴트값이 있는데 저긴 왜 없지?”
질문이라도 남기면 주니어 개발자로서는 무조건 이득이다. 선배들이 성심껏 설명해주는 덕분에 때로는 그분들의 코드 철학을 배우게 되고, PR 본문에는 없는 코드 뒤에 숨은 고민이나 배경 지식까지 알게 배우기도 한다.
선배들의 리뷰를 보며, 클린 코드에 대한 감각도 조금씩 생겼다.
요즘에도 여전히 확신 없는 질문이 생길 때는 ❓
이모지와 함께 조심스럽게 질문을 남겨본다.
미래의 우리가 참고할 자료
가끔 “왜 이렇게 구현했더라?” 싶은 순간이 온다. 그럴 땐 PR로 돌아가서 열심히 토론했던 내용을 보면 단서가 보인다. ‘아 그때 그런 문제가 있었지~’하고 뻘짓을 두 번 하는 수고를 덜 수 있다.
한 번 할 때 잘하자
지금 너무 바쁨 → 일단 이렇게 해두고 나중에 리팩토링 할까? → 나중에도 너무 바쁨 → 일단 이렇게 …
그 “나중”은 가뭄에 콩나듯 왔다. 그래서 merge 전, 최대한 다듬고 정리해야 우리의 소중한 리소스 낭비를 줄일 수 있다.
그렇게 신경 써서 만든 코드라도 결국 나중엔 정말 리팩토링이 필요한 순간이 오는데, 그 횟수를 줄이기 위해서라도 한번 할 때 잘 다듬는게 중요하다.
작년에는 코드 규모가 점점 커지자 선배가 “우리 코드를 더 잘 구조화 할 수 있을 것 같은데 연말에 여유로울 때 리팩토링 하고 싶어요” 하시곤 또다른 태스크 리더가 되어 소중하게 개발한 코드와 멀어졌다🥲
리뷰 문화에 적응하려는 나의 노오력
PR 본문 / comment 잘 활용하기
PR 본문에 고민했던 부분을 남겨 ‘코드가 이상해보여도 나름 고민은 했습니다😅’를 티내기도 한다. 아리까리한 부분은 comment로 질문을 남기면 선배들이 같이 고민해주시기도 했다.
PR 나눠서 올리기
PR 사이즈를 작게 나누면 리뷰하기도 쉬워서 장려하기도 하지만, 실수했을 때 큰 노력이 헛수고가 되는 것보다는 작은 노력이 헛수고가 되는게 낫다는 점에서도 PR을 잘 끊는게 중요하다. 특히 손이 느린 나같은 주니어에겐 진행 상황을 공유하는 용도로도 유용하다. (사실 머리로는 알고 있는데 여전히 어렵다.)
마무리하며
회의, 교육, 세미나 등 다양한 방식으로 배우고 있지만 내가 가장 많이 배운 건 코드 리뷰였다.
운동선수가 물리적으로 맞으며 훈련한다면 개발자는 코드리뷰로 뚜까 맞으며 훈련하는게 아닐까 생각한 날도 있다.
고생했다는 comment와 함께 초록색 Approve
가 뜰 때의 희열이란.
로켓 이모지 백개는 달고 싶어진다.
개발자의 유대감은 코드리뷰에서 오는게 아닐까.
Leave a comment