code-review

7 posts

풀 리퀘스트 리뷰는 결함의 15~30%를 발견한다. 데이터는 50년 전부터 그랬다.

IBM, AT&T, HP, Microsoft를 대상으로 한 다수의 연구에서 비공식 코드 리뷰가 결함의 약 4분의 1을 발견함을 확인했다. 데이터가 실제로 말하는 바, 그 수치가 낮은 이유, 그리고 해결 방법을 소개한다.

비공식 코드 리뷰는 검토 대상 코드에 존재하는 결함의 15~30%를 발견한다. 이는 의견이 아니다. 40년이 넘는 기간, 여러 기업, 수십 개의 연구를 통해 재현된 결과다. 마이클 페이건은 1976년 IBM에서 이를 기록했다. 1987년 AT&T 벨 연구소의 연구에서는 20%를…

일반적인 체크리스트는 아무것도 찾지 못한다. 구조화된 체크리스트는 결함의 60%를 찾아낸다.

대부분의 리뷰 체크리스트는 단순히 복사-붙여넣기한 선의의 목록이다. Fagan inspection 스타일의 구조화된 체크리스트는 실제 결함 데이터를 기반으로 구축되며, 특정 아티팩트 유형을 대상으로 하고 개별 준비 과정에서 사용된다. 작동하는 체크리스트를 만드는 방법은 다음과 같다.

팀에 코드 리뷰 체크리스트가 있다면, 아묘도 열지 않는 위키 페이지에 묻혀 있을 가능성이 높다. 아마도 "check for off-by-one errors"나 "verify error handling" 같은 내용이 적혀 있을 것이다. 이것들은 사실이다. 하지만 행동을 바꾸기에는 너무…

대형 언어 모델은 코드를 미리 검토할 수 있다. 회의를 주관할 수는 없다.

파견 검사는 250줄을 검토하는 데 4~6명과 2시간이 필요하다. 대형 언어 모델은 준비 작업과 체크리스트 준수를 담당하여 비용을 줄일 수 있지만, 가장 비싼 결함을 찾아내는 인간의 역할을 대체할 수는 없다.

완전한 파견 검사에는 진행자, 낭독자, 2~4명의 검토자, 그리고 작성자가 필요하다. 팀은 한 시간에 125줄의 속도로 대략 250줄의 코드를 2시간 동안 검토한다. 작은 변경에도 8~12인시가 드는 셈이다. 대형 언어 모델은 250줄을 1초도 채 걸리지 않아 읽을 수 있다.…

Fagan Inspections는 테스트 전 90%의 결함을 찾아냈다. 그리고 우리는 그것을 멈췄다.

IBM의 Michael Fagan이 개발한 구조화된 검토 프로세스는 코드가 컴파일러에 도달하기 전에 거의 모든 결함을 포착했다. 동시에 총 프로젝트 노력의 15~20%를 소비했다. 소프트웨어 역사상 가장 효과적인 리뷰 방법이 사라진 이유와 팀이 실제로 놓친 것은 무엇인지 알아본다.

1976년 Michael Fagan은 IBM Systems Journal에 한 편의 논문을 발표했다. 거기에 기술된 리뷰 프로세스는 소프트웨어 품질의 금기준(gold standard)이 될 정도로 효과적이었다. Fagan Inspections는 단 하나의 테스트도 실행되기 전에 전체…

당신의 최고 리뷰어도 대부분의 결함을 놓친다. Fagan은 1976년 IBM에서 이를 측정했다.

시니어 엔지니어도 비구조화된 리뷰에서 결함의 극히 일부만 포착한다. Michael Fagan의 IBM 연구는 그 이유를 밝혔고, 이를 수정하기 위한 구조화된 인스펙션 프로세스를 구축했다.

두 명의 시니어 엔지니어가 동일한 풀 리퀘스트를 리뷰한다. 한 명은 누락된 null 체크를 지적한다. 다른 한 명은 클린업 패스의 레이스 컨디션을 발견한다. 둘 다 둘을 모두 찾지는 못한다. 리뷰어를 한 명만 배정했다면, 그 버그 중 하나는 출시되었을 것이다. 이것은 기술 격차가…

대부분의 코드 리뷰는 결함의 20%만 찾아낸다. Fagan Inspection은 90%를 찾아낸다.

비공식 코드 리뷰는 결함의 15~30%를 찾아낸다. 50년 된 구조화된 프로세스인 Fagan Inspection은 일관되게 60~90%의 제거율을 보고한다. 이것이 어떻게 작동하는지, 팀이 이를 피하는 이유, 그리고 경량 버전을 실행하는 방법을 알아본다.

대부분의 코드 리뷰는 원래 찾아야 할 결함의 15~30%를 포착한다. 이는 추측이 아니다. IBM은 1970년대에 이를 측정했고, AT&T, HP, Microsoft의 연구가 수십 년에 걸쳐 동일한 범위를 확인했다. 비공식 리뷰는 저렴하고, 비동기적이며, 사회적으로 받아들여진다.…

AI 시대, 코드 리뷰는 명세 검토가 된다

AI가 명세에서 구현, 테스트, contract까지 만들어낼 수 있게 되면, 인간이 가장 크게 기여할 수 있는 일은 더 앞단으로 이동합니다. 가장 엄격하게 검토해야 할 대상은 구현이 아니라 명세 그 자체입니다.

AI를 붙여 몇 주만 개발해 봤어도, 아마 이 감각을 이미 알고 있을 겁니다. PR을 엽니다. 코드는 충분히 깔끔합니다. 이름도 무난합니다. 테스트도 있습니다. 겉으로 보기엔 분명히 망가진 곳이 없습니다. 그런데도 어딘가가 걸립니다. 경계가 조금 흐릿한 걸지도 모릅니다.…