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 novas funções 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
Ninguém gosta de ser o único ponto de contato no trecho de código. Da mesma forma, ninguém quer se aventurar no pedaço fundamental do código que não escreveu–em especial durante emergências de produção. As revisões de código compartilham conhecimento entre a equipe, para que qualquer membro da equipe possa assumir as rédeas e continuar comandando o navio lançado. (A gente adora metáforas mistas na Atlassian!) Mas este é o ponto: com vários desenvolvedores, os membros da equipe podem tirar folgas conforme necessário. Se você estiver preso no sistema de controle de versão, a revisão de código é excelente para encontrar liberdade. Liberdade para tirar as férias necessárias ou liberdade para passar algum tempo trabalhando em áreas diferentes do produto.
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.
Não se esqueça de que a revisão de código não consiste apenas em um membro da equipe sênior revisar o código de um membro da equipe júnior. A revisão de código deve ocorrer em toda a equipe em todas as direções. O conhecimento não tem limites! Sim, a revisão de código pode ajudar os engenheiros mais novos, mas não deve ser usada apenas como um exercício de orientação.
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 otimizar 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á...!