어느 날 팀 리더가 리팩토링 100일 챌린지를 선언했다. 100일간 매일 레거시 코드를 리팩토링하여 PR을 올릴테니, 하루라도 빠지면 잔소리하라는 말과 함께. '대단하시다. 힘들지 않을까?'하고 남 일처럼만 생각했던 나에게 리더가 남긴 PR과 커밋은 예상 외의 큰 선물이 되어주었다.
커밋은 알아보기 쉽게 작은 단위로, 명확한 이름과 숫자와 함께 남겨졌다. PR 한 개의 변경 크기는 대부분 200줄 이내였다.
거의 빨간펜 선생님의 학습지였다. 권유 한마디 없었지만 커밋을 보며 코드를 따라쳐보지 않을 수 없었다. 처음에는 필사하듯이 따라치며 리팩토링 순서를 대략 익히고, 리팩토링 되기 전으로 git reset을 했다. 다음에는 PR의 File Changed를 보고 똑같은 모양이 되도록 스스로 리팩토링을 해 보았다. 그리고 다시 리더가 남긴 커밋을 순서대로 보며 내가 한 리팩토링과 비교해보았다. 속도는 더뎠지만 책과 강의만으로는 얻을 수 없는 것을 얻었다. 운영 중인 서비스의 레거시 코드 리팩토링을 체득해볼 수 있는 경험을 돈 주고 살 수 있을까?
저녁을 먹고 코드를 따라 치던 어느 날 마치 페어 프로그래밍을 하고 있다는 느낌이 들었다. 몇 달, 몇 년간 쌓아올린 선배 개발자의 노하우를 몇 시간만에 배울 수 있다는 것은 페어 프로그래밍의 가장 큰 장점 중 하나이다. 그런데 퇴근 후 컴퓨터 앞에 혼자 있어도 페어 프로그래밍의 효과를 얻을 수 있는 것이다. 심지어 대면 페어 프로그래밍 보다 좋은 점도 많았다.
먼저, 커뮤니케이션의 어려움에서 오는 피로감을 줄일 수 있다. 페어 프로그래밍 초반엔 지식과 실력의 격차가 나는 상태에서 커뮤니케이션을 원활히 하기 위해 조율이 많이 필요하다. 주니어 개발자로서는 쇼미더머니에서 프리스타일 랩배틀을 하는 정도의 집중력과 순발력이 필요한 것처럼 느껴진다. 그리고 아무리 수평적인 조직이라도, 우리 나라의 문화적 특성상 연장자나 선배에게 마구 질문하기는 어렵다. 하지만 PR로 남긴 코드를 따라치는 것에는 이런 에너지 소모가 없다. 궁금한 점은 댓글로 남기거나 따로 정리한 상태에서 물어볼 수 있다.
그리고 지식 전파를 훨씬 광범위하게 할 수 있다. 여러 명 하는 몹프로그래밍도 인원은 제 시간에 참여할 수 있는 사람들로 한정된다. 하지만 PR과 커밋은 사내의 모든 개발자가 언제든지 볼 수 있다. 심지어 코드 작성자가 퇴사하더라도 PR은 남는다. 긍정적인 의미의 진정한 legacy가 되는 것이다.
차근차근 따라해볼 수 있는 친절한 학습지가 있다는 것은 개발자에게는 큰 복지이기도 하다. 만약에 지금 누군가 나에게 1억(ㅋㅋ)을 주고 이직을 제안한다면 가장 눈 앞에 아른거릴 것 중 하나가 바로 이 리팩토링 PR들이다. PR은 내가 회사에 있는 순간에만 볼 수 있기 때문이다. 돈을 아무리 준다고 해도 얻을 수 없는 학습 자료들이다.
물론 역량이 뛰어난 개발자가 존재해야한다는 점, 업무 시간에 하기 어렵다는 점, 자율적으로 학습하는 사람에게만 지식이 전파된다는 점의 제약 사항도 존재한다. 그럼에도 이러한 문화가 생긴다면 개발자 전체적으로 큰 이득을 얻을 수 있기 때문에 PR과 커밋을 통한, 시공간을 뛰어넘는 페어 프로그래밍을 시도하는 개발자들이 많이 생기길 바란다.
그걸 따라칠 정성이라면. 그 사람은 그 스스로 언제고 그렇게 될 운명이 아닌지...