소개

안녕하세요 우아한형제들에서 백엔드 개발자로 일하고 있는 강현구입니다.🙇‍
저는 개발 외에도 다른 일을 하고 있는데요, 바로 우아한테크코스(이하 우테코)에서 코드 리뷰어로 활동하고 있습니다.

코드 리뷰어는 우테코에 참여중인 크루(우테코는 교육생을 학생이 아닌 크루라 부릅니다)들이 미션 결과물로 작성한 코드를 리뷰하는 일을 합니다. 코드를 보고 개발 관련 가이드, 코칭 역할을 하는 것이죠.
현장의 개발팀에서 하는 코드 리뷰와 비슷하게 생각하면 됩니다. 다만 팀 코드 리뷰는 코딩 컨벤션을 맞추고 팀원 간에 책임과 지식을 공유하는 목적으로 진행하지만 우테코 코드 리뷰는 학습에 초점을 맞추고 있습니다.

어떻게 코드리뷰어로 활동하게 됐나요?

제가 코드리뷰어로 활동하게 된 계기는 자바지기라는 닉네임을 쓰는 박재성님이 개설한 클린 코드를 위한 TDD, 리팩토링 교육을 수강하면서입니다.

강의 주제도 관심이 갔지만 강의 소개에 나온 코드 리뷰에 대한 부분도 눈길을 끌더군요. 수강하면서 미션으로 작성한 코드를 초고수 개발자이신 박재성님께서 직접 코드 리뷰해주신다는 내용이었습니다.
평소 실무에서 테스트를 작성하고 객체지향적으로 개발하려고 노력해도 의문이 생기고 아쉬운 부분이 많았습니다. 테스트 코드를 작성하고 객체지향이 중요한 것은 책을 통해 알겠는데, 실제로 어떻게 코드로 작성해야될지 모르겠더라구요.
따로 배우고 연습할 수 있으면 좋겠다고 생각했었는데 마침 원하던 주제의 강의가 생겨 무척 만족스럽게 수강했던 기억이 나네요.

코드 리뷰어를 모집한다는 이야기는 강의가 끝나고 마지막 날 쫑파티(?)에서 박재성님께 들었습니다.
박재성님이 코드 리뷰를 해주시는 것처럼 다른 수강생들에게 코드 리뷰를 해줄 리뷰어를 모집하실 계획이라 하셨었죠.
그 이야기를 듣고 관심이 생기더군요. 제가 코드 리뷰를 통해 성장할 수 있었던 것처럼 다른 개발자들도 경험해보면 좋겠다고 생각했어요. 개발할 때 가지고 있었던 많은 의문점을 이 교육을 통해 해소할 수 있었거든요.
그래서 박재성님께 저도 참여하고 싶다고 적극적으로 말씀드렸고, 감사하게도 기회를 주셔서 우테코 코드 리뷰어로 참여하게 되었습니다.

구체적으로 코드 리뷰를 어떻게 하나요?

우테코 레벨1 과정에서 크루들은 매주 미션을 받게 됩니다. 미션은 github에서 진행합니다. 해당 미션을 시작할 수 있도록 준비된 레파지토리를 fork 받아서 각자 브랜치를 만들고 개발을 시작하죠.

미션은 각 단계별 목표가 있고 한 단계씩 구현이 끝날 때마다 구현한 코드를 github에 올리고 pr을 만들어서 담당 코드 리뷰어에게 리뷰 요청을 하게 됩니다. 요청을 받은 리뷰어는 github의 코드 리뷰 기능을 사용하여 피드백을 남기게 됩니다. 코딩 컨벤션은 물론 객체지향 생활 체조를 잘 지켰는지, 테스트 코드도 의미 있게 작성했는지 등등 꼼꼼하게 피드백을 남깁니다.

피드백을 남기고 코드 수정 요청을 보내면 리뷰이(reviewee, 리뷰 요청한 사람)가 확인해서 고쳐서 다시 코드 리뷰 요청을 합니다. 잘 반영되었다면 pr을 merge 처리하고 리뷰이는 다음 단계의 미션을 진행하게 됩니다. 리뷰이분들은 미션을 진행하면서 궁금한 점이 생기면 pr에 코멘트를 남기거나 슬랙을 통해 커뮤니케이션하므로 dm으로 질문 주시기도 합니다.

이 과정을 미션 마지막 단계까지 반복하면 미션이 끝나게 됩니다.

properties

코드 리뷰 사이클

리뷰어로 활동해보니 어떤가요?

처음에는 약간 가벼운 마음으로 시작했습니다. 제가 직접 강의를 준비하고 발표할 필요도 없고 github에서 진행되다보니 시간과 공간에 대한 제약이 없었거든요.
하지만 수강하는 분들 입장을 생각해보니 결코 가볍게 접근할 수 없더라고요. 리뷰받는 분들은 실무 경험이 있는 리뷰어의 코드리뷰라 기대가 상당히 클테니까요. 저도 취업준비생 때 도대체 실무에서는 코드를 어떻게 작성하고 구현하는지 무척 궁금했었거든요.
수강하는 분들은 귀중한 시간을 들여서 참여하는 만큼 성장에 확실한 도움이 되도록 지원해드려야겠죠. 시작할 때도 그렇고 지금도 많은 책임감을 느끼고 있습니다. 그 간절함을 알고 있으니깐요.

그리고 리뷰 활동을 하다보니 회사 업무를 볼 때와 다른 보람도 느끼게 되네요. 크루들의 첫 리뷰에는 대부분 피드백이 20~30개씩 달렸었는데 지금은 크루들의 실력이 월등히 좋아져서 피드백 갯수가 많이 줄었네요.
리뷰이들이 성장해가는 모습을 보면서 의미 있는 일을 하고 있구나라고 느끼기도 합니다. 코드 리뷰를 하면서 간접적이나마 좋은 개발자를 양성하는 일에 참여하면서 가치 있는 일을 하고 있다는 삶의 의미가 생기기도 하네요.
이외에도 약 반년정도 활동하면서 코드 리뷰어 활동을 다시 되돌아보니 처음 시작할 때는 기대하지 않았던 장점들이 몇 가지 있었습니다.

동반 성장

처음 리뷰어로 시작할 때는 코드 리뷰가 실력 향상에 도움이 될거라 생각하진 않았습니다. 단순히 다른 사람의 코드를 보는 것만으로 개발 실력이 늘지 않을테니깐요. 책을 단순히 많이 읽는다고 내 지식으로 쌓이는게 아닌 것처럼요.
하지만 책을 많이 읽다보면 자연스럽게 속독 스킬이 생기기도 합니다. 이미 내가 아는 내용과 구성이면 뇌에서 더 빠르게 처리할 수 있기 때문이죠.

재밌게도 리뷰를 위해 코드를 자주, 많이 읽다보니 다른 사람의 코드를 예전보다 더 빠르게 파악할 수 있게 되었습니다.
동일한 미션에 대해 5명의 개발자가 각자 구현한 코드를 피드백 하다보면 자연스럽게 꼼꼼히, 그리고 빠르게 읽는 연습이 되더군요.
리뷰어 활동 전에는 스프링 같은 오픈 소스 코드 읽기가 약간 부담스러웠는데 지금은 큰 어려움이 없습니다.

그리고 리뷰이가 질문하거나 작성한 코드에 피드백을 남기기 위해 내가 알고 있던 지식을 정리해보는 과정도 필요했습니다.
피드백을 남길 때 답을 알려주기보다 스스로 방법을 찾을 수 있도록 키워드를 남기거나 이런 방향으로 개발하면 어떨지 제안을 남깁니다. 이때 리뷰이가 좀 더 힌트를 요청하는 경우에는 문제를 해결할 방향을 잡을 수 있도록 설명을 첨부하기도 합니다.

코멘트만으로 남기기엔 분량이 많거나 더 읽어보면 좋을 내용이 있으면 관련 웹페이지 링크를 남기거나 책을 추천하기도 합니다. 레벨1 과정에서는 이펙티브 자바 3판을 정말 많이 추천했었습니다.
이렇게 답변을 남기기 전에 먼저 글을 읽어보고 검토하다보니 머릿속 정보들이 정리되면서 저에게도 많은 도움이 되더군요.

properties

최근 가장 기억에 남는 크루의 코멘트. 질문은 언제나 환영입니다!

미션 진행하느라 바빴을 텐데 피드백에 남긴 키워드를 공부하고 내용 정리한 코멘트가 무척 인상 깊었었습니다. 답변에 kingbbode님의 spring - open session in view 글을 참고했습니다. 답변 남기면서 많이 배웠네요 :)

경력+

코드 리뷰어로 활동한 이력도 제 경력에 포함된다고 생각하고 있습니다. 코드 리뷰어가 되려면 기본적으로 해당 강의를 수강해야 하고, 수강한 내용을 잘 이해하고 습득해서 다른 개발자에게 피드백 할 수 있어야하기 때문입니다.

물론 블로그 운영, 책쓰기, 번역, 세미나 발표도 훌륭한 활동입니다. 하지만 생각보다 많은 노력이 필요합니다. 프로그래밍 실력 외에도 글쓰기, 말하기 같은 추가적인 능력도 갖춰야합니다. 이에 비해 코드 리뷰는 개발자라는 직무와 연관성이 매우 높습니다. 평소에 일하면서 쌓인 경험과 학습했던 내용을 바탕으로 조언할 수 있어 진입장벽이 다른 활동에 비해 낮은 편이라 생각합니다. 개발은 평소에도 꾸준히 하고 있는 일이니까요!

그리고 코드 리뷰어라고 항상 피드백을 주는 입장은 아닙니다. 지속적으로 활동하려면 리뷰어도 꾸준히 학습해야 합니다.
수강생이 항상 주니어 개발자가 아니고, 제가 구현해보지 않은 어려운 미션에 대해 피드백을 남기기 정말 어려웠던 경험도 있었습니다. 가장 큰 목표는 자신의 성장이겠지만 당장 현실에서 내가 개발한 경험이 있는 내용을 바탕으로 리뷰하기라는 구체적인 목표를 세울 수 있습니다. 학습을 위해 개발한 코드들은 제 포트폴리오가 될테고 여러모로 경력에도 도움되는 활동이라 느꼈습니다.

properties

리뷰어도 학습이 필요합니다!

개발자, 회사 다니면서 투잡하기

좀 더 현실적이면서 많은 분들이 관심 가질만한 좋은 점도 있습니다. 바로 보상을 받는다는 점입니다.
가끔은 투잡이나 창업에 대해 생각해보기도 합니다. 경제적인 이유도 있고 나만의 서비스를 만들어 보고 싶기도 합니다. 하지만 회사를 다니면서 도전하기 쉽지 않고 많은 에너지가 필요한 일들입니다. 저도 상상은 많이 해봤지만 실천은 쉽지 않더군요.

사실 돈을 더 벌기 위한 일을 한다면 내 직무를 살려서 일을 할 필요는 없습니다. 개발 말고 다른 일을 해도 돈은 벌 수 있습니다.
회사 밖에서도 개발을 하려는 건 프로그래밍이라는 일이 재밌고 가치 있다고 생각해서입니다. 프로그래밍이라는 재밌는 일을 하면서 성장하고 그에 따른 보상을 받는 것처럼 보람찬 일도 많지 않은 것 같습니다. 그것도 회사 업무 외에 다른 일로 말이죠.

그리고 실제적인 보상이 있다는 건 내 리뷰가 실제 가치가 있다는 사실을 인정 받은 증거입니다. 가치가 없으면 비용을 지급할 이유가 없겠죠. 지난 몇 개월 간 리뷰어 활동을 하면서 내 실력이 인정 받고 있다고 느꼈고 제 실력에 대한 자신감이 생겼습니다.

마무리

제가 코드 리뷰어에 대한 경험을 공유하는 이유는 간단합니다. 프로그래밍 실력을 쌓을 수 있는 가장 확실한 방법이고, 이런 방식의 교육이 더 많아지면 좋겠다고 생각했기 때문입니다.
좋은 점만 나열했지만 피드백을 남기기 위한 시간과 노력도 당연히 어느 정도는 필요합니다. 회사에서 하루종일 코드를 보고 퇴근해서 또 코드를 보는게 확실히 쉬운 일은 아닙니다. 하지만 그 노력만큼 내 실력과 경력에 도움이 되고 추가로 보상도 있다면 충분히 할 만한 일 아닐까요? (그리고 월급 앞자리가 바뀌는 기적을 맛보게 됩니다!)

제 글을 읽고 코드 리뷰어에 관심이 생기신 분들은 next step에서 강의가 열리면 수강하시면서 코드 리뷰를 직접 경험해보셔도 좋을 것 같습니다! 그리고 다른 코드 리뷰어(ssosso, jojoldu)의 회고도 있으니 같이 보시면 좋겠네요 :)
코드 리뷰어 활동은 우아한형제들 소속이 아니어도 가능합니다.
이상 코드 리뷰어 경험기였습니다. 읽어주셔서 감사합니다 ‍🙇‍