저번 게시글에 이어서 오픈소스 프로젝트 기여를 하면서 경험을 한 가지 더 공유해보려고 합니다.
이번에는 코드리뷰에 대한 내용인데요. OSSCA(오픈소스 컨트리뷰션 아카데미)에 참여하면서 멘토님에게 받은 경험, go-mysql 프로젝트에 참여하면서 메인테이너에게 받은 경험을 공유하고자 합니다~
아 그리고 필자는 해당 경험 이전에는 제대로 된 코드리뷰를 받아본 적 이 없습니다(받아봤는데 이유 없이 까여서 그날 까인 부분 수정하는 꿈 꿨습니다….)
앞서 말했다시피 제가 직장 다닐 때 받았던 코드리뷰라기보다는 까였다라는 표현이 강했습니다… 어떻게 구현했는지 열심히 설명했지만 어떤 이유에서 제 코드가 좋지 않은 코드인지 지도받지 못했고 말은 순화되었지만 제 코드는 무작정 상품성이 떨어진다를 돌려 말씀하시는 게 느껴졌습니다(물론 제가 부족했던 것 같아요)
그런 배경이 있는 상태에서 덜컥 코드 리뷰를 받아(당했다?라는 표현이 맞는 듯) 보게 되었습니다.
저희 활동은 2가지의 목표를 가지고 있었는데 그중 제일 첫 번째 목표인 ‘미구현 이벤트 개발’ 항목이 존재하였습니다. 2주 차 정도 모임이 진행되었을 때 저는 이벤트 구현을 개인별로 해야 되는 줄 알고 덜컥해서 멘토님께 보여드렸습니다.
그렇게 PR을 올렸더니 멘토님이 다음날 멘토님 카톡이 왔습니다.
처음에 코드리뷰 달아주셨다는 카톡을 받고 솔직히 걱정이 심했습니다. 또 까이는 걸까 싶기도 하고… 오늘도 수정하는 꿈 꾸겠네 하면서 말이죠….
근데 너무 순한 맛이길래 다른 의미로 당황한 기억이 나네요. 잘못된 지점은 확실하게 어떠한 부분인지 잡아주시고 어떠한 순서로 진행하면 되는지까지 다 적어주셨습니다.
진짜 마음이 편안해지는 코드리뷰였습니다. 사실 다 떠먹여 주시듯이 해주셔서 죄송스러운 마음도 있었지만 이런 코드리뷰는 진짜 처음 받아봤어요ㅠ
앞선 경험을 통해 어느 정도 코드리뷰 달리는 것에 대해서는 극복하게 되었습니다. 극복 후 여러 PR들을 생성해 내면서 머지도 시키던 도중 같은 기능을 지원하지만 go 언어로 개발된 go-mysql 에 기여할 수 있는 기회가 생겼습니다
제가 기여했던 내용은 이벤트에 구현되어있지 않은 특정 데이터를 파싱 하는 로직을 만드는 거였습니다 개발 후 PR을 올렸고 테스트 코드를 요청하셔서 테스트 코드도 구현해서 comment를 남겼습니다
그 이후로 메인테이너의 코드리뷰가 있었습니다. 해당 프로젝트의 코드 스타일, 그리고 상수 값의 이름을 정의하여 같은 값을 사용하는 다른 데이터와 혼용하지 않도록 하는 방법 등 실무에서 쓰일 법한 코드스타일로 피드백을 주셨습니다.
그리고 마지막으로 아래의 이미지와 같은 comment를 남겨 주셨는데요. 궁금해서 찾아보니 ‘"Looks Good To Me"의 줄임말이다 2000년대부터 Google에서 시작된 코드 리뷰를 진행할 때 사용되었으며, 현재는 깃헙에서 코드 리뷰를 할 때 전 세계적으로 통용되는 약어로 사용되고 있다’라고 하더군요
LGTM은 아래와 같은 3가지 조건이 만족할 때 리뷰어가 작성해 주는 축약어라고 합니다
생각해 보면 3가지 항목에 따른 피드백을 받았습니다. 실제로 가독성과 이해용이성에 대한 부분이 메인테이너가 남겨주신 피드백에 담겨 있었기 때문이죠. 이렇게 또 좋은 경험을 하게 되는 계기였습니다.
앞선 두 가지 경험을 통해 트라우마 같던 코드리뷰에 대한 경험을 극복하게 된 것 같아 기분이 좋았습니다. 지금은 오히려 제 코드를 봐주시고 피드백을 주셨으면 하는 마음도 있네요 ㅎㅎ
LGTM의 조건처럼 지금은 개발할 때 3가지의 항목을 꼭 고려하면서 개발하게 되었습니다 제가 개발하려는 기능이 정확하고 개발의 이유를 이해할 수 있는지 그리고 가독성이 적절한 지 한번 더 검토하면서 개발하다 보니 변수와 함수 이름에 대해서도 조금 더 고민하고, 해당 기능을 개발하면서 깊은 고민을 통해 기능을 좀 더 세부적으로 나누어 개발의 타당성을 다른 사람들에게 이해시키려고 노력을 하는 등 여러 가지 고민을 더 할 수 있게 된 것 같습니다. 정말 뜻깊은 경험을 통해 많은 것을 얻어가는 것 같네요~