코드 검토에서 긍정적 인 의견을 제시하는 것이 적절합니까, 아니면 건설적인 비판에만 해당됩니까?


36

나는 최근에 많은 코드 검토를 해왔으며, 코드 검토에 긍정적이고 / 혹은 재미있는 주석을 넣는 긍정적이고 부정적인 영향과 전문성이 확실하지 않습니다.

우리 팀의 코드 검토 플랫폼으로 Github을 사용하므로 누구나 의견을 볼 수 있습니다. 나는 일반적으로이 플랫폼을 사용하여 시작부터 끝까지 전체 프로세스를 볼 수 있고 역사적입니다.


예, 저는 이것이 문화와 관련이 있다는 것을 알고 있지만 일반적인 답변을 찾고 있습니다.
Codeman

22
긍정적 인 의견으로보고자하는 것을 강화하는 것이 중요합니다.

2
그것이 적절한 지 모르겠지만 때로는 리뷰에 코딩 haikus를 게시합니다. 주니어 프로그래머-주석 처리되지 않은 코드는 고통의 파편과 같습니다.
yannis

저는 실제로 상급자 코드를 검토하는 주니어 프로그래머입니다. 여기에는 매우 엄격한 과정이 있으며 모든 코드를 검토해야합니다. :)
Codeman

답변:


53

부정적인면뿐만 아니라 긍정적 인면을 강조하는 것이 중요합니다. 나는 특정 지옥 같은 하위 시스템의 리 팩터를 깔끔하고 깨끗한 것으로 검토하고 있다면 프로그래머에게 피자를 사서 노력할 것입니다.

리뷰를 교육으로 사용하는 경우 두 가지가 중요합니다. 좋은 코드를 강조 표시하면 주니어 프로그래머도 해당 코드를 검토하는 데 도움이됩니다. 그들은 왜 특정 접근법이나 기술이 다른 것보다 나은지에 대해 질문 할 기회를 갖게 될 것입니다.


"중요한 이유"에 대한 메모를 추가 할 수 있습니까? 당신이 그렇게 할 때 받아 들여진 것으로 표시하겠습니다 :)
Codeman

3
사람들이 자신이하고있는 일 (좋은 코드 작성)에 감사하고 성장에 중점을 두며 코드 검토의 핵심입니다.
Jonathan Rich

1
이것을 답변에 추가 할 수 있습니까?
Codeman

2
+1 당신은 이것에 대한 멋진 답변 배지를받을 자격이 있습니다. 건설적인 비판을 충분히 가치있게 여기지 않는 곳의 수는 항상 나를 놀라게합니다. 사람들이 좋은 일을 할 때 좋은 일을하고 있다고 말하는 것은 놀랍도록 효과적인 동기 부여가 될 수 있습니다.
Benjamin Gruenbaum

@Benjamin : 너무 많은 조직이 코드 검토를 '고품질 팀을 구축하게하지 말고'고무 스탬핑 프로세스가 아니라 '서로 코드를 작성하는 결점 찾기'로 취급합니다. 내 경험상 코드 검토는 소프트웨어 팀이 실제로 수행하는 것을 방해하는 장벽을 없애는 가장 빠르고 최상의 방법입니다. 우리는 주석 앞에 -2 (고정되어야 함)를 +2 (큰 일)로 접두사로 표기하는 표준 표기법을 가지고 있습니다.
mattnz

8

재미 있음 : 최소한의 복용량을 제외하고는 워터 쿨러를 위해 저장하십시오. 자두 얼굴을 갖는 것이 코드를 검토 할 필요는 없습니다.

긍정적 : 확실히. 검토에는 정의에 따라 긍정적 및 부정적 / 건설적 모두가 포함됩니다.

긍정적 인 피드백은 모두에게 도움이됩니다.

엄지 손가락을받는 사람에게는 자신감을 강화하고 긍정적 인 피드백을 통해 더 많은 일을하도록 영감을줍니다.

나머지는 다른 사람들이 언급했듯이 해야 할 일과 하지 말아야 할 일을 배울 입니다. 그들은 또한 탁월하도록 장려 될 것이므로 언젠가는 주목받을 수 있습니다.

나는 한때 그의 긍정적 인 피드백에 자유로 워진 상사를 위해 일했습니다. 그 결과 팀은 매우 성공적이고 생산적이었습니다. 그는 전진했고, 다른 사람들은 잘한 일을 칭찬 할 능력이없는 것을 대신했습니다. 생산성과 사기가 급격히 높아졌고, 많은 우수한 팀원들이 회사를 떠났습니다.


3

나는 문화 때문에 정확하게 의견을 깨끗하고 요점으로 유지한다고 말하고 싶습니다.

어떤 사람들은 잘못된 길을 택하지 않을 수 없습니다.
이를 완화하기 위해, 일대일 대화는 얼굴을 마주 보는 것이 불가능한 경우 채팅 또는 이메일 또는 스카이프를 통해 일을 부드럽게합니다.


1
좋은 지적. 주석에서 "재미있는"것은 특히 다국어, 다문화 환경에서 쉽게 역효과를 낳을 수 있습니다.
David Navarre

2

코드 검토에서 주석 처리 중

의견을 관리 도구로 취급

코드 검토에 주석을 삽입하는 것은 일종의 관리입니다. 따라서 관리 도구로 접근해야합니다.

의견을 말할 때 관리 관행을 사용하십시오

원하는 결과를 달성하는 것이 목표 인 사람들을 관리하는 구조가 있습니다. 경영진에 대한 주요 접근 방식 중 일부는 의견에 적용되지 않지만 대부분 의지입니다. 적용 가능한 주제에는 환경, 리더십, 조직 및 통제가 포함됩니다.

환경

문화

환경은 관리 스타일을 나타냅니다. 관리 도구를 사용할 때는 작업장의 문화와 환경을 염두에 두어야합니다. 일반적으로 이는 산업 및 관리되는 회사 또는 조직의 규모에 영향을받습니다.

스타일

경건한 문화가 있다면, 그것은 사용되는 경영 스타일에서 나올 수 있습니다. 매우 엄격한 지침, 정책 및 결과가있는 경우 사용 된 스타일에 반영해야합니다. 따라서 모든 사람이 드로이드를 참조하는 스타 워즈 농담과 약한 생각 나게하는 폭풍우 조종사에 탑승했다면 코미디 영화가 적용될 수 있습니다. 그러나 최종 결과를 심각하게 받아들이지 않으면 심각한 결과를 초래할 수 있으므로 피해야합니다.

지도

기초

의견을 제시 할 때 고려해야 할 세 가지 주요 리더십 기둥이 있습니다. 즉, 그들은 비전, 의사 소통 및 판단입니다.

Vision

설명하거나 지시 할 때 웅대 한 비전을 염두에 두어야 할 때 중요합니다. 이는 작은 변화가 프로젝트 전체에 어떤 영향을 미치는지, 다른 접근법을 취하고있는 의미 또는 우려를 분리시키는 데 도움이되는 모자를 지적하는 것을 의미 할 수 있습니다.

Communication

인생의 여러 측면에서 훌륭한 대화자가되는 것이 중요합니다. 의견에서 다르지 않습니다. 현명한 수준의 간결성을 유지하는 것이 중요합니다. 특히 의견에는 많은 공간이 필요하지 않기 때문입니다. 요점을 일찍 찾아서 필요한 경우 예를 들어 백업하십시오. 규모가 큰 조직에서는 문제가 한 번의 검토 세션으로 현지화되지 않은 경우 통신 또는 메모를 보내야 할 수도 있습니다.

Judgement

의견이 필요한지 여부와 변경 사항이 무엇인지 판단 할 때 전략을 사용하는 것이 중요합니다. 판단이 항상 정확할 필요는 없지만, 특히 큰 판단이 내려 질 때 일관되게 정확해야합니다.

조직

관리 관점에서 조직은 최종 목표를 염두에두고 프로세스가 일련의 규칙을 따르도록 조정하는 것을 말합니다. 의견은 가능한 한 의견을 서로 작성하여 디자인의 흐름을 따르도록해야한다는 점을 명심해야합니다. 커플 링을 줄이고 전체 설계를 따르려면 검토중인 코드의 범위를 명심해야합니다.

통제

관리되는 사람들의 행동을 통제하는 것은 섬세한 과정입니다. 확고하면서도 사람들이 중요하다는 점을 명심해야합니다. 다른 사람을 통제하면서 사용할 몇 가지 관리 기술이 있습니다. 이러한 기술은 정치적, 개념적, 대인 관계, 진단 및 기술입니다.

주재관

사람들 사이에 상호 작용이있을 때마다 정치를 찾을 수 있습니다. 그것은 큰 주제이지만 일반적으로 정치는 영향력을 중심으로합니다. 의견을 제시 할 때는 개인적이고 전문적인 정치를 염두에 두어야합니다. 이것은 지시, 농담 또는 질문과 관련이있을 수 있습니다.

개념

개념화를 통한 관리는 중요한 도구입니다. 현재 상황에 대한 복잡한 분석이 필요합니다. 의견을 제시 할 때 검토에 표시된 결론이나 변경 사항을 제시하는 데 사용 된 일부 분석을 포함시키는 것이 유리할 수 있습니다.

대인 관계

대인 관계 기술은 관리 할 때 매우 중요합니다. 이것은 또한 큰 주제입니다. 대인 관계 기술로 고려해야 할 중요한 사항 중 일부는 멘토링, 건설적인 비판 및 "하루 핑"입니다.

Mentoring

경영진은 길항제보다는 멘토로 여겨지는 것이 중요합니다. 코드 검토에서 이는 상황을 개선하는 데 사용될 수있는 디자인 패턴이나 접근 방식에 대한 끄덕임을 포함하는 것이 유익하다는 것을 의미합니다.

Constructive Criticism

비판은 반성을 불러 일으키기 때문에 중요하다. 그러나 비판은 가능한 한 긍정적으로 유지해야합니다. 이는 비판을 뒷받침 할 수있는 유효한 증거를 제공하고 사용 된 톤이 음수가 아닌지 확인하는 것을 의미합니다. 코드를 검토 할 때 전체 코드를 교체해야 할 때 잘못된 모든 위치를 표시하는 대신 솔루션을 암시하면서 오류를 발생시키는 예외 또는 가능한 시나리오를 표시하는 것이 포함될 수 있습니다.

"Harpooning"

"Harpooning"은 비 유적으로 누군가를 땅에 뿌릴 때입니다. 이것은 그들이 일어나지 못한다고 느낄 때까지 되풀이하지 않고 단계적으로 분류함으로써 이루어집니다. 코드 검토 또는 다른 곳에서 사람을 작살하면 그들의 협력을 잃게됩니다. 누군가를 지나치게 무너 뜨리는 것을 피하는 것이 중요합니다.


행정상 개요

코드 검토에서 주석을 관리 도구로 취급하십시오. 의견은 간결하고 요점에 따라 구성 적이어야합니다. 또한 검토중인 사람이 의견을 제시하는 동안 고려되어야합니다.


코드 검토는 관리적이지 않아야합니다. 다른 이름은 '피어 리뷰'입니다. 내가 대답 한 다른 문제는 사람이 아닌 검토중인 코드 여야한다는 것입니다. 코드 검토가 개인에 대한 검토로 간주되면 '사람들을 때리는'관리 도구가되었습니다. 그것이 KPI의 입력이되고 Peers가 플레이하는 게임을보십시오.- "그 코드가 더 나을 수 있습니다. 다음 코드 드롭에서 쉽게 진행하겠다고 약속하면 미끄러지게하겠습니다"
mattnz

@mattnz-동료들이 서로를 자주 관리합니다. 또한 모든 조직이 엄격하게 하향식 계층 구조로 운영되는 것은 아니며,이 경우 동료가 관리의 핵심 요소입니다. 그러나 코드 검토가 개인에 관한 것이 아니라는 귀하의 주장에는 문제가 없습니다. 나쁜 코딩 습관을 교정하려면 실제 지침이 필요하며, 지침을 훌륭하고 정중하게 제시하는 것이 성공하기 위해서는 매우 중요합니다.
트래비스 J

@mattnz-또한, 한 번도 코드 검토가 사람에 대한 검토임을 암시하지 않습니다. 동의 한 답변을 여기에서 지원했음을 확인합니다. 동의합니다. 그러나 이상한 점은 답변이 개인에게 명시 적으로 초점을 맞추고 피자를 사서 개인적으로 칭찬을 제공한다는 것입니다. 나는 그것에 대해 아무 문제가 없지만 어떻게 "사람에 대한 검토"가되지 않습니까? 솔직히 말하면이 답변의 첫 번째 문장과 마지막 문장 만 읽는 것처럼 보입니다.
트래비스 J

0

코드 검토는 부분적으로 결함을 발견하여 코드 품질을 향상시키는 도구입니다. 더 중요한 것은 좋은 코딩 방법을 도입하려는 것입니다.

이러한 관점에서 잘 수행 된 것에 대해 언급하는 것이 중요합니다. 교육 상황에서 개선 사항에 대해서도 언급해야합니다. 귀하의 문화가 지속적인 개선 중 하나라면, 항상 개선에 대해 언급해야합니다.

실수, 버그 및 잘못된 코딩이 발생합니다. 비 개인적인 방식으로 지적하고 예상대로 취급하십시오.

행동 수정 관점에서 보상은 처벌보다 변화를 낳을 때 훨씬 낫습니다. 나는 좋은 일을 보상으로 여기는 것을 고려할 것입니다.

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