Posted on setembro 8, 2024
Qual é a importância dos Code Reviews?
Aí você vai lá, desenvolve tudo o que o card pediu, cria o seu PR e elas chegam: as temidas code reviews. Amando-as ou odiando-as, elas vão aparecer durante o processo de desenvolvimento de software, e você vai precisar desempenhar um papel em relação à elas: seja de autor ou de revisor. Mas qual é a importância dos Code Reviews? De forma muito resumida, elas melhoram a qualidade técnica, promovem a troca de conhecimento entre os desenvolvedores, fortalecem a colaboração dentro da equipe e ajudam a evitar problemas futuros, como bugs e débitos técnicos. Vamos explorar por que essa prática é essencial para o desenvolvimento de software eficiente e escalável.
Antes de mais nada: o que são Code Reviews?
O Code Review (em uma tradução livre, Revisão de Código) nada mais é do que o código passar por uma revisão. Óbvio assim.😅 Essa atividade é composta por dois ou mais indivíduos, separados em dois grupos: os autores e os revisores. Em um determinado momento, o autor vai pedir para que os revisores executem essa revisão “artesanal” de código.
Vou dar um exemplo para que fique mais fácil: vamos supor que você e alguns colegas estão desenvolvendo um software. Vocês têm lá o repositório criado no GitHub, por exemplo. Para que você adicione uma nova funcionalidade, você cria uma nova branch e, eventualmente, um Pull Request para a branch principal. Antes de fazer o merge definitivo, é interessante que você peça para os seus colegas fazerem um Code Review ao que você desenvolveu. Assim, haverá uma oportunidade de melhoramento de código e que se evite problemas antes que o merge seja feito.
Qual é a importância das Code Reviews no processo de desenvolvimento?
Code Reviews melhora todos os desenvolvedores de uma equipe. Existem diversos benefícios nessa prática: há pessoas mais experientes analisando seu código para prever possíveis erros, há outros menos experientes aprendendo com as suas soluções, e a colaboração entre todos ajuda a fortalecer a unidade de um time de desenvolvimento.
Existem algumas vantagens compartilhadas tanto pelo autor de um PR quanto pelo revisor do mesmo, como por exemplo:
Troca de conhecimento – é uma via de mão dupla
O autor, através dos comentários, pode elaborar novas ideias sobre como construir software de forma melhorada. Já o revisor poderá aprender através do exemplo já desenvolvido na PR.
Melhora colaboração e comunicação – de uma maneira “introvertida”
A revisão de código promove (ou ao menos, deveria 😅) uma comunicação construtiva entre os membros de uma equipe, ou até mesmo entre equipes. Isso ajuda a construir um ambiente de trabalho mais saudável e facilita a troca de informações – que é o sonho de qualquer liderança, vamos combinar. 🤷♀️ Durante a revisão do código, também é possível entender melhor requisitos e restrições de outras áreas da companhia, como QA, DevOps e até mesmo produto, sendo o desenvolvedor o autor da PR ou revisor da mesma. Além disso tudo, há um refinamento de habilidades de comunicação por parte dos envolvidos, pois às vezes pode ser necessário justificar escolhas técnicas (por parte do autor) e/ou aprender como passar um feedback negativo de forma não-destrutiva.
Desenvolvimento de soft skills – porque nem tudo é sobre código
Ao receber críticas construtivas, o autor pode trabalhar sua resiliência e também se acostumar a receber esse tipo de feedback, bem como entender qual é a melhor maneira de fazê-lo quando ele se tornar revisor de uma PR. Além disso, existe a oportunidade de ver o trabalho como um todo de uma perspectiva externa, o que o ajudará a ter uma abordagem mais crítica e cuidadosa quer no desenvolvimento das próximas features, quer na hora de revisar código dos colegas.
Melhora a integração entre a feature e tudo o que a envolve – resultando em menos problemas supresa
Já citado anteriormente, as Code Reviews podem ajudar bastante caso tenham revisão de pessoas de outras equipes, como QA ou DevOps. Desta forma, a feature vai se integrar melhor com todo o ambiente ao seu redor, evitando futuros problemas e conflitos. Além dessa compatibilidade maior entre um código novo e o já existente, também é possível que os revisores identifiquem impactos que o autor pode não ter visto durante a etapa do desenvolvimento. Um exemplo disso são potenciais vulnerabilidades de segurança que podem ser encontradas justamente com a revisão de um código antes que o mesmo vá para produção. Assim, antes de que o código seja devidamente fundido com a versão “oficial”, é possível proteger o sistema contra falhas exploráveis no ambiente exposto ao público.
Porém, também temos vantagens mais específicas para os dois principais papéis envolvidos em uma revisão de código: o autor e o revisor.
Do ponto de vista do autor…
Melhoria na qualidade do código – sem precisar escrever código!
Os revisores podem identificar e apontar possíveis bugs ou problemas de lógica que o autor pode não ter percebido; afinal de contas, muitas vezes estamos tão imersos no desenvolvimento que não nos damos conta de potenciais falhas. Numa Code Review, os revisores também ajudam a garantir que o código está em conformidade com os padrões estabelecidos pela equipe, tornando toda a base de código mais consistente. Um outro tipo de feedback associado com o código que pode acontecer é relacionado ao design da solução e sua arquitetura, levando a features mais eficientes e escaláveis a longo prazo.
Aprendizado e crescimento – escutar faz parte da senioridade
O autor aprenderá sempre com as sugestões dos revisores, já que será exposto a níveis de experiência e perspectivas diferentes. Também será apresentado a novas abordagens, técnicas e ferramentas que poderão ser adotados em futuros projetos.
Redução de débito técnico – que se traduz em “eu amo você”, na linguagem do desenvolvedor 😉
Ao receber sugestões de melhorias, há uma prevenção de refatorações futuras, visto que a legibilidade e a estrutura do código estarão sob escrutínio de pessoas com, possivelmente, mais experiência que o autor. Isso vai diminuindo o provável débito técnico que está sempre presente em projetos de software.
Ajuda com a moral do desenvolvedor e da equipe – cuidando da auto estima uma review por vez
Feedbacks positivos dos revisores dá mais confiança ao autor de que o código é robusto e confiável, e de que o mesmo é sim capaz de escrevê-lo por si próprio. Também é uma maneira do autor receber validação das suas escolhas técnicas por parte de outras pessoas da equipe.
No ponto de vista do revisor…
Melhoria do conhecimento do código – explorando a base de código sem quebrar nada
Ao revisar PRs de outros desenvolvedores, o revisor se familiariza com diferentes partes da base de código. Essa pode ser, inclusive, uma atividade ótima para os recém-chegados a uma determinada equipe. Porém, não só os novatos obtém vantagens, como também os mais velhos da casa: revisar um PR permite que um membro do time entenda melhor as novas funcionalidades ou alterações que estão sendo implementadas no sistema. Isso ajuda muito a ter uma visão mais completa do projeto e de tudo que está acontecendo.
Desenvolvimento de habilidades técnicas – o aperfeiçoamento vem de várias fontes
Através da revisão de código, o revisor pratica e reforça o uso de boas práticas de programação, padrões de projeto e arquiteturas, contribuindo para o seu aprimoramento técnico. Além disso, também há uma melhoria das habilidades de depuração do mesmo: ao revisar um PR com um olhar crítico, desenvolve-se a habilidade de encontrar bugs, potenciais casos de falhas e problemas de lógica no código alheio. Essas habilidades não são somente úteis para revisar o código dos membros da equipe mas também para depurar o próprio código durante desenvolvimento e/ou testes.
Aprendizado bidirecional e mentoria – ensinar faz com que você aprenda também
Não é só o autor que aprende novas soluções ao ter seu código revisado, mas o revisor também pode absorver muito conhecimento através deste processo. Os dois também aproveitam muito quando há debates e discussões sobre melhores práticas, resultando em uma troca de conhecimentos valiosa. Esse processo também permite a oportunidade de mentoria por parte dos revisores mais experientes, ajudando os outros a crescer seus conhecimentos técnicos.
Crescimento profissional – honestamente… que não quer?
Para que um revisor deixe um review em uma PR, é necessário que ele desenvolva a habilidade de fornecer feedback construtivo e útil – algo essencial em ambientes de equipe e para um futuro cargo de liderança técnica. É preciso aprender a apontar possíveis problemas de maneira clara e objetiva, sem gerar conflitos. Fora que, ao participar de discussões sobre mudanças no código, o revisor se envolve na tomada de decisão e julgamento técnico, capacidades também muito importantes para alcançar a tão desejada senioridade.
Desenvolvimento de uma visão crítica
Conforme avançam na revisão de PRs, o desenvolvedor é capaz de fortalecer sua visão crítica sobre o código, questionando decisões de design, eficiência, clareza e impacto geral das mudanças que serão submetidas à base de código. Isso ajuda a aprimorar o trabalho do revisor quando este se tornar autor em suas futuras PRs. Outro ponto é que, ao avaliar diferentes abordagens e soluções de codificação, o revisor também aprende identificar o que funciona melhor em determinados contextos, tornando-se mais versátil e analítico na hora de desenvolver suas próprias features.
Me diz: qual é a sua relação com as Code Reviews? Tanto as que você faz quanto as que você recebe? Acha que essa prática realmente transforma o seu código e melhorar a qualidade dos seus projetos? Compartilha sua opinião comigo! 😉
✔ Links consultados
- Artigo: Code Review Guidelines for Humans, de Philipp Hauer’s Blog
- Artigo: O que é Code Review e como fazer?, de Bruno Brito
- Artigo: How to Make Good Code Reviews Better, de Gegerly Orosz
Último acesso em: 09 de julho de 2023
⌛ Posts mais recentes
🫗 Glass ceiling: um teto de vidro todo nosso
📩 Recadinhos
Gostou do texto? Tem algo a adicionar? Alguma crítica construtiva? Feedbacks? Sugestões? Pedidos? Fique à vontade para me contatar via email (oli.pmatt@gmail.com), LinkedIn (/oliviamattiazzo) ou pela caixa de comentários aqui embaixo! Vai ser um prazer conversar contigo! ✨