2.5

View in English

2.5 코드 리뷰와 협업

개요와 동기

코드 리뷰는 변경이 병합되기 전에 작성자가 아닌 다른 사람이 그것을 검토하는 실천입니다. 소프트웨어 조직이 가진 지렛대 효과가 가장 큰 품질 및 지식 공유 활동 중 하나이며, 큰 팀에서는 조율과 문화의 주된 메커니즘이기도 합니다. 리뷰는 결함을 잡고, 코드베이스에 대한 지식을 퍼뜨리고, 표준을 시행하고, 엔지니어를 멘토링하지만, 잘할 때만 그렇습니다. 잘못하면 병목, 마찰의 원천, 또는 거짓 보증을 주는 도장 찍기가 됩니다.

큰 팀에서 리뷰는 개인의 작업이 집단적 소유권을 만나는 곳입니다. 그렇지 않으면 각자 일하는 엔지니어들 사이의 주된 접점인 경우가 많아서, 그 규범이 조직 전체의 협업 방식을 형성합니다. 리뷰는 지식을 퍼뜨려 시스템의 어느 부분도 한 사람만 이해하지 않게 하며, 이는 크고 오래 사는 시스템을 괴롭히는 버스 팩터 위험, 즉 지식이 너무 적은 사람에게 있는 위험을 줄입니다. 또한 누가 무엇을 바꾸고 누가 승인했는지의 감사 추적을 만듭니다.

기업과 정부 맥락에서 리뷰는 컴플라이언스 차원을 지니는 경우가 많습니다. 직무 분리(한 사람이 민감한 변경 전체를 통제하지 못함), 필수 승인, 추적성이 흔히 요구되는 통제입니다. 민감한 시스템을 건드리는 변경은 특정 역할의 리뷰가 필요할 수 있고, 리뷰 기록은 감사 증거가 됩니다. 과제는 리뷰를 의식으로 바꾸지 않고 빠르고 건설적으로 유지하면서 이런 통제를 충족하는 것입니다.

핵심 원칙

  • 변경을 개선하고 지식을 공유하려고 리뷰하십시오. 과시하려는 것이 아닙니다.
  • 작은 변경이 더 나은 리뷰를 받습니다. 풀 리퀘스트(PR)를 집중되고 적당한 크기로 유지하십시오.
  • 리뷰 지연은 팀 전체의 비용입니다. 빠른 회신이 모두를 계속 움직이게 합니다.
  • 기계적인 것(스타일, 테스트, 보안 스캔)은 자동화하여 사람이 설계와 정확성을 리뷰하게 하십시오.
  • 막는 문제와 제안 및 선호를 구분하고, 어느 것인지 명시하십시오.
  • 사람이 아니라 코드를 비평하십시오. 피드백 규범이 리뷰가 신뢰를 쌓는지 부식시키는지를 정합니다.
  • 변경을 리뷰하기 쉽게 만드는 책임은 작성자에게 있습니다.

권장 사항

풀 리퀘스트를 작게, 잘 설명한다

각 변경을 하나의 논리적 관심사에 집중시키고 주의 깊게 리뷰할 만큼 작게 하십시오. 큰 PR은 얕은 리뷰를 받습니다. 리뷰어에게 맥락이 있도록 무엇이 바뀌었는지, 왜인지, 어떻게 검증했는지 분명한 설명을 주십시오. 기계적 리팩터링과 동작 변경을 별도의 PR로 나눠 각각이 추론하기 쉽게 하십시오. 좋은 설명은 리뷰 품질에 대한 작성자의 가장 중요한 단일 기여입니다.

리뷰 표준과 체크리스트를 정한다

리뷰어가 무엇을 봐야 하는지 명시하십시오. 정확성, 설계 적합성, 테스트의 충분성, 보안 함의, 가독성, 표준 준수입니다. 가벼운 체크리스트는 리뷰를 일관되게 유지하고 중요한 차원이 빠져나가지 않게 하면서 리뷰를 체크박스 채우기로 바꾸지 않습니다. 무엇이 리뷰를 필요로 하는지, 누가 승인할 수 있는지, 민감한 영역에 필요한 역할 기반 승인을 정의하십시오.

리뷰 지연 규범을 정하고 모니터링한다

목표 회신 시간에 합의하십시오. 예컨대 하루 근무일 안에 응답하고, 리뷰를 마지막에 끼워 넣는 일이 아니라 하루의 일급 부분으로 만드십시오. 긴 리뷰 대기열은 전달을 멈추고 엔지니어를 지나치게 크고 묶인 변경으로 유혹합니다. 첫 리뷰까지의 시간과 병합까지의 시간을 모니터링하고, 지속적인 지연을 개인의 잘못이 아니라 고쳐야 할 프로세스 문제로 다루십시오.

기계적인 모든 것을 자동화한다

서식, 린팅, 테스트, 보안 및 의존성 스캔을 지속적 통합(CI)에서 실행하여 리뷰어가 그것에 주의를 쓰지 않게 하십시오. 사람의 리뷰는 기계가 판단할 수 없는 것에 남겨 두십시오. 설계가 옳은지, 접근이 시스템에 맞는지, 테스트가 의미 있는지, 코드가 나중에도 이해될지입니다.

맞는 곳에 페어 및 몹 프로그래밍을 쓴다

복잡하거나 위험이 높은 작업, 온보딩, 지식 전달에는 두 엔지니어가 한 작업대에서 함께 코드를 쓰는 페어 프로그래밍을 쓰십시오. 이것은 지속적인 리뷰이며, 별도의 리뷰 단계가 필요 없게 하는 경우가 많습니다. 핵심 설계 결정이나 까다로운 영역에 대한 지식을 팀 전체에 퍼뜨리려면 팀 전체가 한 번에 한 과제에 일하는 몹 프로그래밍을 쓰십시오. 이를 비동기 리뷰의 보완책으로 맥락에 따라 고르는 것이지, 어디서나 의무화할 대체재가 아니라고 생각하십시오.

자동화 및 AI 지원 리뷰를 신중하게 채택한다

일반적인 문제를 잡고, 개선을 제안하고, 리뷰어의 부담을 덜려고 자동 리뷰 도구와 AI 어시스턴트를 쓰되, 그 출력을 권위가 아닌 입력으로 다루십시오. AI 리뷰는 표면적 문제와 일관성에는 좋고 깊은 설계 판단과 시스템 맥락에는 약합니다. 특히 보안에 민감하고 컴플라이언스와 관련된 변경에서는 모든 승인에 사람이 책임지게 하십시오.

건설적인 피드백 규범을 정한다

피드백을 구체적이고, 친절하고, 코드에 집중하게 유지하는 규범을 정하십시오. 리뷰어가 명령 대신 질문을 하고, 요청 뒤의 이유를 설명하고, 좋은 작업을 칭찬하도록 장려하십시오. 막는 우려와 선택적 제안을 분명히 표시하십시오(예컨대 막지 않는 메모에 접두어를 붙여서). 이런 규범이 리뷰가 팀을 강화하는지 분노를 키우는지를 결정합니다.

장단점

접근 방식장점단점
비동기 PR 리뷰유연함. 문서로 남음. 시간대를 넘어 확장됨지연. 뉘앙스를 잃음. 적대적으로 느껴질 수 있음
페어 프로그래밍지속적 리뷰. 빠른 지식 전달. 높은 품질한 과제에 두 사람. 피곤함. 일정 잡기 어려움
몹 프로그래밍팀 전체 정렬. 깊은 지식 전파총합으로 비쌈. 일상 업무에는 부적합
필수 복수 리뷰어강한 보증. 컴플라이언스 친화적더 느림. 책임이 분산됨. 대기열 압박
AI 지원 리뷰일반 문제에 빠르고 지치지 않음. 부담 감소시스템 맥락을 놓침. 과신하면 거짓 확신

핵심 긴장은 철저함 대 속도입니다. 더 깊은 리뷰는 더 많이 잡지만 전달을 늦추고 작성자를 좌절시킬 수 있습니다. 더 빠른 리뷰는 흐름을 유지하지만 피상적일 위험이 있습니다. 해법은 리뷰 깊이를 변경 위험에 맞추고, 사소한 변경은 가볍게, 위험한 변경은 깊이 리뷰하며, 기계적 작업을 자동화로 없애 사람의 노력이 중요한 곳에 집중되게 하는 것입니다.

팀과 논의할 질문

  1. 하나의 풀 리퀘스트로는 너무 크다고 할 기준은 무엇이며, 기계적 리팩터링을 동작 변경과 분리합니까? 이 장은 큰 PR이 얕은 리뷰를 받고 리뷰 가능성은 작성자가 소유한다고 분명히 말하며, 각각이 추론하기 쉽도록 리팩터링을 동작 변경과 분리하라고 요구합니다. 큰 팀에서 거대한 PR은 도장 찍기를 보장하며, 이는 거짓 보증을 주면서 실제 결함을 통과시킵니다. 증거를 가져오십시오. PR 크기 분포와 차이가 커질수록 리뷰 깊이가 어떻게 떨어지는지입니다. 현실적인 크기 규범과 순수 리팩터링을 로직 변경과 따로 착지시키는 습관에 합의하여, 리뷰어가 실제로 각 변경을 머릿속에 담을 수 있게 하십시오. 그 하나의 규율이 뒤따르는 모든 리뷰의 질을 끌어올립니다.

  2. 막는 이의와 선택적 제안을 어떻게 구분하며, 그 관례가 실제로 쓰입니까? 이 장은 막는 문제와 선호를 분리하고 어느 것인지 명시하라고 요구하며, 선호로 막는 것을 부식시키는 안티패턴으로 지적합니다. 공유된 관례가 없으면 리뷰어의 스타일 의견이 필수 변경으로 읽혀서, 팀 전체에 분노를 낳고 전달을 늦춥니다. 선호가 병합을 멈춘 최근 리뷰의 예를 구체적 신호로 가져오십시오. 막지 않는 메모에 태그를 다는 접두어 같은 가벼운 표지를 채택해, 작성자가 무엇이 바뀌어야 하고 무엇이 제안인지 즉시 알게 하십시오. 그러면 리뷰가 취향이 아니라 정확성과 설계에 집중됩니다.

  3. 보안에 민감하거나 컴플라이언스와 관련된 코드의 변경은 누가 승인해야 하며, 그 라우팅은 어떻게 시행됩니까? 이 장은 역할 기반 승인, 코드 소유 규칙, 한 사람이 민감한 변경 전체를 통제하지 못하는 직무 분리, 감사 증거로 기록되는 승인을 기술합니다. 기업과 정부 환경에서 이것들은 필수 통제이며, 위험은 건너뛰어지거나 전달을 얼리는 병목이 되는 것입니다. 신호를 가져오십시오. 어느 모듈이 민감한지, 소유 규칙이 현재 그런 변경을 올바른 승인자에게 자동으로 라우팅하는지입니다. 라우팅을 코드 소유 설정에 부호화하고 자동 검사와 작은 변경과 짝지어, 사람 관문의 대기열 없이 통제가 충족되게 하십시오. 감사 중에 간극을 발견하지 말고 의도적으로 정하십시오.

  4. 실제로 합의한 리뷰 지연 목표는 무엇이며, 측정하고 시행합니까, 아니면 열망일 뿐입니까? 이 장은 리뷰 지연을 팀 전체의 비용으로 다루며 첫 리뷰까지의 시간과 병합까지의 시간을 모니터링하고 지속적인 지연을 개인의 잘못이 아닌 프로세스 문제로 보라고 요구합니다. 큰 팀에서 소유자 없는 리뷰 대기열은 모두에게 조용히 세금을 매깁니다. 작성자가 기다림을 피하려고 더 큰 변경을 묶고, 그런 변경은 더 얕은 리뷰를 받고, 전달 리드 타임은 단일 원흉 없이 올라갑니다. 상충하는 고려는 엄격한 지연 목표가 리뷰어를 훑어보게 몰 수 있으므로, 속도와 깊이를 맹목적으로 맞바꾸지 않고 균형 잡아야 한다는 점입니다. 증거를 가져오십시오. 첫 리뷰까지의 시간의 현재 분포, 팀과 변경 크기에 따른 편차, 리뷰가 가장 오래 머무는 곳입니다. 기업과 정부 환경에서는 목표를 리더십이 이미 추적하는 흐름 지표에 연결하십시오. 지연 규범이 없는 필수 복수 리뷰어 통제는 전달을 얼리고 사람들이 통제를 완전히 우회하도록 유혹하는 병목이 되기 때문입니다.

  5. 어떤 종류의 변경에 자동 및 AI 지원 리뷰를 신뢰하며, 어디에서 사람이 책임을 져야 합니까? 이 장은 AI 리뷰 출력을 권위가 아닌 입력으로 다루라고 합니다. 표면적 문제와 일관성에는 강하고 깊은 설계 판단과 시스템 맥락에는 약하며, 모든 승인에 사람이 책임져야 합니다. 명시적 경계가 없으면 큰 팀은 과신으로 흘러서, 초록 봇 코멘트가 통과한 리뷰로 읽히고 실제 설계와 보안 위험이 거짓 확신 아래서 빠져나갑니다. 상충하는 끌림은 AI 리뷰가 부담을 정말 덜고 일반적인 결함을 지치지 않고 잡으므로 금지하면 지렛대를 낭비한다는 점입니다. 증거를 가져오십시오. 자동 제안이 실제 문제를 잡은 곳, 잡음을 낸 곳, 어떤 변경 유형(보안에 민감한, 컴플라이언스와 관련된, 아키텍처)을 기계가 혼자 서명하게 하지 않을지입니다. 기업과 정부 업무에서는 AI 어시스턴트가 고리에 있었을 때 승인에 대한 책임을 누가 지는지 이름을 붙이십시오. 감사는 누가 변경을 리뷰했는지 물을 것이고, “도구가 했다”는 규제 기관이 받아들이지 않는 답이기 때문입니다.

  6. 페어링이나 몹이 비동기 리뷰를 대체해야 하는 곳은 어디이며, 리뷰를 의도적으로 버스 팩터 위험을 줄이는 데 어떻게 씁니까? 이 장은 페어 및 몹 프로그래밍을 맥락에 따라 고르는 지속적 리뷰로 규정하고, 리뷰를 시스템의 어느 부분도 한 사람만 이해하지 않게 지식을 퍼뜨리는 메커니즘으로 이름 붙입니다. 암묵적으로 두면 지식이 집중됩니다. 같은 전문가가 서브시스템의 모든 변경을 리뷰하고, 아무도 그에게 이의를 제기할 수 없어 리뷰가 도장 찍기가 되며, 버스 팩터 위험은 시스템이 가장 핵심인 바로 그곳에서 커집니다. 상충하는 고려는 비용입니다. 몹은 팀 전체의 시간을 쓰고 페어링은 두 엔지니어를 묶으므로 어디서나 의무화할 수 없습니다. 증거를 가져오십시오. 어느 모듈에 믿을 만한 리뷰어가 한 명뿐인지, 온보딩이 어디서 막히는지, 까다로운 영역이 코멘트 스레드보다 실시간 세션의 덕을 어디서 볼지입니다. 큰 조직이나 공공 조직에서는 의도적인 지식 전파를 위험 관리로 다루십시오. 핵심 부분이 한 사람에 의존하는 오래 사는 시스템은 단지 인력 배치의 불편이 아니라 운영 및 연속성의 부채이기 때문입니다.

분야별 관점

스타트업. 엔지니어가 서너 명이면 리뷰를 가볍게 유지하십시오. 작은 풀 리퀘스트에 대한 동료 한 명의 승인, CI의 기계적 검사, 병합을 멈출 필수 두 번째 리뷰어는 두지 마십시오. 진짜 목표는 컴플라이언스보다 시스템의 각 부분을 한 사람 이상이 이해하게 하는 것이므로, 위험한 부분은 페어링하고 그것을 온보딩으로 다루십시오. 곧 넘어설 무거운 코드 소유 라우팅을 만들지 마십시오. 작고 잘 설명된 변경이라는 공유 규범이 거의 비용 없이 대부분의 혜택을 삽니다.

소기업. 리뷰 도구 전문가가 있을 가능성이 낮으니, 맞춤 자동화를 만들기보다 호스팅 플랫폼(예컨대 관리형 Git 서비스)이 기본으로 주는 것에 의지하십시오. 린팅, 테스트, 보안 스캔 통합을 유지하는 대신 사서 소수의 엔지니어가 희소한 리뷰 시간을 설계와 정확성에 쓰게 하십시오. 하나의 단순한 규칙, 모든 변경이 다른 한 쌍의 눈을 거친다는 것을 유지하고, 유지할 사람이 없는 프로세스를 추가하는 것에 저항하십시오.

대기업. 과제는 많은 팀에 걸친 일관성입니다. 공유 표준, 민감한 변경을 올바른 승인자에게 라우팅하는 코드 소유 규칙, 감사 증거로 기록되는 역할 기반 승인입니다. 기계적 검사를 조직 전체에서 자동화하여 사람의 리뷰가 설계에 집중하게 하고, 필수 복수 리뷰어 통제가 조용히 병목이 되지 않도록 리뷰 지연을 흐름 지표로 추적하십시오. 문서화된 정책으로 리뷰 깊이를 변경 위험에 맞추어, 사소한 변경은 빠르게 유지하고 위험한 변경은 직무 분리와 더 깊은 정밀 검토를 받게 하십시오.

정부. 변경 통제가 의무인 경우가 많습니다. 모든 프로덕션 변경이 작성자가 아닌 사람에게 리뷰되고 승인되며, 그 기록이 직무 분리 요건을 충족하는 감사 증거로 유지됩니다. 누가 작성했고, 누가 승인했고, 어떤 검사가 통과했는지의 투명하고 추적 가능한 흔적을 선호하고, 통제가 전달을 얼리지 않도록 자동화와 작고 빈번한 변경에 투자하십시오. 리뷰 도구를 조달할 때는 내보낼 수 있는 감사 로그를 요구하고 종속을 피하십시오. 증거는 어느 한 벤더보다 오래 가야 하고 공적 정밀 검토를 견뎌야 하기 때문입니다.

사례

스타트업. 네 명 규모의 스타트업은 모든 풀 리퀘스트를 작게 유지하고 병합 전에 동료 한 명의 승인을 요청하는데, 컴플라이언스보다는 어떤 한 사람도 시스템의 한 부분을 혼자만 이해하는 사람이 되지 않게 하려는 것입니다. CI가 포매터와 테스트를 돌리므로, 사람들은 몇 안 되는 리뷰 시간을 간격이 아닌 설계와 정확성에 씁니다. 팀이 결제 흐름의 까다로운 부분에 부딪히면 비동기 코멘트를 주고받는 대신 둘이 페어링하며, 이는 가장 새로운 채용자의 온보딩을 겸합니다.

대기업. 한 대형 소프트웨어 회사는 모든 변경에 최소 한 번의 승인 리뷰를, 코드 소유 규칙으로 식별되는 보안에 민감한 모듈의 변경에는 두 번째 승인을 요구합니다. CI가 모든 스타일과 테스트 검사를 처리하므로 리뷰어는 설계와 정확성에 집중합니다. 팀은 첫 리뷰까지의 시간을 추적하고 중앙값이 오르면 업무량을 재균형하라는 신호로 다룹니다. 신입 엔지니어는 페어링으로 온보딩되어 독립적으로 기여하기까지의 경로가 짧아집니다.

정부. 엄격한 변경 통제 요건 아래 운영되는 한 국가 기관은 모든 프로덕션 변경이 작성자가 아닌 사람에게 리뷰되고 승인되며 감사를 위해 승인이 기록되도록 의무화합니다. 이 통제가 병목이 되지 않도록 기관은 자동 검사와 작고 빈번한 변경에 투자하고 당일 리뷰 응답 규범을 정합니다. 누가 작성했고, 누가 승인했고, 어떤 검사가 통과했는지를 담은 리뷰 흔적은 각 릴리스의 컴플라이언스 증거의 일부가 되어, 전달을 얼리지 않고 직무 분리 요건을 충족합니다.

비즈니스 사례: 동기, ROI, TCO

코드 리뷰는 세 가지 통화로 보답합니다. 프로덕션 전에 잡은 결함, 팀에 퍼진 지식, 시간이 지나도 자동으로 유지되는 표준입니다. 리뷰에서 결함을 잡는 것은 프로덕션에서 잡는 것보다 훨씬 쌉니다. 지식 공유의 이점은 누군가 떠날 때 조직에 큰 비용이 될 수 있는 핵심 인력 위험을 줄입니다. 리뷰는 성장하는 팀을 일관되게 유지하는 문화적 전달 메커니즘이기도 합니다.

리뷰의 비용은 엔지니어의 시간과 약간의 지연이며, 둘 다 좋은 관행으로 관리할 수 있습니다. 리뷰를 하지 않거나 잘못 리뷰하는 비용에는 프로덕션 결함, 사일로화된 지식, 일관되지 않은 코드, 규제 환경에서의 감사 실패와 컴플라이언스 지적이 포함됩니다. 지나치게 무거운 리뷰에도 실제 비용이 있습니다. 긴 대기열, 지나치게 큰 묶음, 사기가 꺾인 엔지니어입니다. 리더십을 설득하려면 리뷰 관행을 변경 실패율, 전달 리드 타임, 온보딩 속도에 연결하고, 리뷰 지연을 명시적 흐름 지표로 추적하십시오.

안티패턴과 함정

  • 도장 찍기: 실제 검토 없는 승인으로, 거짓 보증을 주고 통제의 자구만 충족합니다.
  • 거대한 PR: 훑어볼 수밖에 없는 수천 줄로, 얕은 리뷰를 보장합니다.
  • 사소한 지적뿐인 리뷰: 설계와 정확성을 놓치고 사소한 것에 집중하는 것. 흔히 기계적 검사가 자동화되지 않았기 때문입니다.
  • 관문 지키기로서의 리뷰: 지배를 주장하거나 다른 사람을 막는 데 리뷰를 쓰는 것으로, 협업을 독살합니다.
  • 느린 대기열: 며칠씩 방치되는 리뷰로, 전달을 멈추고 묶기를 부추깁니다.
  • AI 리뷰 과신: 자동 제안을 권위로 취급하고 위험한 변경에서 사람의 판단을 버리는 것.
  • 선호로 막기: 개인의 스타일 의견을 진짜 결함과 구분하지 않고 필수 변경으로 제시하는 것.

성숙도 모델

  • 1단계, 시작: 리뷰가 그때그때 이루어지고 반응적입니다. 흔히 건너뛰거나 일관되지 않게 이루어지고, 기계적 문제가 코멘트를 지배하고, 피드백 규범이 정해지지 않았으며, 승인 흔적은 의도적이 아니라 부수적입니다.
  • 2단계, 발전: 기본 리뷰 관행이 있지만 팀마다 다릅니다. 어떤 곳에서는 리뷰가 필수이고 다른 곳에서는 느리거나 선택적이며, 자동화는 부분적이고, 풀 리퀘스트 크기와 품질은 공유된 기대 없이 크게 요동칩니다.
  • 3단계, 표준화: 표준이 문서화되어 조직 전체에서 시행됩니다. 작고 집중된 PR, CI의 자동 서식, 린팅, 테스트, 보안 스캔, 분명한 체크리스트, 막기-대-제안 구분 관례, 민감한 변경을 올바른 승인자에게 라우팅하는 코드 소유 규칙입니다.
  • 4단계, 관리: 리뷰가 기준선에 대해 측정되고 통제됩니다. 첫 리뷰까지의 시간, 병합까지의 시간, 변경 위험 대비 리뷰 깊이, 결함 유출률, 변경 실패율이 추적되고, 지속적인 지연은 프로세스 문제로 다뤄지며, 데이터가 어디서 리뷰어 부하를 재균형하고 어떤 통제가 보증을 더하지 않으면서 전달을 늦추는지를 이끕니다.
  • 5단계, 오케스트레이션: 리뷰가 지속적으로 개선되고 조직 전체에 통합됩니다. 깊이는 변경 위험에 적응하고, 페어링, 몹, AI 지원은 사람이 책임지는 가운데 의도적으로 쓰이며, 지식 전파와 버스 팩터 위험은 의도적으로 관리되고, 리뷰는 품질, 전달 흐름, 온보딩을 측정 가능하게 개선합니다.

논의를 위한 아이디어

  • 팀에 알맞은 리뷰 지연 목표는 무엇이며, 달성을 막는 것은 무엇입니까?
  • 관료주의를 더하지 않고 리뷰 깊이를 변경 위험에 어떻게 맞춥니까?
  • 맥락에서 페어링이나 몹이 비동기 리뷰를 능가하는 곳은 어디입니까?
  • AI 지원 리뷰를 어느 정도 신뢰해야 하며, 어떤 종류의 변경에 그렇습니까?
  • 팀이 커지고 다양해지면서 리뷰 피드백을 건설적으로 어떻게 유지합니까?
  • 병목을 만들지 않고 컴플라이언스 승인 요건을 어떻게 충족합니까?

핵심 요점

  • 풀 리퀘스트를 작고 잘 설명되게 유지하십시오. 리뷰 가능성은 작성자가 소유합니다.
  • 기계적인 것은 자동화하여 사람이 설계, 정확성, 테스트를 리뷰하게 하십시오.
  • 리뷰 지연을 팀 전체의 흐름 비용으로 추적하고 관리하십시오.
  • 리뷰 깊이를 변경 위험에 맞추고, 막는 문제와 선호를 구분하십시오.
  • 페어링, 몹, AI 지원을 맥락에 맞는 보완책으로 쓰되, 사람이 책임지게 하십시오.

참고 문헌과 더 읽을거리

  • Karl Wiegers, Peer Reviews in Software: A Practical Guide
  • Google, Engineering Practices: How to Do a Code Review (as a reference exemplar)
  • Nicole Forsgren, Jez Humble, Gene Kim, Accelerate: The Science of Lean Software and DevOps
  • Kent Beck, Extreme Programming Explained (on pair programming)
  • Woody Zuill, writings on mob programming
  • Michael Lopp, Managing Humans (on engineering collaboration)