오픈소스에서 코드리뷰 당하기 (코드리뷰 PTSD 극복하기)

Chungeun Choi·2023년 9월 29일
0

오픈소스

목록 보기
4/7

저번 게시글에 이어서 오픈소스 프로젝트 기여를 하면서 경험을 한 가지 더 공유해보려고 합니다.

이번에는 코드리뷰에 대한 내용인데요. OSSCA(오픈소스 컨트리뷰션 아카데미)에 참여하면서 멘토님에게 받은 경험, go-mysql 프로젝트에 참여하면서 메인테이너에게 받은 경험을 공유하고자 합니다~

아 그리고 필자는 해당 경험 이전에는 제대로 된 코드리뷰를 받아본 적 이 없습니다(받아봤는데 이유 없이 까여서 그날 까인 부분 수정하는 꿈 꿨습니다….)

코드리뷰…당하다


앞서 말했다시피 제가 직장 다닐 때 받았던 코드리뷰라기보다는 까였다라는 표현이 강했습니다… 어떻게 구현했는지 열심히 설명했지만 어떤 이유에서 제 코드가 좋지 않은 코드인지 지도받지 못했고 말은 순화되었지만 제 코드는 무작정 상품성이 떨어진다를 돌려 말씀하시는 게 느껴졌습니다(물론 제가 부족했던 것 같아요)

그런 배경이 있는 상태에서 덜컥 코드 리뷰를 받아(당했다?라는 표현이 맞는 듯) 보게 되었습니다.

저희 활동은 2가지의 목표를 가지고 있었는데 그중 제일 첫 번째 목표인 ‘미구현 이벤트 개발’ 항목이 존재하였습니다. 2주 차 정도 모임이 진행되었을 때 저는 이벤트 구현을 개인별로 해야 되는 줄 알고 덜컥해서 멘토님께 보여드렸습니다.

그렇게 PR을 올렸더니 멘토님이 다음날 멘토님 카톡이 왔습니다.

처음에 코드리뷰 달아주셨다는 카톡을 받고 솔직히 걱정이 심했습니다. 또 까이는 걸까 싶기도 하고… 오늘도 수정하는 꿈 꾸겠네 하면서 말이죠….

근데 너무 순한 맛이길래 다른 의미로 당황한 기억이 나네요. 잘못된 지점은 확실하게 어떠한 부분인지 잡아주시고 어떠한 순서로 진행하면 되는지까지 다 적어주셨습니다.

진짜 마음이 편안해지는 코드리뷰였습니다. 사실 다 떠먹여 주시듯이 해주셔서 죄송스러운 마음도 있었지만 이런 코드리뷰는 진짜 처음 받아봤어요ㅠ


LGTM?


앞선 경험을 통해 어느 정도 코드리뷰 달리는 것에 대해서는 극복하게 되었습니다. 극복 후 여러 PR들을 생성해 내면서 머지도 시키던 도중 같은 기능을 지원하지만 go 언어로 개발된 go-mysql 에 기여할 수 있는 기회가 생겼습니다

제가 기여했던 내용은 이벤트에 구현되어있지 않은 특정 데이터를 파싱 하는 로직을 만드는 거였습니다 개발 후 PR을 올렸고 테스트 코드를 요청하셔서 테스트 코드도 구현해서 comment를 남겼습니다

그 이후로 메인테이너의 코드리뷰가 있었습니다. 해당 프로젝트의 코드 스타일, 그리고 상수 값의 이름을 정의하여 같은 값을 사용하는 다른 데이터와 혼용하지 않도록 하는 방법 등 실무에서 쓰일 법한 코드스타일로 피드백을 주셨습니다.

그리고 마지막으로 아래의 이미지와 같은 comment를 남겨 주셨는데요. 궁금해서 찾아보니 ‘"Looks Good To Me"의 줄임말이다 2000년대부터 Google에서 시작된 코드 리뷰를 진행할 때 사용되었으며, 현재는 깃헙에서 코드 리뷰를 할 때 전 세계적으로 통용되는 약어로 사용되고 있다’라고 하더군요

LGTM은 아래와 같은 3가지 조건이 만족할 때 리뷰어가 작성해 주는 축약어라고 합니다

  1. 다른 엔지니어로부터 정확성(correctness)과 이해 용이성(comprehension)을 평가
  2. 코드 영역을 관리하는 코드 소유자로부터 변경 코드가 적절하다
  3. 누군가로부터 ‘가독성’ 적절 판단

생각해 보면 3가지 항목에 따른 피드백을 받았습니다. 실제로 가독성과 이해용이성에 대한 부분이 메인테이너가 남겨주신 피드백에 담겨 있었기 때문이죠. 이렇게 또 좋은 경험을 하게 되는 계기였습니다.

후기

앞선 두 가지 경험을 통해 트라우마 같던 코드리뷰에 대한 경험을 극복하게 된 것 같아 기분이 좋았습니다. 지금은 오히려 제 코드를 봐주시고 피드백을 주셨으면 하는 마음도 있네요 ㅎㅎ

LGTM의 조건처럼 지금은 개발할 때 3가지의 항목을 꼭 고려하면서 개발하게 되었습니다 제가 개발하려는 기능이 정확하고 개발의 이유를 이해할 수 있는지 그리고 가독성이 적절한 지 한번 더 검토하면서 개발하다 보니 변수와 함수 이름에 대해서도 조금 더 고민하고, 해당 기능을 개발하면서 깊은 고민을 통해 기능을 좀 더 세부적으로 나누어 개발의 타당성을 다른 사람들에게 이해시키려고 노력을 하는 등 여러 가지 고민을 더 할 수 있게 된 것 같습니다. 정말 뜻깊은 경험을 통해 많은 것을 얻어가는 것 같네요~

profile
소프트웨어 엔지니어 최충은입니다

0개의 댓글