Tempo alocado para revisões de código

14

Se você estiver fazendo revisões de código

  • Quanto tempo você gasta em revisões de código, em comparação com a implementação?
  • Quantas das alterações passam por revisão de código?
  • você acha que é demais / deveria ser mais?

Existem estudos sobre eficácia?

[edit] obrigado a todos pelas respostas, é difícil escolher um "vencedor" para essa pergunta, também há muitas informações valiosas nas outras respostas.

peterchen
fonte
2
Minhas respostas para essas três perguntas seriam "nenhuma", "nenhuma delas" e "deveria ser mais". :-)
Carson63000
4
Boa pergunta, estou iniciando uma cruzada pessoal para introduzir revisões de código em meu trabalho. Portanto, as respostas para isso podem ser úteis.
Kevin D
A próxima pergunta é "Por que" - a maioria pensa em qualidade, mas os grandes ganhos surgem quando você entende que o valor educacional do código excede o valor da qualidade.
mattnz

Respostas:

7

No meu trabalho, temos o seguinte procedimento para revisões de código. Até agora, funcionou bem para nós e achamos que era muito eficiente em termos de tempo, especialmente em termos de horas-homem. Realmente não temos um tempo específico alocado para as revisões. Cada confirmação ou mesclagem no tronco deve ser revisada e leva o tempo necessário para o revisor aprovar.

Edit: O tempo que leva, é claro, depende da magnitude da mudança. Pequenos recursos e correções de bugs levam alguns minutos. Novos recursos, refatorações ou alterações grandes que afetam muitas partes do sistema podem levar meio dia para serem revisados ​​e outro para resolver todos os problemas que surgem como resultado.

Para que esse sistema funcione, é crucial se comprometer frequentemente com o tronco, para que as alterações sejam de tamanho gerenciável. Você não deseja ter a situação quando precisar revisar o código de um ano no valor de um ano.

Dima
fonte
1
Você tem alguma ideia do quanto é preciso?
Peterchen
5

Em relação aos estudos, o software Smart Bear enviará a você um pequeno livro, Best Kept Secrets of Peer Code Review , de graça. Ele contém vários artigos sobre vários aspectos da revisão de código, incluindo estudos sobre quanto tempo eles devem levar e qual a sua eficácia.

Caleb Huitt - cjhuitt
fonte
Acabei de encomendar este livro. Espero que seja uma leitura interessante.
Kevin D
3
Encomendei também. É estranho esperar 20 dias por um livro " gratuito " - de uma empresa que vende software pela Internet, nada menos.
Peterchen
Esse livro fez as rondas no meu local de trabalho por vários anos. Nossa cópia é bem lida e elaborada com alguns pontos-chave da publicação. É pequeno (pode ler em uma hora), mas repleto de ótimas informações. O objetivo claro é convencê-lo a fazer a revisão do código, convencê-lo a usar uma ferramenta e convencê-lo a comprar a ferramenta - é justo, eles deram o livro.
mattnz
4

Em nosso projeto, todas as alterações significativas no sistema são revisadas pelo líder da equipe ou em conjunto com outro desenvolvedor que será o principal "consumidor" do novo módulo. Falamos no skype e usamos Rudel no Emacs (um plugin para edição colaborativa, basicamente ele permite que vários usuários editem o mesmo arquivo ao vivo), ou TypeWith.me (Piratepad), ou um de nós compartilha sua tela no skype.

É difícil quantificar isso, porque alterações mundanas, como novas visualizações, páginas etc. não são revisadas. Revisamos novos módulos, grandes atualizações e refatorações. Quanto às grandes mudanças, a revisão de código pode levar de 10% a 30% do tempo, mas vale a pena.

Posso dizer que a programação em pares, quando dois programadores editam o mesmo arquivo ao mesmo tempo, não apenas se sentam no mesmo computador, é muito melhor do que a prática usual de se sentar atrás do ombro.

Para coisas simples, como convenções de nomenclatura e erros de escopo, usamos nossas próprias ferramentas automáticas ou de código aberto (jslint, pylint, pyflakes, pep8). E não limitamos commit e push: usamos o Mercurial, que é muito fácil de ramificar e mesclar (devo dizer, mais fácil do que no Git). Bugs não são uma questão de revisão de código.

Realizamos reuniões de equipe em que as mudanças e novidades são anunciadas, mas nem todos realmente prestam atenção. Provavelmente deveríamos fazer um pouco mais de revisão de código.


fonte
2

Não há resposta certa ou errada para isso. Porém, como muitos sugeriram antes - se a revisão de código for feita por um membro externo da equipe [método altamente recomendado], isso poderá representar aproximadamente 30% a 35% do esforço de desenvolvimento. Mas se isso for feito por um membro da equipe de projeto interno que fazia parte da equipe de desenvolvimento [não recomendado], isso poderá ser concluído em aproximadamente 20% do tempo necessário para o esforço de desenvolvimento.

Nota: deparei-me com esta discussão ao procurar outra coisa e achei que poderia adicionar algum valor aqui. Aliás, toda essa estimativa de esforço acima é baseada na minha experiência de trabalho como gerente de engajamento em vários projetos. Espero que ajude.

Nav
fonte
obrigado - e sem suor, eu aprecio ver números para uma pergunta "quanto"!
Peterchen 14/05/19
0

Cada organização e base de código é diferente, por isso é difícil obter um valor amplo para o setor.
Se você é realmente sério, deve começar a coletar métricas. Ou seja, faça a revisão do código até que seja satisfatoriamente feito, incluindo retrabalho. Comece a coletar isso em um banco de dados (LOC, complexidade do código, linguagem de programação, horário etc.). Em seguida, colete métricas sobre sua taxa de defeitos durante o teste. Contanto que você possa reduzir essa revisão de código, deve pagar por si só. Se o defeito retornar dos testes, colete métricas sobre quanto tempo foi gasto na correção de defeitos. Crie esses dados em sua organização, crie linhas de base e é possível prever com bastante precisão. Os termos para procurar aprendizado adicional são Custo da qualidade e Custo da má qualidade.

A única ressalva é que isso pode começar a se tornar burocrático e depende da cultura da organização.

softveda
fonte
Estou procurando alguns dados práticos, para ter uma idéia do intervalo esperado.
Peterchen