AI 시대의 코드 검토 : 개발자가 항상 Merge 버튼을 소유하는 이유

AI 시대의 코드 검토 : 개발자가 항상 Merge 버튼을 소유하는 이유

Github이 2008 년에 PR (Pull Reques)을 처음으로 배송했을 때, 소셜 워크 플로우에서 일반 텍스트 차이를 감싸고 있습니다. 주석, 승인 및 다른 개발자로부터 적어도 한 번의 엄지 손가락없이 조명을 거부하는 병합 버튼. 이 디자인 결정은 최신 소프트웨어에 대한 어려운 책임과 관리자가 복도 대화 나 전자 메일 패치를 넘어 확장 할 수 있도록합니다.

17 년 후, 리서치 데모에서 엔터프라이즈 플랫폼에 이르기까지 거의 모든 “에이전트”코딩 도구는 여전히 동일한 병합 게이트를 통해 작업을 확대합니다. PR은 감사 로그, 거버넌스 계층 및 사람이 기꺼이 소유 할 때까지 아무것도 배송하지 않는 사회 계약으로 남아 있습니다.

이제 대형 언어 모델 (LLM)은 프로젝트를 발판, PR을 파일하고 심지어 자신이 쓴 의견을 검토하기 위해 답장을 할 수 있으므로 다음 질문은 누가 모델에서 나올 때 배송하는 코드에 대해 책임을 지는가?

Github에서는 대답이 근본적으로 변경되지 않았다고 생각합니다.“Merge”를 때리는 개발자입니다. 그러나 변경된 것은 클릭 전에 발생하는 모든 것입니다.

이 기사에서는 개발자가 AI와 점점 더 일하는 세계에 대한 코드 리뷰를 어떻게 다시 생각하는지 (및 팀도 할 수 있는지)를 탐색 할 것입니다.

Github Colet의 코드 검토 기능에서 배운 것

올해 초 Github Coleco Code Review 팀은 코드 검토 프로세스에 대해 개발자와 심층적 인 인터뷰를 수행했습니다. 그들은 또한 코드 검토 워크 플로를 안내했습니다. 이 인터뷰는 세 가지 일관된 패턴을 보여주었습니다.

  1. AI에 대한 특별한 치료 없음 : 검토 자들은 다른 개발자들로부터의 모델 생성을 구운 것으로 구워냅니다.
  2. 자체 리뷰가 바닥을 올렸습니다. PR을 개설하기 전에 Coplot Review를 실행 한 개발자는 종종 사소한 NIT-PICK (예 : 수입, 테스트 누락) 전체를 삭제하여 대략 3 분의 1을 차단했습니다.
  3. AI는 인간의 판단을 대체하지 않았습니다. 프로그래밍에는 종종 트레이드 오프가 포함됩니다. LLMS는 이러한 트레이드 오프에 대해 알려줄 수 있지만 누군가 조직의 목표와 표준을 바탕으로 어떤 경로를 취해야하는지에 대해 전화해야합니다.

가장 중요한 원칙은 빠르게 분명해졌습니다. AI는 개발자 판단을 강화합니다. 대체 할 수 없습니다. 그리고 신뢰 점수에서 Red-Flag 설명에 이르기까지 우리의 연구 결과는 Copilot의 코드 검토 기능을 어떻게 구축하는지 알려주고 있습니다.

AI가 오늘 처리 할 수있는 것과 할 수없는 것

LLM은 이미 리뷰의 “그라인드”층에서 훌륭합니다.

  • 기계적 스캔. “오타가 있습니까?” “모든 주장이 사용됩니까?”
  • 패턴 매칭. “이것은 SQL 주입처럼 보입니다”또는 “당신은 그 약속을 기다리는 것을 잊었습니다.”
  • 성가신 일관성. “가변 이름은 여기서 Snake_case, Camelcase.”

곧 그들은 제품 및 도메인 컨텍스트를 이해하는 것과 같이 더 많은 일을 할 수있을 것입니다. 그러나 그들은 여전히 부족합니다.

  • 건축 및 트레이드 오프. 이 서비스를 분할해야합니까? 로컬로 캐시?
  • 멘토링. 설명 패턴이 중요하며 언제 파손 해야하는지.
  • 값. 이 기능을 전혀 구축해야합니까?

이러한 격차는 개발자를 루프와 조종사 좌석에 유지합니다. 우리가 Github Copilot을 계속 개발함에 따라 그 원칙은 우리에게 기초적입니다.

현대 코드 리뷰를위한 플레이 북

AI-ASISTED 코드 리뷰에 대한 가장 효과적인 접근 방식은 풀 요청을 제출하기 전에 시작됩니다. 그것을 개발의 황금 규칙으로 생각하십시오. 코드 검토자를 당신이 원하는 방식으로 대우하십시오.

AI를 사용하여 ID에서 코드를 스스로 검토하십시오.

코드를 추진하기 전에 IDE에서 Github Copilot 코드 검토를 실행하여 명백한 내용을 포착하여 팀원이 개발자 통찰력이 필요한 미묘한 문제에 집중할 수 있습니다. Coplot Code Review는 무대 Diff, Docstrings를 제안하며 Null Deerference를 빗질 수 있습니다. 거기에서 PR을 제출하기 전에 찾은 모든 것을 고칠 수 있으므로 팀원들은 소음을 보지 못합니다.

코드의 소유권을 취하십시오

AI를 사용하여 코드를 생성한다고해서 코드가 아니라는 것은 아닙니다. 코드를 커밋하면 책임이 있습니다. 즉, 그것이 무엇을하는지 이해하고, 팀의 표준을 따르는지 확인하고 코드베이스의 나머지 부분과 잘 통합되는지를 의미합니다.

AI 에이전트가 코드를 작성하면 내 이름이 Git Blame에 표시되기 전에 청소해야합니다.

Jon Wiggins, 응답자의 기계 학습 엔지니어

자동화 된 CI 게이트를 통해 코드를 실행하십시오

파이프 라인은 이미 단위 테스트, 비밀 스캔, CodeQL, 종속성 검사, 스타일 라이터를 실행해야합니다. 계속 그렇게하십시오. 빠르게 실패하고 크게 실패하십시오.

개인 코드 위생에 대한 실용적인 팁 :

  • IDE에서 자신의 코드를 검토하십시오.
  • 팀의 컨벤션과 일치하는 가변 이름, 의견 및 구조를 확인하십시오.
  • AI 생성 코드를 풀 요청에 포함시키기 전에 철저히 테스트하십시오.

AI를 사용하여 판단이 중요한 영역에 집중하십시오.

코드 검토에서 AI의 실제 힘은 개발자를 검토 자로 대체하는 데 있지 않습니다. 검토 프로세스를 중단 할 수있는 일상적인 작업을 처리하여 개발자가 판단력이 가장 가치있는 위치에 집중할 수 있도록합니다.

AI는 기존 자동 점검을 교체하지 않습니다.

테스트가 통과하고 커버리지 메트릭이 충족되었는지 확인하고 개발자 리뷰가 시작되기 전에 정적 분석 도구가 작업을 수행했습니다. 이것은보다 의미있는 토론을위한 탄탄한 기초를 만듭니다.

LLM을 사용하여 구문 문제뿐만 아니라 패턴, 잠재적 인 버그 및 스타일 불일치도 포착 할 수 있습니다. 아이러니하게도, LLM은 특히 LLM이 저지르는 실수의 종류를 잡는 데 능숙하며, 이는 AI 생성 코드가 코드베이스에 들어가면 점점 더 관련성이 높습니다.

역할을 명확하게 정의합니다

AI 피드백을 고려해야 할시기와 인간의 판단이 우선하는 경우에 대한 명확한 기대치를 설정하십시오. 예를 들어, 코드 아키텍처 및 비즈니스 목표 및 조직 가치와 일관성을 위해 다른 개발자에게 의존해야합니다. AI를 사용하여 작은 물건을 놓치기 쉬운 긴 반복적 인 PR을 검토하는 것이 특히 유용합니다.

지속 가능한 AI 지원 검토 프로세스 구축을위한 구현 팁

  • 명확한 지침을 문서화하십시오 이는 코드 검토에서 AI를 사용하는시기, 신뢰할 피드백 유형 및 개발자가 AI 코드 검토에 동의하지 않을 때 에스컬레이션하는 방법을 지정합니다. 예를 들어 Github Copilot을 사용하면 사용자 정의 지침을 사용하여 Copilot이 코드와 관련된 방법에 대한 명확한 규칙을 설정할 수 있습니다.
  • 지침을 정기적으로 업데이트하십시오 팀 피드백 및 진화 AI 기능을 기반으로합니다. 코드베이스 및 AI 도구가 발전함에 따라 오늘날 작동하는 것은 내일 작동하지 않을 수 있습니다.
  • 열린 팀 토론을 장려하십시오 AI 지원 검토의 강점과 한계에 대해. 모든 사람이 자신의 접근 방식을 배우고 개선하도록 돕기 위해 긍정적 인 경험과 부정적인 경험을 공유하십시오.
  • 자동화를 지속적으로 개선하십시오 검토 자의 피드백을 사용하여 자동 테스트 전략을 개선합니다. 반복 문제에 대한 솔루션을 자동화 할 수있는 패턴을 식별하십시오.

개발자 판단은 여전히 중요합니다

AI는 코드 검토에서 일상적인 작업의 많은 부분을 처리 할 수 있지만, 개발자 판단은 건축 결정, 멘토링 및 지식 전달, 제품 및 사용자에 대한 이해가 필요한 상황 별 결정에 대해 대체 할 수 없습니다.

그리고 LLM이 더 똑똑해 지더라도 세 가지 검토 작업은 고집스럽게 인간으로 남아 있습니다.

  1. 아키텍처 트레이드 오프:이 서비스를 분할해야합니까? 로컬로 캐시? 지금 또는 나중에 기술 부채를 지불 하시겠습니까?
  2. 멘토링과 문화: PR 스레드는 팀 교실입니다. 봇은 주니어 엔지니어에게 그 이상한 정규식의 전쟁 이야기를 전할 수 없습니다.
  3. 윤리 및 제품 가치: “우리는 이것을 만들어야합니까?” Ai가 대답 할 수없는 질문입니다.

목표는 개발자가 자신이 최선을 다하는 일에 집중할 수있게함으로써 더 효과적으로 만드는 것입니다.

자세히 알아보십시오 Github Copilot>의 코드 리뷰 정보

작성자가 작성했습니다

그녀는 Shwer

Github의 수석 제품 관리자

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다