개발자가 적시에 코드 검토를 수행하도록하는 방법


12

내가 일하는 회사는 모든 코드를 커밋하기 전에 다른 개발자가 검토해야합니다. 다른 개발자가 너무 바빠서 리뷰를하기에 너무 바빠서, 특히 매우 긴 경우, 우리 팀원들은 종종 좌절합니다. 적시에 코드 검토를 수행하도록 다른 개발자에게 인센티브를 제공하는 방법은 무엇입니까?

(우리는 git-svn을 사용하므로 검토를 기다리는 동안 코딩을 계속할 수 있습니다. 그러나 코드를 커밋하기 전에 오랜 시간을 기다려야 할 때 여전히 좌절감을 느낍니다.)

답변:


12

페이스 북이 phabricator라는 자신의 앱으로 어떻게 작동하는지보십시오 : http://phabricator.org/

그들은 기본적으로 이슈별로 커밋하며, 각 이슈에 대해 누군가가 검토 할 코드가 표시됩니다. 리뷰어가 괜찮다고 말하기 전까지는 코드가 메인 리포지토리에 들어 가지 않습니다.

더 재미있을 것 같아요.

또한 코드는 코드를 작성하는 사람과 코드를 검토하는 사람에게 할당되어야합니다.

아마도 당신의 팀원들은이 리뷰를 믿지 않을 것입니다.

개인적으로 검토자가 부족한 경우 저급 기능에 대해서는 단위 테스트를 사용하고 나머지는 모두 "관리자 테스트"를 사용했습니다. 관리인 테스트조차도 그렇게합니다. 관리 인도 코드를 이해할 수 있어야합니다.

나는 보통 블록 / 함수 범위 괄호, 가시성 표기법, 때로는 유형과 같은 사소한 부분을 제거하고 관리자, 도메인 전문가, 동료에게 코드를 요청한 사람에게 보여주었습니다.

또한, 개인적 으로 거기에 가서 검토가 끝날 때까지 떠나지 않는 것이 도움이됩니다.

또는 팀에 문제가 있거나 팀에 문제가없는 경우 "회사를 바꿀 수 있다면 회사를 바꾸십시오"라는 것을 알고 있습니다.


9

나는 이것을 몇 가지 가정에 기초 할 것이다.

  1. 모든 사람이 코드를 작성하고 싶어하는 것 같습니다 (그렇지 않은 경우 필요한 사람이 있습니다).
  2. 누구나 자신의 코드를 체크인하기를 원합니다.

리뷰를 작성한 사람 만 코드를 체크인하도록 허용하십시오.

어쩌면 혼동되는 문제를 피하기 위해 특정 시간 블록을 코드 검토에 전념 할 수 있습니다.

품질 코드를 확인하는 것이 목표입니다. 모든 사람이 "고무 도장"승인을받은 지점까지 리뷰를 처벌 / 강제하고 싶지 않습니다.

다른 레벨 (jr., sr. 등)이있는 경우 직급을 홍보하고 직급을 유지해야합니다.


1

우리는 몇 명의 이전 고용주에서 매일 Code Review에있는 사람을 교체했습니다. 일반적으로 3 명이 CR의 날을 공유했으며 각 CR은 검토 자 중 2 명이 서명해야했습니다. 이것은 당신의 하루가되었을 때, 다른 프로젝트와 상관없이 CR이 당신에게 기대된다는 것을 알았습니다. 그래서 5 일마다, 그것은 당신의 차례 였고 그에 따라 개발 작업을 조정할 수있었습니다.

현재 팀 리더는 팀 코드에 커서 CR을 표시합니다. CR이 완료된 후 응용 프로그램의 어느 영역이 업데이트되었는지에 따라 CR이 글로벌 검토 팀에 부딪 칠 수 있습니다. 단일 기능과 관련이 있습니다. 많은 검토가 수행 될 때, 우리는 보통 소수의 사람들 사이에서 분석을 수행하므로 아무도 엄청나게 많은 수의 파일에 대한 변경을 처리 할 필요가 없습니다.

즉, 현재 Dev 분기 / 변형에 커밋 된 코드 만 검토하고 있습니다. 코드는 다음 (예 : 알파) 환경으로 승격되기 전에 코드 검토, 글로벌 검토, DB 검토 및 UI 검토 (필요한 경우)를 통과해야합니다.

마지막으로 리뷰가 얼마나 빨리 처리되는지에 대한 SLA에 동의합니다. 48 시간 이상 대기열에있는 것은 거의 없으며 대부분의 검토는 24 시간 이내에 완료됩니다.


1

내가 일하는 회사는 모든 코드를 커밋하기 전에 다른 개발자가 검토해야합니다. 우리 팀원들은 종종 좌절합니다 ...

프로덕션 릴리스 후보 코드에 미션 크리티컬 소프트웨어 또는 중요 패치를 수행하지 않는 한 특정 유형의 코드 검토를 엄격하게 고수해야 할 이유는 없습니다.

  • 회사 요구 사항에 대한 아이디어는 표면적으로는 합리적으로 들리지만 (100 % 검토 코드), 사용하기로 결정한 수단은 비생산적입니다.

먼저, 커밋 후 코드 검토가 커밋 전과 동일하게 간주 된다는 경영진을 지적하겠습니다 . 이러한 용어 는 웹에서 검색 할 수 있습니다. 필요한 경우이를 백업하기위한 참조가 있습니다. 100 % 검토 된 코드를 얻기 위해 반드시 사전 커밋 검토가 필요하지는 않습니다 .

위의 내용을 바탕으로 다음은 마이크로 매니지먼트 태도 를 떨어 뜨리고 개발자가 자신에게 더 편한 느낌을 가지도록 제안합니다. 사전 또는 사후 검토는 프로그래머가 선택하는 것이 가장 좋습니다. 회사가 프로그래머보다 더 잘 알고 있다면 왜 코드를 직접 작성하지 않습니까?


1
"회사가 프로그래머보다 더 잘 알고 있다면 왜 코드를 직접 작성하지 않습니까?": 매우 좋은 의견! 그러나 개발 관리자가 이전 개발자 자체가되기를 바랍니다.
Giorgio

3
커밋 후 내 경험에서 코드 품질이 크게 저하됩니다. 프로그래머들은 게으 르며, 커밋 될 수 있다면 그들이 끝났다고 느낄 것입니다. " 유일하게 좋은 대답은 아니오이며, 관리자는 자신에 대한 것보다 프로그래머에 대한보다 현실적인 이미지를 가지고 있기 때문에 사전 커밋 (또는 최소한 사전 병합) 코드 검토가 필요합니다.
Aadaam

@Aadaam 당신의 경험은 분명히 커밋 후 포스트 커밋뿐만 아니라 "프로그래머가 게으르다"의 부분과 관련하여 분명히 다릅니다.보다 현실적인 이미지를 가진 관리자에 관해서는 일반적으로 다음과 같습니다. 내 팀; 그것은 어떤 종류의 검토를 강요해야하는지에 대한 무의미한 아이디어를 다루는 데 사용했던 관리자를 이끌지 못했습니다.
gnat

글쎄, 나는 아웃소싱에서 일했다. 아웃소싱에서 대부분의 프로그래머는 프로그래밍이 재미 있기 때문에 프로그래밍에 참여하지 않고 프로그래밍이 최고의 작업 / 지급 비율을 가지기 때문에 다른 어떤 것보다 훨씬 높은 비율을 가지고 있기 때문에 다른 직업처럼 싫어합니다. 내가 무슨 뜻인지 알면이 비율을 더 "최적화"하기 위해 모든 것을 시도하십시오 ...
Aadaam

1

해결해야 할 여러 가지 문제가 있습니다. 마음과 생각을 이겨야하고 코드 검토에 시간을 사용할 수 있도록해야합니다.

두 번째 부분은 아마도 가장 쉬운 것입니다-개발자가 매일 아침 가장 먼저하는 일은 코드 검토라는 데 동의합니다 (총체적으로 관리가 포함되어야 함)-이것은 간단하고 이해 가능하며 효과적이며 사람들을 이길 수있는 명확한 명확한 스틱을 제공합니다 그들이 준수하지 않으면. 더 나은, 당신은 아무것도 방해하지 않고, 코드 작업을 중단하도록 요구하지 않고 사람들에게 할 일 목록에 무언가를 넣도록 요구하지 않습니다 ...

첫 번째 부분은 실제 문제입니다. 검토 과정의 참가자는 가치가있는 것으로 간주해야합니다. 그렇지 않으면 코드를 작성하거나 버그를 수정할 수있는 코드 검토 (값이없는 것으로 인식됨)를 수행하지 않습니다. 확실히 더 중요합니다 ...?).

두 가지를 함께 사용할 수 있다면 (첫째로 모든 사람들이 코드 검토에 가치가 있다고 생각하거나 이해하도록 보장하는 것) 가장 기본적으로 버그가 줄어든다는 것을 의미합니다. 일반적으로 더 재미있는 새로운 코드를 의미합니다. 코드 검토를위한 일정에 명확한 공간이있을 수 있기를 바랍니다. 그러면 좋은 일이 일어날 것입니다. 그것은 문화의 일부가 될 것입니다.

문화의 일부가되면 더 이상 "매일"을 말할 필요가 없을 수도 있습니다.하지만 그것이 패턴에 잘 맞다고 생각하면 개발자가 일하고 싶어 할 것입니다.


당신은 할 수없는 정말 처음부터 규칙이 "매일 제일 먼저"동의합니다. 누군가 회사에 시간당 X 달러의 비용이 드는 버그를 발견하거나 중요한 마감 시한을 놓칠 위험을 시간당 X 퍼센트 포인트 씩 증가시키는 버그를 발견하고 5 분 전에 코드 버그가 발생하면 코드 검토가 최우선. 기본적으로 문제는 간단한 규칙을 설정하려는 욕구와 우선 순위가 항상 단순하지 않다는 사실 사이의 충돌입니다. 위험은 모든 사람들이 규칙에 전적으로 동의 할 것이며 24 시간 이내에 오늘이 규칙에 예외가되는 이유를 찾는 것입니다.
Steve Jessop

솔루션은 까다 롭지 만 IME는 시간이 많이 걸리지 만 가치가있는 새로운 작업 관행을 도입하기에 충분한 "공간"을 찾아야합니다. 이를 위해서는 여유 시간을 파악하고 가치있는 변화를 도입 할 때 마감일을 앞당기려는 의지 또는 둘 다를 파악할 수있는 통찰력이 필요합니다. 탄 스타 플. 당신이 말했듯이, 일단 모든 사람들이 패턴에 정착되면 그들은 예외를 만들 수 있습니다. 그들이 일반적인 패턴의 가치에 대한 적절한 인식을 바탕으로 그렇게하기를 바랍니다.
Steve Jessop

"마감일 마감"이라고 말하면 "마감일 마감"이라고 말했을 것입니다. "슬립"은 커밋 된 후 (즉, 실패한 후) 이동 함을 의미하지만 그렇게 할 필요는 없습니다. 융통성없는 새로운 규칙 (그리고 새로운 프로세스를 따르려고하는 사람들로 인한 불가피한 비 효율성)으로 인해 생산성이 약간 저하되는 기간을 계획 할 수 있습니다. 코드 검토를 먼저 수행하면 아침 스크럼을 놓치게됩니다 코드 검토가 너무 오래 걸리거나 조직이 믹스에 던질 수있는 독창적 인 문제가 발생할 경우 좋은 규칙이라면 곧 시작한 곳보다 빨리 올라갑니다.
Steve Jessop

@SteveJessop 물론 당신은 진정으로 동의 할 수 있습니다. 물론 예외도있을 것입니다 (스크럼 관측은 어리석은 것으로 생각됩니다-특히 답이 명백한 것처럼 (-:). 나는 "모든 솔루션에 맞는 하나의 크기"가 없다는 것이 핵심이라고 생각합니다. 이해하기 쉽고 간단하고 그리고 뭔가 제안 상대적으로 일의 일정으로 충돌 할 하드를 (다시 환경에 따라)
머피

1

내가 일한 대부분의 회사에서 검토를 완료하는 데 3 일이 걸립니다. 리뷰를하지 않는 것은 허용되지 않습니다. 그것은 당신의 일의 일부입니다. 시간에 알맞은 리뷰를하지 않으면 성능 평가에 영향을줍니다. 그리고 네, 리뷰는 항상 가장 부적절한 시간에 일어나는 것 같습니다. 평가가 너무 나쁘다. 어쨌든, 경영진이 진정으로 검토가 중요하다고 믿는 경우 (즉, 모든 코드를 검토해야 함) 유사한 정책을 추진할 것입니다. 또한 할당 된 시간 내에 검토를 완료하지 않으면 자료에 대한 수용으로 간주됩니다.


0

Review Board 와 같은 도구를 사용해보십시오 . 특히 긴 리뷰에 매우 유용합니다.

diff를 업로드하고 검토자가 검토를 마칠 때까지 기다릴 수 있습니다. 작업을 계속할 수없는 공개 검토가있는 경우 매일 회의 중에이를보고 할 수 있습니다 (팀은 가능한 빨리 테스트 할 수 있도록 새로운 기능을 체크인하기를 원하십니까?).


0

다른 답변에없는 몇 가지 사항을 추가하십시오.

검토 할 코드는 체크인해야합니다

  • 안정적인 버전을 검토하고 있습니다.
  • 릴리스가 멀리 떨어져 있으면 기본 개발 지점에있을 수 있습니다.
  • 메인을 오염시키지 않는 합당한 이유가 있다면 지점에있을 수 있습니다.

차단 작업이 우선하므로 코드 검토가 다른 작업보다 우선해야합니다 (그러나 흐름을 방해하지는 마십시오). 개발자는 다른 사람이 코드를 더 잘 검토하기를 원할 것입니다. 그 지식으로 당신은 다른 사람들을 위해 신속하게 검토를 수행해야합니다.

어려운 문제는 코드 검토를 언제 어떻게 수행해야 하는가입니다.

우리를 위해 일한 규칙은 공유 코드가 더 큰 영향을 미치기 때문에 공유 코드를 검토해야하는 반면 단일 응용 프로그램 (특히 테스트 중심 개발을 사용하는 경우)의 코드에서는 덜 중요하다는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.