“소프트웨어를 유지보수하는 조직에서 코드 한 줄을 변경한다고 했을 때, 코드리뷰가 도입되기 전에는 그러한 변경의 55% 정도가 문제를 일으켰다. 그러나 리뷰 과정이 도입된 이후에는 그러한 변경의 2% 정도에서만 문제가 발생했다.” - 코드 컴플릿, 스티브 맥코넬
생각해보면 첫 회사를 제외한 모든회사에서 형식적이지 않지만 코드리뷰를 어떤 형태이든 계속 진행 해왔었다. 그 회사들중 이전 회사에서 매주 수요일 코드리뷰를 각잡고 진행 해본 경험이 있엇는데...ㅠㅠ
그때 코드리뷰는 매주 5명이 날 단두대에서 시험하는ㅠㅠ 살얼음판을 걷는 경험있었다.
그 당시 코드리뷰는 매주 목요일 2시부터 ~ 3시 한 주 동안 내가 작성한 코드를 일일이 까보면서 5명의 꼰대 개발자들이 하나하나씩 파해쳐 갔다ㅠ
그 기분은 마치 정말 명동 거리에서 속옷 하나도 안입고 모든 사람들이 날 쳐다보는 느낌이였을까?
물론 그렇게 하나 하나 보면서 코칭해주면 실력은 늘겠지만 가장 싫었던거는 그 5명의 개발자들의 태도였다.
가장 많이 들었던 소리는 "응~ 남대리 그거 아니야~", "응 남대리 너 코드만 이상해"
충격적이겠지만 한꼰대는 정말 출신 대학교 가지고 너희 학교애들은 쓰레기야 매일 하루에 한번씩 들었다ㅎㅎㅎ
물론 내가 개발적 항상 부족한 사람이기에 절대적으로 잘했다고 볼 수 없지만. 매일 저런 소리를 들으니 있던 내 자신감도 자존감도 하락세를 걷다 못해 내가 개발자를 꼭해야 하나 싶은 생각이 마구마구들었다.
- 당신이 실수 할 것이라는 것을 이해하고 받아들여라
우리는 완변한 존재, 사람이 아니기 때문에 누구나 다 실수 한다. 그런 그 실수 들이
제품이 출시 되기 전이나 배포 되기전 그 실수가 일찍 찾아내는 것이다.
그러니 우리는 배우고, 웃으며 털어버리고, 받아들이고 나아 가야한다.
- 당신과 당신의 코드를 동일시하지 마라
코드리부에서 중점은 코드의 문제를 찾아가는것이지 당신에게! 너를위해 인신공격하는것은 아니다.
그 문제들에 대해서 발견해서 찾는 것이니 개인적인 공격으로 받아 들여서는 안된다.
(설사 인신공격은 절대적으로 하지 말아야 한다.)
- 당신이 얼마나 많은 무공을 알고 있든지 간에, 누군가는 더 많은 것을 알고 있다.
그런 사람들은 만약 당신이 부탁한다면 새로운 무공을 가르쳐 줄 것이다. 그것들이 필요 없다고 느껴지는 때일 수록, 다른 사람들 부터 피드백을 찾고 또 받아 들여라.
- 협의 없이 코드를 다시 만들지 마라
코드를 고치는 것과 코드를 다시 만드는 것에는 미세한 차이가 있다. 그 차이를 알고, 코드리부의 과정에서 스타일을 지켜가는 체인지를 만들도록 노력해야한다. 독불장군은 곤란한다.
- 자신보다 많이 알지 못하는 사람이라 해도 존경과 인내로 대하라.
개발자를 상대하는 일반의 non technical 한 사람들은 개발자들이 잘되면 프리마돈나이지만, 최악의 경우엔 떼쟁이 아기라는 의견을 가지고 있다. 분노와 조급함으로 인해 이런 편견이 굳어지도록 하지 말자.
- 이 세상에 존재하는 유일한 고정 값은 “변화” 그 자체이다.
열린 마음으로 미소를 지으며 변화를 받아들이자. 요구사항, 플랫폼, 새로운 도구들은 싸워 없애야하는 불편함이 아니라 새로운 도전으로 바라보자.
- 지위가 아니라 지식이야 말로 권위를 만드는 유일한 그거이다.
지식은 권위를 낳고, 권위는 존경을 낳는다. Egoless 한 방법에 대한 존중을 받고자 한다면, 지식을 쌓아가라.
- 당신이 믿는 것을 위해 투쟁하라. 하지만 패배는 겸허히 받아들여라.
때때로 당신의 생각들이 기각될 수 있다는 걸 이해해라. 나중에 당신이 옳았다고 밝혀지더라도, 복수를 하려 하거나 '거 보시오 내가 뭐랬소' 라고 한 두번 이상 말하지 말아라. 아쉽겠지만 기각된 당신의 아이디어를 순교자처럼 취급하거나, 슬로건처럼 쓰는 일이 없도록 하라.
- 방안에 박혀 혼자 있는 사람이 되지 마라.
자기 방에서만 혼자 코딩하다가 콜라가 필요해 잠깐 나타나는 그런 사람이 되지 마라. 방 안에서 혼자 코딩하는 사람은 연락하기도 어렵고, 잘 보이지도 않고, 통제 불능이다. 열려있고, collaborative 한 환경이 아니다.
- 사람보다 코드 그 자체를 비판하라.
코드가 아닌 코드를 작성한 사람에게 친절하라. 가능한한, 당신의 모든 리뷰 코멘트를 긍정적인 방향으로 코드 개선에 중점을 두고 이야기하라. 코멘트를 팀의 표준, 프로그램의 스펙, 나아진 성능등과 연결지어 얘기하라.