É apropriado ter comentários positivos nas revisões de código ou é exclusivo para críticas construtivas?

36

Ultimamente, tenho revisado muito o código e não tenho certeza dos efeitos positivos e negativos e do profissionalismo de colocar comentários positivos e / ou engraçados nos comentários.

Usamos o Github como nossa plataforma de revisão de código em minha equipe, para que os comentários sejam visualizados por qualquer pessoa. Geralmente, tento usar essa plataforma para que todo o processo do início ao fim seja visível e histórico.

Codeman
fonte
Sim, eu sei que isso tem a ver com cultura, mas estou procurando uma resposta geral.
Codeman 26/07
22
É importante reforçar o que você deseja ver com comentários positivos.
2
Eu não sei se é apropriado, mas às vezes eu posto haikus de codificação nas revisões: programador júnior - seu código não comentado é - como lascas de dor.
23913 yannis
Na verdade eu sou o programador júnior revisão do código do idoso - temos um processo muito rigoroso aqui, todo o código deve ser revisto :)
Codeman

Respostas:

53

É importante destacar aspectos positivos e negativos. Sei que, se estivesse revendo o refator de um subsistema infernal específico em algo arrumado e limpo, provavelmente compraria uma pizza ao programador por seus esforços.

Se você estiver usando comentários como treinamento, é duplamente importante - destacar um bom código será útil para os programadores juniores também revisarem esse código. Eles terão a chance de fazer perguntas sobre por que uma abordagem ou técnica específica é melhor que outra.

Jonathan Rich
fonte
Você pode adicionar uma observação sobre "por que isso é importante"? Eu vou marcar como aceito quando você faz isso :)
Codeman
3
Ele permite que as pessoas saibam que o que estão fazendo (escrevendo um bom código) é apreciado e mantém o foco no crescimento, que é a essência das revisões de código.
27613 Jonathan Rich
1
Você pode adicionar isso à sua resposta?
Codeman 26/07
2
Você merece o selo de resposta legal +1 para este. O número de lugares que não valorizam suficientemente as críticas construtivas sempre me surpreende. Dizer às pessoas que estão fazendo um bom trabalho quando estão fazendo um bom trabalho pode ser um motivador surpreendentemente eficaz.
Benjamin Gruenbaum 27/07/2013
@ Benjamin: muitas organizações tratam a revisão de código como um processo de 'carimbo dos defeitos que eu codifico' no carimbo de borracha e não como 'vamos construir uma equipe de alto desempenho'. Na minha experiência, as revisões de código são a maneira mais rápida e melhor de quebrar barreiras que impedem o desempenho real das equipes de software. Temos um padrão de notação em que prefixamos os comentários com -2 (deve ser corrigido) e até +2 (ótimo trabalho).
mattnz
8

Engraçado: guarde para o bebedouro, exceto em doses mínimas - não é necessário ter uma cara de ameixa para revisar o código.

Positivo: Certamente. A revisão inclui tanto positivo quanto negativo / construtivo, por definição.

O feedback positivo ajuda a todos:

Para quem recebe o polegar para cima, você reforça a confiança deles e os inspira a fazer mais do mesmo através do seu feedback positivo.

De resto, como outros já mencionaram, eles aprenderão o que fazer e o que não fazer . Eles também serão incentivados a se destacar, para que eles também possam um dia estar em destaque.

Certa vez, trabalhei para um chefe que era liberal em seu feedback positivo - a equipe foi muito bem-sucedida e produtiva como resultado. Ele seguiu em frente, e outros assumiram que não possuíam a capacidade de elogiar um trabalho bem feito. Produtividade e moral caíram, e muitos dos melhores membros da equipe deixaram a empresa.

Vetor
fonte
3

Eu diria que manter os comentários limpos e direto ao ponto, exatamente por causa da cultura.

Você não pode evitar que algumas pessoas tomem as coisas da maneira errada.
Para atenuar isso, uma conversa pessoal vai facilitar as coisas, se não for possível enfrentar pessoalmente, conversar, enviar e-mail ou skype.

ton.yeung
fonte
1
Bom ponto. Ser "engraçado" nos comentários pode facilmente sair pela culatra, especialmente em ambientes multilíngues e multiculturais.
David Navarre
2

Comentar em uma revisão de código está gerenciando

Tratar comentários como uma ferramenta de gerenciamento

Inserir comentários em uma revisão de código é uma forma de gerenciamento. Como tal, deve ser abordada como uma ferramenta de gerenciamento.

Use práticas gerenciais ao comentar

Existe uma estrutura para gerenciar pessoas em que o objetivo é atingir o resultado desejado. Algumas das principais abordagens de gerenciamento não serão aplicadas nos comentários, mas a maioria será. Os tópicos aplicáveis ​​incluem ambiente, liderança, organização e controle.

Meio Ambiente

Cultura

O ambiente dita o estilo de gerenciamento. A cultura e o ambiente do local de trabalho devem ser lembrados ao usar qualquer ferramenta de gerenciamento. Geralmente, isso é afetado pelo setor e pelo tamanho da empresa ou entidade que está sendo gerenciada.

Estilo

Se houver uma cultura alegre, isso pode se deparar com o estilo de gerenciamento usado. Se houver diretrizes, políticas e conseqüências muito estritas, isso deve se refletir no estilo usado. Então, se todos estão a bordo de uma piada de Guerra nas Estrelas referenciando dróides e um stormtrooper de mente fraca, uma interjeição cômica pode ser aplicável. No entanto, se houver consequências terríveis de não levar o resultado final a sério, talvez seja necessário evitá-lo.

Liderança

Fundamentos

Existem três pilares principais de liderança a serem considerados ao comentar. Ou seja, são visão, comunicação e julgamento.

Vision

É importante ter em mente a grande visão ao explicar ou dar instruções. Nos comentários, isso pode significar apontar como as pequenas mudanças afetam o projeto como um todo, quais são as implicações de adotar abordagens diferentes ou uma dica para separar as preocupações.

Communication

Ser um bom comunicador é importante em muitos aspectos da vida. Não é diferente nos comentários. Empregar um nível sábio de brevidade é importante - especialmente porque os comentários não devem ocupar muito espaço. Vá direto ao assunto e faça backup com um exemplo, se necessário. Em uma organização maior, isso também pode incluir a necessidade de enviar um comunicado ou nota se o problema não estiver localizado em uma sessão de revisão.

Judgement

É importante que a estratégia seja usada ao julgar se os comentários precisam ou não ser feitos e quais são as alterações. Seu julgamento nem sempre precisa ser correto, mas precisa ser consistentemente correto, especialmente quando grandes solicitações de julgamento são feitas.

Organização

Do ponto de vista gerencial, a organização se refere a manter o objetivo final em mente e garantir que os processos estejam alinhados para seguir um conjunto de regras. Os comentários também devem ter isso em mente, pois quando possível, os comentários devem ser construídos um para o outro para garantir que o fluxo do design seja seguido. Também será importante ter em mente o escopo do código que está sendo revisado para reduzir o acoplamento e seguir o design geral.

Controlando

Controlar as ações daqueles que estão sendo gerenciados é um processo delicado. Embora firme, também deve-se ter em mente que as pessoas são importantes. Existem várias habilidades gerenciais para usar ao controlar outras pessoas. Essas habilidades são políticas, conceituais, interpessoais, diagnósticas e técnicas.

Político

A política pode ser encontrada sempre que houver interação entre as pessoas. É um tópico enorme, mas, em um sentido geral, a política gira em torno da influência. É importante ter em mente as políticas pessoais e profissionais em ação ao fazer um comentário. Isso pode estar relacionado a uma instrução, uma piada ou mesmo uma pergunta.

Conceptual

Gerenciando através da conceituação é uma ferramenta importante. Requer uma análise complexa da situação em questão. Ao comentar, pode ser benéfico incluir algumas das análises usadas para chegar à conclusão ou alteração indicada na revisão.

Interpessoal

As habilidades interpessoais são muito importantes no gerenciamento. Este também é um tópico grande. Algumas das coisas importantes a serem consideradas nas habilidades interpessoais são mentoria, críticas construtivas e "arpões".

Mentoring

É importante que o gerenciamento seja visto mais como um mentor do que como um antagonista. Em uma revisão de código, isso significa que, às vezes, será benéfico incluir um aceno em um padrão ou abordagem de design que pode ser usado para melhorar uma situação.

Constructive Criticism

A crítica é importante porque invoca reflexão. No entanto, as críticas devem ser mantidas o mais positivas possível, quando possível. Isso significa oferecer evidências válidas para apoiar as críticas e também garantir que o tom usado não seja negativo. Ao revisar o código, isso pode incluir a exibição de uma exceção ou cenário possível que geraria um erro e, ao mesmo tempo, implicaria uma solução, em vez de mostrar todos os locais incorretos quando todo o código precisaria ser substituído de qualquer maneira.

"Harpooning"

"Arpão" é quando você arpoa figurativamente alguém no chão. Isso é feito dividindo-os passo a passo, sem qualquer indulto, até o ponto em que eles se sentem incapazes de se levantar. Se você arpoar uma pessoa em uma revisão de código ou em outro lugar, você perderá a cooperação. É importante evitar derrubar alguém excessivamente.


Sumário executivo

Trate os comentários em uma revisão de código como uma ferramenta gerencial. Lembre-se de que os comentários devem ser breves, diretos e construtivos. Certifique-se também de que, ao comentar a pessoa que está sendo revisada, seja levada em consideração.

Travis J
fonte
A revisão de código não deve ser gerencial. Seu outro nome é "revisão por pares" por um bom motivo. A outra questão que tenho com a resposta é que ele deveria ser o código em revisão, não a pessoa. Se a revisão de código for tratada como uma revisão da pessoa, ela se tornará (ou em breve) uma ferramenta de gerenciamento para 'espancar as pessoas'. Assista a isso se tornar uma entrada nos KPIs e assista aos jogos que os Pares jogam - "Esse código poderia ser melhor, deixarei passar, se você prometer ficar mais fácil no meu próximo lançamento de código"
mattnz
@mattnz - Os colegas gerenciam um ao outro com frequência. Além disso, nem todas as organizações operam em uma hierarquia estritamente de cima para baixo, caso em que os pares são um fator-chave do gerenciamento. No entanto, discordo de sua afirmação de que uma revisão de código não se refere ao indivíduo. Corrigir maus hábitos de codificação requer orientação real, e emitir essa orientação de maneira graciosa e respeitosa é muito importante para que seja bem-sucedido.
Travis J
@mattnz - Observe também que nunca sugiro que a revisão de código seja uma revisão da pessoa. Percebo que você apoiou a resposta aceita aqui, com a qual também concordo. No entanto, o mais estranho é que a resposta se concentra explicitamente no indivíduo, comprando pizza e oferecendo-lhe elogios pessoalmente. Não tenho nenhum problema com isso, mas como você pode dizer que isso também não é uma "revisão da pessoa". Para ser sincero, parece mais que você leu apenas a primeira e a última frase desta resposta.
Travis J
0

As revisões de código são uma ferramenta para melhorar a qualidade do código, em parte descobrindo defeitos. Mais importante, você deseja incutir boas práticas de codificação.

Nesta perspectiva, é importante comentar sobre as coisas bem feitas. Em um contexto de treinamento, as melhorias também devem ser comentadas. Se sua cultura é de melhoria contínua, você deve sempre comentar sobre as melhorias.

Erros, erros e codificação incorreta acontecerão. Apontá-los de maneira não pessoal e tratá-los como esperado.

Do ponto de vista da modificação comportamental, a recompensa é muito melhor em produzir mudanças do que punições. Eu consideraria ter um bom trabalho percebido como recompensa.

BillThor
fonte