어디까지나 픽션입니다.

어디까지나 픽션입니다.

들어가며

안녕하세요! 아이들나라 백엔드팀 최현구입니다. 여러분은 혹시 위 그림과 같은 상황을 겪어보신 적 있으신가요? 재미로 만든 그림이지만, 사내 적극적인 코드 리뷰 문화가 정착되지 않았다면 언제든지 발생할 수 있는 일이라고 생각합니다. 이번 글에서는 아이들나라에서 적극적인 코드 리뷰 문화를 만들기 위해 특별한 스터디를 도입해 본 경험을 공유합니다.

현재 아이들나라에서는 수십 명의 개발자들이 고객분들께 더 멋진 키즈 서비스를 제공하기 위해 고군분투하고 있습니다. 그중에서 백엔드팀은 아이들나라에 필요한 도메인(회원구독, 주문배송, 전시편성, 교육, 컨텐츠 관리, 데이터 등)별로 파트가 나뉘어 있습니다.

Untitled

각 파트가 나뉘어 있을 때 누릴 수 있는 가장 큰 장점은 도메인 전문화입니다. 각 파트원들은 빠른 시일 내에 도메인에 특화될 수 있고, 도메인에 어울리는 기술 스택을 학습하고 공유할 수 있습니다. 특정 도메인에 대한 경험과 지식이 늘어가기 때문에 비 개발직군의 도메인 전문가와 의사소통도 굉장히 유리해집니다. 특화되는 만큼 성숙하고 고도화된 아이들나라 서비스를 신속하게 만들 수 있습니다.

그러나 서로 다른 파트에 속한 백엔드 개발자 간 교류는 점차 줄어들게 됩니다. 각자의 도메인 지식을 익히는 것에 바빠 다른 파트 도메인에 관심을 갖기 어렵고, 도메인 별로 프로젝트가 나뉘어 서로 다른 깃허브 저장소를 다르게 갖기 때문에 서로의 코드를 마주하기도 쉽지 않습니다. 이 때문에 개발자마다의 코드 리뷰 경험도 달라질 수밖에 없습니다. 내부에서 적극적으로 코드 리뷰가 이루어지는 파트도 존재하지만, 비교적 소극적인 파트도 분명 존재하기 마련입니다. 경험이 많지 않은 개발자들로 이루어진 파트에서는 서로 어떤 코드가 더 나은 코드인지 이야기 나누기 어렵습니다.

적극적인 코드 리뷰는 왜 중요할까요? 코드 리뷰 과정에서 자연스레 동료 개발자의 노하우를 획득할 수 있고, 프로젝트 구조와 맥락을 자연스럽게 공유함으로써 이해도와 업무 연속성을 높일 수 있습니다. 또한 자신의 작업 내용이나 동료의 작업 내용을 인지하면서 코드 품질과 안정감 향상을 기대할 수 있습니다.

저는 아이들나라 팀 전반에서 적극적이고 유기적인 코드 리뷰 문화가 강화되길 기대했습니다. 각자의 전문화된 도메인을 모두 파악하기 어렵지만, 어떤 코드가 읽기 좋은 코드인지, 어떤 아키텍처가 유지보수하기 쉬운 아키텍처인지는 도메인과 상관없이 개발자 모두가 공통으로 이해하고 리뷰하는 데 절대 어려움이 없다고 생각합니다. 때문에 코드 리뷰를 재밌는 놀이로 느끼고, 서로의 깃허브 저장소를 구경하며 자연스럽게 코멘트를 남기는 분위기를 조성하고 싶었습니다.

그렇다면 어떻게 팀원들을 설득하고 적극적인 코드 리뷰 문화를 만들 수 있을까요?

동료 개발자를 설득하는 가장 쉽고 강력한 방법

항상 새로운 아이디어를 제안할 때에는 타인의 공감과 이해가 필요합니다. 그 아이디어가 갖는 효과, 효능을 따져보는 것도 중요하지만 내 의견이 합리적인지, 내 제안이 타인에게 어떻게 받아들여질 지 충분히 고민해 보는 것이 더욱 중요합니다.

사람은 무언가를 판단할 때 의외로 자주 비합리적인 추론을 베이스로 판단하는데, 이를 인지 심리학에서는 인지편향이라고 합니다. 그리고 제안하는 쪽에서는 흔히 **확증편향(Confirmation bias)**을 겪게 됩니다. 자신이 합리적인 이유로 해당 아이디어를 제시했다고 생각하지만, 실제로는 자신이 익숙하거나 ‘오래전부터 꼭 해보고 싶었어.' 와 같은 편향된 생각 때문에 아이디어를 제시할 수도 있습니다.

확증 편향(Confirmation bias)은 원래 가지고 있는 생각이나 신념을 확인하려는 경향성이다. 흔히 하는 말로 “사람은 보고 싶은 것만 본다”와 같은 것이 바로 확증 편향이다. 확증 편향은 자신의 믿음에 대해 근거 없는 과신을 갖게 한다. 사람들은 자신의 정치적 지향과 다른 사실에 대해 불신하며, 과학적 사실에 반해 자신의 믿음을 고수하려 하기도 한다. 반면, 자신의 신념에 유용하다고 여겨지는 정보는 적극적으로 받아들인다.

확증 편향