Skip to content
Jacob's second brain 탐색
어느 개발자의 인문학 · 6 / 7화

code review - 함께 더 나은 곳으로 가자

6 min read

회의실에서 이런 경험을 해본 적이 있을 것입니다. 분명 더 나은 방법이 떠올랐는데, 그 말을 꺼내려다 삼킨 경험 말입니다. 말하려는 상대가 나보다 윗사람이거나, 그 일을 오래 해온 사람이거나, 목소리가 큰 사람일 때 우리는 종종 입을 다뭅니다. 괜히 분위기를 흐리고 싶지 않고, 그의 기분을 상하게 하고 싶지 않고, 무엇보다 “네가 뭘 안다고”라는 무언의 시선이 두렵기 때문입니다. 그렇게 더 나은 길은 누구의 입에서도 나오지 못한 채 묻힙니다.

그런데 개발자들의 일하는 방식 중에는, 바로 이 묻히는 말을 제도적으로 꺼내게 만드는 장치가 있습니다. ‘코드 리뷰(code review)‘라 불리는 것입니다.

신입도 선배의 코드에 의견을 낸다

코드 리뷰란, 한 개발자가 작성한 코드를 다른 개발자가 찬찬히 검토해보고 의견을 다는 과정입니다. 새로 쓴 코드를 곧장 반영하지 않고, 동료가 먼저 읽어보며 “여기는 이렇게 하면 더 낫지 않을까요?”, “이 부분은 이런 경우에 문제가 될 것 같은데요” 하고 짚어줍니다. 그 의견들을 반영해 다듬은 뒤에야 비로소 코드는 제 자리를 찾습니다.

처음 이 문화를 접한 사람은 당황하곤 합니다. 입사한 지 한 달 된 신입이 10년 차 선배의 코드에 “이건 이렇게 하는 게 좋을 것 같습니다”라고 의견을 다는 것이 어색하게 느껴지니까요. 그리고 더 놀라운 것은, 그 선배가 “아, 맞네요. 그게 낫겠어요” 하고 자연스럽게 받아들인다는 것입니다. 현실의 수많은 회의실에서는 좀처럼 일어나지 않는 일이 개발자들에게는 일상처럼 일어납니다.

그렇다고 코드 리뷰가 늘 아름다운 평등의 장이라는 말은 아닙니다. “내 코드에 토 달지 말라”며 군림하는 사람도 있고, 리뷰가 은근한 권력 행사의 도구로 변질되는 팀도 있습니다. 그러니 “코드 리뷰는 수평적이다”라고 말하는 것은 정확하지 않습니다. 진짜 흥미로운 질문은 따로 있습니다. 잘 굴러가는 코드 리뷰에는, 대체 무엇이 있기에 신입의 말이 묻히지 않는 걸까요.

더 나은 결과를 위한 세 가지 장치

이 장치들을 자세히 살펴보면 거기에는 사람들을 갑자기 겸손하게 만드는 마법 같은 것이 있는 게 아니라, 꽤 구체적인 세 가지 장치가 작동하고 있음을 알게 됩니다. 그리고 그 장치들은 하나같이 같은 곳을 향합니다. 바로 더 나은 결과입니다.

첫째, 비판의 대상이 사람이 아니라 코드라는 것입니다. 리뷰에서 오가는 말은 “당신이 틀렸다”가 아니라 “이 코드를 이렇게 바꾸면 어떨까”입니다. 도마 위에 오른 것이 나라는 사람이 아니라 내가 짠 코드라는 사물이기에, 지적을 받아도 인격이 부정당하는 느낌이 들지 않습니다. 그래서 방어하지 않고 들을 수 있고, 방어하지 않으니 더 나은 의견이 실제로 코드에 반영됩니다. 감정 소모 없이 두 사람의 생각이 합쳐지는 것입니다. 만약 누군가 사람을 대상으로 비판한다면 그것은 코드 리뷰가 아니라 인신공격이므로, 개발자들이 합의한 협업 과정이 아닙니다. 그에게는 존중을 표해달라고 요청하면 됩니다.

둘째, 누구의 코드든 똑같이 리뷰를 거친다는 것입니다. 신입의 코드도, 10년 차의 코드도, 심지어 팀을 이끄는 사람의 코드도 예외 없이 누군가의 검토를 받습니다. 검토받는 일이 무능의 신호가 아니라 모두가 통과하는 당연한 절차이기에, 지적이 특별한 사건이 되지 않습니다. 그리고 모두의 코드가 열리니, 모두의 눈이 동원됩니다. 한 사람의 시야에는 반드시 사각지대가 있는데, 다른 눈이 그것을 메웁니다.

셋째, 직함이 아니라 근거로 말한다는 것입니다. 리뷰에서 누군가를 설득하려면 “내가 선배니까”로는 안 됩니다. “이렇게 하면 이런 상황에서 문제가 생긴다”고, 근거를 들어 말해야 합니다. 권위의 출처가 사람의 지위가 아니라 논리의 타당함이기에, 더 나은 논리를 가진 쪽이 신입이든 선배든 그쪽이 이깁니다. 그리고 그 모든 대화는 기록으로 남아, 나중에 누구든 “왜 이렇게 결정했더라”를 되짚을 수 있습니다.

이 세 장치를 보면, 어느 것도 ‘평등’ 그 자체를 목적으로 삼지 않습니다. 모두가 한 곳, 곧 더 나은 코드를 향하고 있을 뿐입니다. 신입이 선배에게 의견을 낼 수 있어야 하는 이유는 평등이 아름다워서가 아니라, 그래야 더 좋은 결과가 나오기 때문입니다.

누가 옳은가, 가 아니라

여기서 코드 리뷰의 본질이 드러납니다. 그것은 누가 옳은지를 가리는 일이 아니라, 함께 더 나은 곳으로 가는 일이라는 것입니다.

우리는 의견이 갈리면 흔히 그것을 승부로 받아들입니다. 내 의견이 채택되면 이긴 것이고, 상대의 것이 채택되면 진 것이라고요. 그래서 비판을 받으면 내가 진 것 같아 방어하게 되고, 비판을 하려면 상대를 이겨야 할 것 같아 망설이게 됩니다. 그러나 잘 이루어지는 리뷰에서 두 사람은 서로를 이기려 하지 않습니다. 둘 다 같은 편이 되어, 눈앞의 코드를 더 나은 것으로 만들려는 한 가지 목표를 바라봅니다. 내 의견이 더 낫다면 그게 채택되어 기쁘고, 상대의 의견이 더 낫다면 내가 미처 못 본 것을 배워서 기쁩니다. 어느 쪽이든 결과물은 좋아지고, 두 사람 모두 그 과정에서 한 뼘씩 자랍니다.

상호 리뷰란 그런 것입니다. 내 생각을 남에게 설명해보며 그것이 정말 단단한지 시험하고, 남의 다른 접근을 보며 “아, 이렇게도 하는구나” 시야를 넓히고, 그렇게 두 사람의 부족함이 서로를 메우며 혼자서는 닿지 못했을 곳에 함께 도착하는 일. 검토는 결과물만 다듬는 것이 아니라, 검토하는 사람과 받는 사람을 함께 키웁니다.

AI, 코드 리뷰를 바꾸다

그런데 요즘, 이 모습은 조용히 바뀌어가고 있습니다. 사람이 하던 코드 리뷰를 점점 인공지능이 대신하기 시작한 것입니다.

AI에게 코드 검토를 맡기면 분명한 장점이 있습니다. 빠르고, 밤낮을 가리지 않으며, 사람이 놓치기 쉬운 실수를 지치지 않고 잡아냅니다. 무엇보다 누구의 기분도 상할 일이 없습니다. 신입은 선배에게 의견을 낼 때의 긴장을 느끼지 않아도 되고, 선배는 후배의 지적에 자존심이 상할 일이 없습니다. 효율만 놓고 보면, 이보다 좋을 수는 없습니다. 선배보다 똑똑한데 후배보다 대하기 편하며, 상호 존중을 신경쓰지 않아도 되는 비인격체가 지치지도 않고 리뷰해주는 것이니까요. 업무 프로세스 관점에서 보면 이것은 분명히 커다란 진보입니다.

다만 저는 이 변화 앞에서 가끔 멈칫하게 됩니다. 사람끼리의 코드 리뷰가 만들어내던 것이 더 나은 코드만은 아니었기 때문입니다. 그 번거로운 주고받음 속에는 다른 것들이 함께 깃들어 있었습니다. 내 생각을 동료에게 설명해보던 일, 남의 코드를 읽으며 새로운 방식을 배우던 일, “이건 왜 이렇게 하셨어요?” 묻고 “아 그건 말이죠” 답하며 서로를 알아가던 일, 그리고 누군가 내 작업을 들여다봐 준다는 그 조용한 연결감 말입니다.

AI에게 리뷰를 넘기면 코드는 여전히, 아니, 대부분 훨씬 더 많이 좋아집니다. 그러나 사람과 사람 사이에서 오가던 그 배움과 연결이 옅어진 것도 사실입니다.

무엇을 두고 가는가

이것은 코드만의 이야기가 아닐 것입니다. 우리는 효율을 위해 사람 사이의 번거로운 과정을 자동화로 바꿔나가고 있습니다. 그리고 그럴 때마다 결과는 더 빠르고 깔끔하게 손에 쥐어지지만, 그 번거로운 과정에 깃들어 있던 무언가 —서로를 통해 배우고, 부딪히고, 연결되던 것—를 우리는 종종 알아채지도 못한 채 두고 옵니다.

개인적으로 저는 그것이 조금 아쉽습니다. AI가 더 나은 코드를 만들어준다는 사실을 부정하려는 것이 아닙니다. 다만 신입이 떨리는 마음으로 선배의 코드에 첫 의견을 달던 순간, 선배가 “오, 그게 낫네요” 하고 웃으며 받아주던 순간, 서로의 코드를 확인해보며 “이 사람은 이렇게 생각하는구나” 알아가던 그 시간들이, 단지 더 좋은 코드를 위한 비효율이었다고만은 생각되지 않기 때문입니다. 그 안에는 일을 사람의 일로 만들어주던 무언가가 있었습니다.

그러나 저는 여기서 한탄으로 끝내고 싶지는 않습니다. 돌이켜보면 코드 리뷰라는 문화 자체도 처음부터 있었던 것이 아니라, 함께 일하는 방식이 변해가는 과정에서 누군가가 만들어낸 것이었습니다. 도구가 바뀌면 문화도 바뀝니다. 그러나 바뀐다는 것이 사라진다는 뜻만은 아닙니다. AI가 코드의 검토를 맡아주는 그 시간에, 사람들은 어쩌면 더 본질적인 것—무엇을 만들지, 왜 만들지, 어떻게 더 좋은 질문을 던질지—를 두고 머리를 맞대게 될지도 모릅니다. 검토라는 형태의 배움이 사라진 자리에, 우리가 아직 상상하지 못한 새로운 형태의 배움과 연결이 자라날 수도 있습니다.

그러니 제 마음은 아쉬움과 기대 사이 어딘가에 놓여 있습니다. 무언가를 두고 가는 것은 분명하지만, 그 빈자리에 무엇이 새로 자랄지는 아직 우리가 함께 만들어갈 몫으로 남아 있다고 믿습니다. 어느 시대든 사람들은 결국 함께 더 나아질 방법을 다시 찾아냈으니까요. 제가 그리워하는 사람 간의 코드 리뷰 문화도 누군가 비켜준 빈 자리에 새롭게 피어났던 문화일 것입니다.

더 나은 곳으로 함께 간다는 것. 어쩌면 거기서 정말 중요한 말은 ‘더 나은 곳’이 아니라 ‘함께’였는지도 모릅니다. 그리고 그 ‘함께’의 모습은, 시대가 바뀔 때마다 우리가 새로 그려나가야 할 그림일 것입니다.

See Also

Graph View

댓글 (1)

  • 희망 재고 소진된 나무늘보 2026. 06. 07. 15:24

    아쉬움과 기대 사이에서 서성거리고 계시군요...🚶🏻‍♂️🚶🏻‍♂️