Por que as revisões de código importam (e realmente poupam tempo!)

Alerta de spoiler: se ama decisões arquiteturais e odeia ser um desenvolvedor de "caminho crítico", você adorará isso.

Dan Radigan Dan Radigan

As equipes ágeis são auto-organizáveis, com conjuntos de habilidades que se estendem em toda a equipe. Isso é obtido, em parte, com a revisão de código. A revisão de código ajuda os desenvolvedores a aprenderem a base de código, bem como a aprender novas tecnologias e técnicas que desenvolvem seus conjuntos de habilidades.

Então, o que exatamente é uma revisão de código?

Quando um desenvolvedor terminar de trabalhar em um problema, outro desenvolvedor analisa o código e considera perguntas como:

  • Há erros de lógica óbvios no código?
  • Olhando para os requisitos, todos os casos estão totalmente implementados?
  • Os novos testes automatizados são suficientes para o novo código? Testes automatizados existentes precisam ser reescritos para justificar as alterações no código?
  • O novo código está em conformidade com as diretrizes de estilo existentes?

As revisões de código devem ser integradas com o processo existente de uma equipe. Por exemplo, se uma equipe estiver usando fluxos de trabalho de ramificação da tarefa, inicie uma revisão de código depois que todo o código tiver sido escrito e testes automatizados tiverem sido executados e aprovados–mas antes de o código ser mesclado. Isso garante que o tempo do revisor de código seja gasto à procura de erros que máquinas não encontram, bem como impede que decisões ruins de codificação poluam a linha principal de desenvolvimento. 

O que isso proporciona para uma equipe ágil?

Toda equipe pode se beneficiar de revisões de código independentemente da metodologia de desenvolvimento. No entanto, as equipes ágeis podem ter muitos benefícios, pois o trabalho é descentralizado em toda a equipe. Ninguém é a única pessoa que sabe uma parte específica de uma base de código. Simplificando, as revisões de código ajudam a facilitar o compartilhamento de conhecimento na base de código e na equipe.

Revisões de código compartilham conhecimento

No centro de todas as equipes ágeis está a flexibilidade imbatível: uma capacidade de pegar trabalho da lista de pendências e começar a execução por todos os membros da equipe. Como resultado, as equipes conseguem integrar mais trabalho porque ninguém está em um "caminho crítico". Os engenheiros de pilha completa podem lidar com trabalho front-end e também com trabalho do lado do servidor.

As revisões de código possibilitam estimativas melhores

Lembra-se da seção sobre estimativa? A estimativa é um exercício em equipe, e a equipe faz melhores estimativas quando o conhecimento está disponível para todos. À medida que novos recursos são adicionados ao código existente, o desenvolvedor original pode fornecer estimativas e feedbacks bons. Além disso, qualquer revisor de código também está exposto à complexidade, aos problemas conhecidos e às preocupações de determinada área da base de código. Então, o revisor de código compartilha o conhecimento do desenvolvedor original sobre determinada parte da base de código. Essa prática cria vários comentários informados que, quando usados para uma estimativa final, sempre tornam a estimativa melhor e mais confiável.

As revisões de código possibilitam tempo livre

Nobody likes to be the sole point of contact on a piece of code. Likewise, nobody wants to dive into a critical piece of code they didn’t write–especially during a production emergency. Code reviews share knowledge across the team so that any team member can take up the reins and continue steering the ship. (We love mixed metaphors at Atlassian!) But here's the point: with no single developer the critical path, it also means team members can take time off as needed. If you find yourself tied to a desk on the version control system, code review is an excellent way to find freedom. Freedom to take that needed vacation, or freedom to spend some time working on a different area of the product.

As revisões de código orientam novos engenheiros

Um aspecto especial do método ágil é que, quando novos membros se juntam à equipe, os engenheiros mais experientes orientam os novos membros. E a revisão de código ajuda a facilitar as conversas sobre a base de código. Muitas vezes, equipes ocultam conhecimentos dentro do código que são descobertos durante a revisão de código. Membros mais novos, com um novo olhar, descobrem áreas complicadas da base de código que precisam de uma nova perspectiva. Então, a revisão de código também ajuda a garantir que um novo insight seja adicionado ao conhecimento existente.

Dica profissional:

Lembre-se: a revisão de código não é apenas um membro da equipe sênior revisando o código de um membro da equipe júnior. A revisão do código deve acontecer em toda a equipe em todas as direções. Conhecimento não conhece limites! Sim, a revisão de código pode ajudar engenheiros, mas não deve ser usada apenas como um exercício de tutoria. 

Mas as revisões de código demoram!

Claro, elas levam tempo. Mas esse tempo não é desperdiçado – longe disso.

Aqui estão três maneiras de otimização para isso. 

Compartilhar a carga

Na Atlassian, muitas equipes exigem duas revisões de qualquer código antes de que ele seja verificado na base de código. Parece muita sobrecarga? Realmente não é. Quando um autor seleciona os revisores, eles formam uma rede ampla em toda a equipe. Quaisquer dois engenheiros podem dar suas opiniões. Isso descentraliza o processo para que ninguém fique sobrecarregado e assegura uma boa cobertura para a revisão de código em toda a equipe.

Revisão antes da mesclagem

Exigir a revisão de código antes de mesclagem montante garante que nenhum código fique sem revisão. O que significa que as decisões arquiteturais questionáveis feitas às 02h e o uso indevido de um padrão de fábrica pelo estagiário são percebidos antes que tenham a chance de ter um impacto duradouro (e lamentável) no seu trabalho.

Usar a pressão de colegas a seu favor

Quando os desenvolvedores sabem que seu código será revisado por um companheiro de equipe, eles fazem um esforço extra para assegurar que todos os testes sejam aprovados e que o código seja tão bem concebido quanto possível para que a revisão corra bem. Essa atenção plena também tende a tornar o processo de codificação mais suave e rápido.

Não espere por uma revisão de código se o feedback for necessário antes no ciclo de desenvolvimento. Feedback antecipado e frequente torna um código melhor, então não tenha receio de envolver outras pessoas – sempre que possível. Isso tornará seu trabalho melhor, mas também fará com que seus colegas de equipe sejam revisores de código melhores. E o ciclo virtuoso continuará...!