코드 리뷰에서 감정을 분리하는 법
내 코드에 달린 리뷰 코멘트를 보면 왜 심장이 뛰는 걸까. 코드 리뷰와 감정 사이의 거리에 대하여.
빨간 줄, Request Changes
PR을 올리고 10분 뒤에 슬랙 알림이 울렸다.
리뷰어가 코멘트를 남겼다. 심장이 살짝 빨라진다. 클릭하기도 전에 이미 방어 태세가 갖춰져 있다. 이게 뭔 반사신경인지. 깃허브를 열었다. 빨간 줄. Request Changes.
순간 머릿속에 떠오르는 생각: "이 사람 내 코드 뭐가 마음에 안 드는 거지?"
코드에 대한 피드백인 걸 머리로는 안다. 근데 가슴이 먼저 반응한다. 주니어 때는 이게 더 심했다. "이 변수명 바꿔주세요"가 "당신은 아직 부족해요"로 들렸다. 코드 한 줄에 자존감이 묶여 있던 시절이었으니까.
내 코드가 아니라 팀의 코드라는 것
몇 년의 시행착오 끝에 터득한 게 있다.
리뷰 코멘트를 받으면 15분 뒤에 읽는다. 즉시 읽으면 방어적으로 반응하기 쉽다. 커피 한 잔 타와서 읽으면 좀 다르다. 감정이 필터링되는 느낌. (이게 진짜 되는지는 매번 다르긴 한데.)
그리고 "내 코드"라고 생각하지 않으려고 한다. 머지되면 어차피 팀의 코드다. 나는 초안을 쓴 거고, 리뷰어는 교정을 본 거다. 작가와 편집자의 관계랄까. 이렇게 생각하면 좀 편하다. 좀.
리뷰어의 의도를 먼저 생각하려고도 한다. "왜 이렇게 썼어?"가 비난이 아니라 진짜 궁금해서일 수 있다. 텍스트에는 어조가 없으니까. 근데 이걸 매번 실천하기가 쉽지 않다.
리뷰를 하는 쪽도 힘들다
반대로 내가 리뷰를 할 때도 고민이 많다.
직설적으로 쓰면 차갑게 느껴지고, 돌려 쓰면 요점이 흐려진다. "이건 좀..." 하고 말끝을 흐리는 것도 어색하고, "이렇게 하면 어떨까요? ^^" 하고 이모티콘을 붙이는 것도 어색하다. 도대체 어떻게 써야 하는 건지.
"이 코드는 복잡하다"와 "당신이 복잡하게 짰다"는 같은 뜻인데 받아들이는 온도가 전혀 다르다. 주어를 바꾸는 것만으로도 같은 피드백이 건설적으로 바뀐다는 건 아는데, 급하면 까먹는다.
코멘트 20개를 받은 날
가장 기억에 남는 리뷰는 시니어한테 받은 거였다.
코멘트가 20개였다. 처음엔 숨이 막혔다. 아 이거 다 고치려면 얼마나 걸리지. 근데 하나하나 읽어보니까 모든 코멘트에 "왜"가 적혀 있었다. 단순한 지적이 아니라 배경 지식과 대안이 같이 있었다.
그날 PR 하나로 세 달치 공부를 한 기분이었다. 리뷰 잘하는 사람은 진짜 따로 있구나 싶었다.
팀마다 리뷰 문화가 다른 것도 많이 느꼈다. 어떤 팀은 리뷰가 학습의 장인데, 어떤 팀은 자존심 싸움이다. 차이를 만드는 건 기술이 아니라 신뢰다. 서로 존중한다는 전제가 있어야 솔직한 피드백이 공격이 아닌 선의로 받아들여진다.
0.5초의 간격
솔직히 지금도 Request Changes 보면 0.5초쯤 심장이 뛴다.
완전히 감정을 분리하는 건 아마 불가능하다. 코드에 감정이 실리는 건, 그만큼 이 일에 진심이라는 뜻이니까. 그게 나쁜 건 아닌 것 같다.
다만 0.5초 뒤에 숨을 한 번 쉬고, 이건 나에 대한 이야기가 아니라 코드에 대한 이야기라고 되뇐다. 그리고 리뷰를 다시 읽는다.
이게 매번 되느냐고 묻는다면. (아직도 모르겠다.)