코드리뷰에 시간을 투자하라.

얼마전에 작년 4/4분기에 만든 코드를 리뷰 받느라 거의 3주의 시간을 쏟느라 고생을 좀 했는데, 이와 관련해서 정리를 해보고자 한다.
내일 물론 이 코드리뷰 과정에 대해서 팀 미팅 시간에 이야기를 할 기회가 있을거 같기도 하고 그렇다.

먼저 내 코드를 리뷰한다고 한다면 가장 먼저 드는 생각이, 뭔가 발가벋겨 진다는 생각일 것이다.. 아무리 코드를 잘 짠다고 하더라도 리뷰(검사)를 받는다는 것 자체가 그리 기분좋은 일은 아니다.
그렇지만 좀 쪽팔리더라도 정말 이 과정에서 배울게 너무도 많다는 것은 부정할 수 없다. .

내가 몸 담고 프로젝트의 코드 생산은 아래의 과정을 통하게 된다. .

1. 논문, 그리고 알고리즘을 리서치하고 이에 따른 다양한 시도를 한다.  그리고 이들을 평가하기 위한 퍼포먼스 테스트와 이들 결과가 좋다면 이들을 일주일에 한번정도 공유하는 자리를 가지게 된다.
2. 공유하는 자리에서 팀원들의 의견을 가미해 가면서 점점 퍼포먼스를 올리게 된다.
3. 이런 과정에서 꽤 좋은 퍼포먼스를 얻었다는 판단이 들면, 이를 코드 커밋을 하게 되는데, 이 전에 코드의 대부분의 핵심 알고리즘과 유닛테스트 코드가 이미 완성이 되어 있어야 한다. 나의 경우에는 거의 누더기 같은 코드로 결과만을 보기 위해 작성했다가 추후 고치는데 시간이 더 걸린 경험도 해봤다.  아마 능숙한 사람은 이미 이 단계에서 완성도 높은 코드를 가지고 있을 것이다.
4. 누구한테는 공포의 코드리뷰가 되는 단계다.
5. 그리고 영광의 코드 커밋..

대충 이런 개발단계를 거치게 되는데, 개인적으로 혹독한 코드리뷰를 통해 상당히 코드의 품질을 올릴 수 있었다고 나 자신이 느끼고 있다. 게다가, 다른 사람들의 조언을 듣게되면서 여러 코딩팁이나 핵심 노하우 등을 얻을 수 있었다.
조심성 있는 우리 팀분들은, 코드의 의미가 간단 명료하기를 원한다. 그리고 변수명에 이들의 역할과 의미가 함축되어 표현되기를 바라고 있다. 게다가 쓸데없는 코드를 더더욱이 싫어하며, 제일 싫어하는건 코드에 버그를 야기할 가능성이 있을 때 이다.
뭐 이정도를 지적받았다. ㅜㅜ

C++ 코딩의 정석“에 나온 코드리뷰의 잇점을 좀더 써보자면….

1. 여러 동료들의 조언을 통해 코드의 질을 높일 수 있다.
2. 버그를 찾아내고, 적절하지 않은 부분이나 호환/확장성 문제를 찾아낼 수 있다.
3. 아이디어를 공유하는 과정에서 보다 나은 디자인을 찾아낼 수 있다.
4. 새로운 팀 동료나 아직 코드에 익숙하지 않은 사람은 보다 빨리 팀의 업무에 익숙해질 수 있다.
5. 팀의 커뮤니티에 도움을 주며, 일관된 목표를 향해 나아갈 수 있게끔 해준다.
6. 서로에 대한 신뢰, 동기 부여, 전문성 확보에 도움이 된다.

나의 입장에서 가장 공감이 가는 부분은 4번이다. 이처럼 대규모의 C++ 프로젝트를 처음 해보는 나로서는 이 코드리뷰를 통해서 무엇보다 소중하고 책에서 결코 얻을 수 없는 노하우를 얻고 있다. 그것도 C++ 베테랑들로부터 말이다.

어쩌면 이 코드리뷰 전 과정이 팀의 상향 평준화를 이루는 첨병역할을 하지 않나 싶다.

흥미로운 사실은, 코드리뷰를 받는 나에게만 이 시간 할당을 해주는게 아니라, 리뷰를 해주는 리뷰어들에게 까지 리뷰에 대한 시간 할당을 해준다는 사실이였다. 리뷰는 시간 날때 해주는것이 아닌, 프로젝트의 한과정으로 여기는 이런 개발문화를 배워야 할거란 생각이 든다. 이런 문화에서의 코드 한줄 한줄이 에플리케이션의 완성도와 안정성을 보장해 준다고 생각한다. 

요런 저런 개발 프로세스와 문화를 경험하다보니, 특정 개발 프로젝트를 바라보는 관점이 많이 변하게 되었다. 예전에는 그 프로젝트에 어떤 능력있는 사람이 있나 없나를 보고 에플리케이션의 미래를 첨쳤다고 한다면, 지금은 프로젝트의 개발 문화를 더 보게 되었다. 정말 잘 만들어진 에플리케이션은 특출난 몇명의 개발자들이 만드는게 아니라 아주 잘 다듬어진 개발문화를 갖춘 조직에서 나온다는 사실을 직접 몸소 경험하고 있는 중이다.

0 0 votes
Article Rating
Subscribe
Notify of
guest

15 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
LiFiDeA

상당히 바람직한 개발 문화네요… 우리나라 회사 중 이정도의 프로세스를 갖춘 조직이 얼마나 될지…

고감자

저도 상당히 궁금한 부분입니다면, 하지만 저의 경험을 빗대에 말씀 드리면 거의 없지 않을까 합니다.

코드리뷰나 여러 개발 문화 국내 도입의 가장 큰 장애물은 저런 개발문화를 경험하지 못하거나 효과를 등한시 하는 개발팀장님들이지 않을까 조심스럽게 예상해 봅니다.

사실 저런걸 책에서 보고 피상적으로 적용해보는 것으로 효과를 보기기 힘든게 사실이구요. 직접 말단에서 저런 문화를 프로젝트로 경험해본 사람들만이 진가를 알게 됩다는 거죠. 그런 사람들이 다시 고수가 되고 이를 다시 후배 개발자들에게 물려주면서 진정 문화로 발현이 된다고 생각합니다.

그런면에서 저는 해외에서 개발경험이 있는 많은 개발자 분들이 국내로 들어와 저런 개발 문화를 일궈야 한다고 생각합니다. 하지만 이마저도 힘든게, 외국 나간 분들은 절대 국내에 안들어 오려고 한다는 거죠.

sloth

coders at work를 보면은 야후의 더글라스크락포드 아저씨가 미팅에서의 코드리딩 (사실상 코드리뷰)의 장점에 대해서 역설하더군요,,,,,

덧글: 혹시 제기억이 아닌가해서 댓글을 수정했는데 본사분들이랑 일하셨군요^^

고감자

엄밀히 말하자면 야후 본사 분들입니다.

스말러

역시 야후는 매력적이고 대단한 개발문화를 지닌 조직인 것 같아요~

고감자

네, 야후 정말 대단한 회사죠!

구글도 위와 같은 개발문화를 가지고 있는 걸로 알고 있는데, 어떻게 하고 있는지 경험자 분들의 의견을 듣고 싶다는 생각이 듭니다.
그리고 국내 기업중에서도 네이버가 위와 같은 제도를 운영하고 있는걸로 아는데, 네이버의 경험담을 듣고 싶다는 생각도 드네요.

ps. 결혼준비 잘 되가시죠?

전창민

야후에 입사하고 싶어지네요 ^^ 개발자라면 죽기전에 제대로 된 개발문화 한번 접해 봐야 하지 않을까요 ?
야후 개발자 입사 자격, 면접 과정에 대해 좀 알고 싶습니다. 실례가 안된다면 부탁드려도 될까요 ? ^^
제 이메일 주소입니다. jcm1981@gmail.com

고감자

메일 드렸습니다.

스말러

이제 귀국하면 바뿌게 결혼 준비를 해야할거같아요 ^^;
지금은 식장만 결정된 상태랍니다.
시간 되시면 꼭 와주시면 감사하겠습니다. ㅋㅋㅋㅋㅋ
3월 초에 인사도 드릴겸 청첩장 들고 야후에 방문하려고 하는데,
느닷없이 청접장 들고 가는게 쪼금 그런가요?? ㅎㅎㅎㅎ

고감자

오세요… 다들 좋아하실 겁니다. ㅋ

charsyam

팀마다 다른긴 하겠지만, 고감자님 얘기만 들어보면, 아직 네이버의 코드리뷰 문화는 야후보다 못합니다. 아직까지는 시행착오단계인것 같네요. 전사적으로 코드리뷰 뿐만 아니라 QP 활동 자체에 신경을 쓰는 분위기로 바뀌는 것 같기는 한데, 시간이 더 지나야 할것 같네요.

고감자

좋은 말씀 감사드립니다.

코드리뷰는 문화라고 말씀 드렸는데요.
그 문화는 하루아침에 만들어 지는것이 아니겠죠. 그래도 전사적으로 그렇게 꾸준히 시행하다 보면 앞으로 좋은 효과가 나오지 않을까 하고 생각합니다.

근데, 우리나라 개발자 커리어 패스를 보면 10년 이상의 개발자가 나오기 힘든 구조인데, 이런 코드리뷰 문화가 품질좋게 유지되기 위해서는 노하우나 실력이 있는 고수 개발자들이 많아야 할거라는 생각을 해봅니다.
고만고만한 사람들끼리 리뷰해서는 고작 고만고만한 코드가 나오기 나름이라…서로 발전이 별로 없겠죠…

전창민

정말 갚진 경험 하셨네요..
한마디로 부럽습니다.
제가 몸담고 있는 회사는 문제자체 리뷰만 하지 코드 리뷰는 하지 않거든요.

고감자

아쉽지만, 대부분 회사가 그렇습니다.

이런 문화는 개발팀장님들이 만들어줘야 하는데.. 팀장님들도 이 문화의 필요성을 아시는 분들이 그리 많지 않을 뿐더러, 우리 나라 회사들은 비즈니스 니즈를 따르기 너무 바쁜 환경에 노출되어 있죠. 그래서 이렇게 할 여유가 없을 뿐이죠.

trackback

개발과 연구, 개발자와 연구자 어린 시절 나는 찰흙을 가지고 무언가 만드느라 시간이 가는줄도 몰랐었다. 지금 생각하면 웃음이 나오는 일이지만, 신문과 TV에 나오는 각종 신기한 물건을 찰흙으로 만들어 나만의 세상을 만들고 스스로 조물주인양 흐뭇했었던 모양이다. 대학시절 전공했던 전자공학 대신 컴퓨터 관련 수업에 더 빠져들었던 것은 그때의 아련한 추억이 떠올라서였을까. 늘 물리법칙에 구속을 받는 전자공학과는 달리 컴퓨터는 프로그래머가 어떤 법칙에도 구..