Como lidar com alguém que não gosta da ideia de revisão de código?

26

Obviamente, se a gerência dedica tempo à revisão de códigos, todos precisam fazer isso.

Mas sempre existem aqueles caras (ou moças) que resistem a cada grama de seu ser.

Como você gerencia efetivamente lidar com esse cenário ao lidar com ele como revisor?

ozz
fonte
19
Provavelmente da mesma maneira que você lida com pessoas que enfrentam problemas com outros itens, como código de vestuário, pontualidade, dias de doença etc.
Josh K
hehe .... Eu tentei qualificar isso um pouco sobre a gestão dizendo que todo mundo tem que fazer isso, o que eu estou procurando é quando você, um revisor humilde de pares, precisa tentar fazer isso.
ozz
3
Honestamente: Diga a eles para calarem a boca e fazerem isso. É para o próprio bem deles.
Steven Evers
1
Resistindo a quê? Deixando você ver o código deles ou eles olhando para o seu? Eles podem estar evitando conflitos, eles podem esperar conflitos? Você sabe por que eles hesitam?
Martin Maat

Respostas:

46

Ele resiste por causa do medo . Esse condicionamento pode ser o resultado de experiências ruins antes de ser revisado, quando criança, na escola, no trabalho ou até em sua equipe atual. Em nossas sociedades modernas, é muito comum confundir a produção de alguém com seu valor como ser humano. É por isso que as revisões no trabalho não são bem percebidas. É também por isso que falar em público em uma das fobias mais disseminadas (medo de julgamento).

Para evitar esse comportamento, você precisará de alguma psicologia. Você deve provar ao cérebro de um lagarto que isso não vai acontecer (ele não será julgado, humilhado, morto, nada ...) dessensibilizando -o a codificar revisões.

Um dos métodos mais eficazes que encontrei para desbloquear alguém é pedir que ele revise seu código , antes de pedir para revisá-lo.

Depois de um tempo, proponha que ele leia seu código para aprender com ele e por que não sugerir melhorias. Quando encontrar algo para mudar, tenha cuidado com o que escreve. Ele entenderá que não há nada a temer e tomará apenas a parte positiva do processo de revisão: aprendendo e aumentando seu conhecimento .

Michael K
fonte
3
Você pode adicionar uma definição de "cérebro de lagarto" para pessoas que não estão familiarizadas com ele.
Adam Lear
@ Anna: Acabei de adicionar o link para uma definição.
Resposta incrível Pierre! Voto por favor no momento em vez de uma resposta final.
ozz
1
@ Aaron: eu estava me referindo a "alguém" mencionado na pergunta. Sim, eu ainda tenho medos irracionais devido ao condicionamento tanto na minha criança quanto na vida adulta, como a maioria de nós. Exemplos: eu tenho um medo irracional de elevações. Estou me dessensibilizando quando posso. No fim de semana passado, visitei uma cidadela (muito comum no meu país por causa de sucessivas guerras entre franceses e alemães) e tive que pegar um bonde.
1
Como sempre, uma excelente resposta, Pierre.
Josh K
5

Eu tentava trabalhar em pares - junte alguém que odeie a idéia com alguém que goste e peça para que revisem o código um do outro por algumas semanas. Obviamente, isso pode ou não ajudar, mas estar nos dois extremos da revisão dará pelo menos uma visão mais detalhada do processo. Ter um par trabalhando em conjunto permitirá que eles se familiarizem com o estilo um do outro e com os erros comuns e dará a eles tempo para realmente ajudar um ao outro a melhorar, em vez de usar o carimbo de borracha. Isso também pode ajudá-lo a promover a programação em pares no seu ambiente de trabalho, pois acho que você poderá ver uma tendência crescente não apenas para revisar, mas para recodificar ou até planejar e codificar do zero.

Enquanto as partes desinteressadas estiverem dispostas a tentar, isso pode ajudar. Se eles se recusarem a considerá-lo, não há muito o que fazer, desde que estejam na equipe.

Michael K
fonte
A programação em pares é outro tópico, mas ótima sugestão!
ozz
Seu comentário me fez pensar um pouco mais sobre PP, então iniciei outro Q - programmers.stackexchange.com/questions/39878/… Obrigado!
ozz
4

A resposta de @ Pierre está no caminho certo para quem teme uma revisão de código. Eu posso imaginar outra situação. Um programador em estrela que sente uma revisão de código é um desperdício de tempo, porque esse código atinge um padrão aceitável de qualidade e correção. Nesse caso, eles podem sentir que uma revisão de código é uma perda de tempo e uma caça às bruxas. (Essa é uma busca por um problema quando não existe.)

Nesse caso, eu reorientaria o objetivo da revisão. Em vez de a revisão do código ser sobre como encontrar "problemas" no código, trate-o como uma busca por destinos de recondicionamento ou possíveis aprimoramentos futuros ou recursos adicionais de design. Dessa forma, tanto o codificador quanto o revisor estão envolvidos no processo e, esperançosamente, esse codificador capaz parecerá que há tempo sendo aproveitado.

Hogan
fonte
5
Com esse tipo de pessoa, você pode tentar avisá-los de que está animado para revisar o código deles porque acha que aprenderá muito com eles. A revisão de código não é apenas sobre o código que está sendo aprimorado, mas sobre expor outras pessoas da equipe a um código melhor, que os ajudará no desenvolvimento futuro.
HLGEM
2

Francamente, essa pergunta não faz sentido se você tiver uma loja bem gerenciada:

1) Se faz parte do trabalho, você deve fazê-lo ou é insubordinado. Alguém que se recusa veementemente a fazer parte do trabalho que é obrigado a fazer deve ser enlatado. A programação é um ofício e uma profissão - revisores e gerentes estão lá para ajudar a fazer o trabalho, não para lidar com crianças mimadas (de qualquer idade).

2) Se você possui um sistema de controle de origem bem gerenciado (que é obrigatório em qualquer loja de software profissional), o código pode ser revisado, gostando ou não. Então revise o código deles:

  • Se estiver bom, notifique-os e dê um tapinha nas costas - isso incentivará a participação.

  • Se não der certo, informe-os também. Isso deve ter o efeito de motivá-los a participar, a fim de se defender. Caso contrário, você pode usar medidas punitivas: penalidades financeiras, rebaixamentos de status etc. Se, apesar de seus esforços, esse funcionário não aparecer, IMO você tem um funcionário ruim e deve ser mostrada a porta.

Vetor
fonte
Esse é um conselho completamente inútil, prevejo uma "loja" com um ambiente de trabalho realmente ruim para você. Urgghh!
Cognacc
@cognacc - Você não precisa 'prever' nada. Trabalho em grupos há 25 anos, onde temos um ambiente de trabalho muito bom : somos todos adultos e entendemos o que é necessário para ser profissional e ter responsabilidade pelo nosso trabalho.
Vector
1
Eu tenho que concordar com Vector. Se faz parte do processo, todo mundo faz e tenho certeza de que eles rapidamente vêem que "não morde". Sempre há o risco de algumas pessoas serem "rudes" em seus comentários em uma revisão de código, é claro, mas então são essas pessoas que precisam ser tratadas - exatamente como seriam se fossem rudes com seus colegas de trabalho pessoalmente.
MetalMikester
Concordo com o cognacc, é inútil aconselhar, porque não sugere uma estratégia ou solução. Diz apenas "eles devem porque precisam". Duh. A questão é como lidar com eles, como em como revertê-los. Apenas fazer as pessoas fazerem algo contra sua vontade (ou não) não está solucionando o problema, é provável que esteja criando novos. Você deve primeiro entender a origem da resistência.
Martin Maat
Você perdeu minha observação de uma loja bem administrada e tudo o que se segue: isso significa que você está lidando com adultos: pessoas que sabem o que seu trabalho significa e implica. Você não conseguiu compreender minha resposta abundantemente clara.
Vector
1

Eles têm algumas experiências negativas em locais onde as revisões de código não foram feitas corretamente? Eles podem ter preocupações legítimas.

Se eles absolutamente não vêem mérito no exercício, peça que sejam pacientes e veja o que acontece com seu código e, especialmente, com os outros (se eles acham que são perfeitos) como resultado.

A Revisão de Código 'deve' melhorar o desenvolvimento, mas até que você tenha um sistema que realmente funcione, por que alguém iria querer fazer isso?

JeffO
fonte
Obrigado Jeff, concordo, se o processo não for bom, será difícil, e contornar os medos irracionais de alguém pode ser difícil - algumas pessoas simplesmente não mudam!
ozz
1
mas até que você tenha um sistema que realmente funcione, por que alguém iria querer fazer isso? Deixe-me dar uma facada selvagem nisto: Faça isso para que você possa descobrir por que seu sistema não está funcionando ?
Vector
1
@ Vector - Se os programadores não conseguem descobrir como fazê-lo funcionar, eles podem ter problemas maiores. Eu também acho que a gerência precisa assumir alguma responsabilidade e fazer uma definição clara do código de qualidade. Se o código que está sendo lançado não tiver muitos erros, eles podem ter um bom motivo para não incluir a revisão do código. Para um projeto de qualquer tipo de complexidade, duvido que isso esteja acontecendo sem a revisão do código de qualidade ou, possivelmente, uma quantidade desproporcional de tempo e custo de desenvolvimento.
JeffO 18/07/2016
@ Jeffff - OK, entendo o seu ponto: se o sistema realmente não funciona, não é a questão da "revisão de código", a questão é a competência dos programadores, e a simples "revisão de código" não é a solução. Eu concordo com isso.
Vector
1

Pessoalmente, existem algumas lutas que simplesmente não podem ser vencidas com 100% da população.

Eu posso ver razões suficientes pelas quais a programação em pares não funcionaria quando alguém é forçado a fazê-lo.

Mas as revisões de código são diferentes - elas alteram sua produtividade, não necessariamente seus hábitos de trabalho.

O gerenciamento pode fazer várias coisas para reduzir a resistência devido à produtividade: 1) Aceite a redução de velocidade para todos os desenvolvedores. 2) Forneça ferramentas apropriadas para lidar com o gerenciamento e a mesclagem de várias versões devido a ciclos de revisão (por exemplo, permitindo que os desenvolvedores tenham um repositório git local) 3) Aplique alguma forma de pressão social ou outra para garantir a distribuição de carga, qualidade e pontualidade de revisões.

Se eles fizerem isso, é legítimo exigir que todos participem, IMHO. A empresa em que trabalho agora força isso globalmente - você simplesmente não pode enviar sem a aprovação de um proprietário. E enquanto isso atrasa as coisas, evita muitos acidentes.

Uri
fonte
concordo totalmente Uri ... há apenas algumas pessoas que você não pode conquistar. Talvez eles estejam dispostos à sua maneira, preguiçosos, pensem que estão certos, ou simplesmente não se importam !!
ozz
0

Usamos medidas técnicas para tornar obrigatória a revisão de código.

A maneira como introduzimos a revisão de código é que, em nosso controle de origem, é impossível mesclar código que não foi assinado por outra pessoa que não o empurrou.

Pieter B
fonte
-1

Despedi-los

É simples assim - eles conseguem um projeto solitário ou precisam ir. Afaste-os de sua equipe. Eles não apenas não estão fazendo sua parte, mas também desgastam o moral e as práticas da equipe.

Agora, se parece que você precisa demitir 50% do seu time, então ...

Compreendo

Por que alguns recusam? Eles não têm tempo? Eles estão queimados? Existem críticas sobre algo com o qual não têm experiência? Eles acham que é uma perda de tempo, se sim, por quê?

A metodologia ágil ajudará aqui - presumo que você trabalhe constantemente contra silos (ou seja, para reduzir o fator de barramento), e os indivíduos de sua equipe estejam envolvidos no que os outros fazem.

O trabalho para garantir que as solicitações de mesclagem individuais sejam muito pequenas. Se houver mais de uma tela de alterações, ele precisará de uma conversa em pé ou relâmpago para explicar o que está sendo feito. Se tiver 10 páginas, precisará de uma apresentação com slides e diagramas de arquitetura.

Todos em questão trabalham no mesmo projeto?

O projeto já está enterrado sob uma montanha de dívida técnica?

Eles acreditam no projeto e na melhoria contínua?

Dima Tisnek
fonte
1
Hmmmm ... então, não acreditar que as revisões de código fornecem mais benefício do que custo automaticamente significa que uma pessoa não está fazendo sua parte e está desgastando o moral da equipe, tanto que deve ser demitida? Essa é uma posição bastante ousada, com base em nenhuma evidência que sustenta definitivamente a alegação.
Dunk
@ Dunk, você é um anti-revisor? Então você não estará no meu time. Você é um revisor profissional? Então você já conhece o suporte à minha reivindicação. Você está indeciso? Por favor, faça a sua mente ;-)
Dima Tisnek
Não sou um anti-revisor, mas também reconheço quando algo não está fornecendo um benefício razoável em relação ao custo. Alguns projetos / equipes precisam absolutamente de revisões de código oficiais, enquanto outros projetos / equipes somente as fazem quando isso é considerado benéfico. Sua suposição de que as revisões de código sempre são necessárias me diz que você nem conhece os benefícios e limitações reais. Então você está certo. Não vou fazer parte do seu time e isso seria uma grande perda para você.
Dunk