Community

TDD의 아버지, 켄트백이 생각하는 코드리뷰

켄트백은 TDD 및 CI라는 개념을 만들어낸 소프트웨어 엔지니어의 대부라고 할 수 있는 분입니다. 이번에 켄트백이 본인이 생각하는 코드리뷰에 대한 생각을 공유했는데요. 그 생각을 한번 같이 보시죠! ✅ 코드 리뷰가 해주는 일 - 행동에 대한 오류를 줄입니다. - 구조적 오류를 줄입니다. - 팀의 이해도를 높입니다. - 학습을 가속화할 수 있습니다. - 팀의 위험을 줄입니다. ✅ 원칙(Principles) 리뷰의 원칙은 어떻게 되야 할까요? - Flow : 작게 자주 하는 것이, 크걸 적은 빈도로 하는 것보다 가치가 있습니다. - Rowing : 누가 빨리 노를 젓느냐가 아니라 함께 얼마나 빨리 노를 젓느냐가 중요합니다. - Overhead : 비용의 증가를 최소화 해야합니다. - Alignment : 권한과 책임을 적절히 조정해야합니다. - Integration : Divide & Conquer가 아니라, Divide & Conquer & Integration입니다. 통합 비용을 항상 고려하세요. ✅ 인센티브(Incentive) 많은 사람들이 코드 리뷰에서 무시하고 있는데 "인센티브"입니다. PR Size -> Time -> Delay -> PR Size ... PR(Pull Request)가 클수록 지연시간이 길어지고, 변경에 더 많은 시간이 소요되어 PR이 계속 커집니다. 이는 나쁜 인센티브에 속합니다. 반면에, 코드 리뷰를 지연 없이 하게 되면, 개발을 기다리는 여분의 시간도 줄어들고, 집중할 수 있고, 이를 통해 전체적인 PR에 대한 지연이 점점 줄어들게 됩니다. 이런 인센티브 루프를 잘 활용하여 팀의 워크플로우를 만들어야합니다. ✅ 가변성 팀의 워크플로우에서 충분히 고려해야하는 또다른 주제는 "가변성"입니다. 두가지의 가변성이 있습니다. - 블로킹 (Blocking) - 동기식 (Synchronous) 하나는 코드 리뷰가 반드시 수행되어야 하는 블로킹 형태인지, 그렇지 않아도 되는 Non-블로킹 형식인지에 대한 이야기입니다. 다른 하나는 코드 리뷰가 즉각적으로 Pair 프로그래밍처럼 동기적으로 발생하는지, 아니면 비동기적으로 발생하는지에 대한 이야기입니다. 이를 표로 표현하면 | - Blocking Non-Blocking | | ------- ---------- -------------- | | Sync Pairing ? | | Async PR Review | 즉, 비동기적이면서 블로킹형태가 Review고, 비동기적이면서 이 코드가 들어가는 게 블로킹형태인게 PR입니다. 만약에 동기적이면서 블로킹형태라면 Pair 프로그래밍이 될것입니다. 이렇듯, 코드 리뷰에는 다양한 타입이 있고, 팀에 맞는 부분이 있습니다. 각자에 맞는 형태의 팀플로우를 만들거나, 발명하는게 중요합니다. 너무 오픈소스나 모범사항을 복사하지 마십시요.

알림

알림이 없습니다