Code Review e a cultura FreteBras de compartilhar conhecimento

Photo by Nubelson Fernandes on Unsplash

O que é Code Review?

Code review nada mais é do que um processo de revisão do código-fonte de um software realizado por uma ou mais pessoas. O objetivo é encontrar detalhes que passaram desapercebidos durante o desenvolvimento, melhorando a qualidade do código e garantindo a integridade geral da aplicação.

Code Review é cultura!

O processo de code review está diretamente ligado a cultura da empresa (ou projeto) e infelizmente, em alguns casos, ele nem existe ou quando existe, é negligenciado e praticado de uma forma muito superficial! Ignorando assim um dos seus principais valores na nossa opinião… 👇👇👇

Qual é o propósito do Code Review na FreteBras?

Aqui na FreteBras, o processo de Code Review faz parte do nosso DNA e está presente em todas as tribos e squads, ele é totalmente integrado ao nosso fluxo de trabalho, independente da metodologia ágil que os times utilizam — Scrum, Kanban etc.

Mas, afinal de contas, porque o Code Review é tão importante pra nós?

O Code Review nos ajuda a manter um nível de consistência nas práticas de design e implementação de código, aprimorando as habilidades técnicas do time, melhorando a comunicação e engajamento entre as pessoas e consequentemente aumentando a qualidade das nossas aplicações. Dado esse contexto, abaixo eu destaco alguns objetivos desse processo:

  • Aprimorar as habilidades técnicas através da troca de conhecimento;
  • Melhorar a comunicação e cooperação do time;
  • Criar soluções alternativas aprimorando a solução do problema;
  • Melhorar a qualidade das nossas aplicações;

O Code Review da FreteBras na prática

É claro que eu não poderia deixar de mostrar tudo isso na prática, tirei um tempinho pra dar uma boa vasculhada no nosso Gitlab atrás de algumas referências pra vocês… E eu achei várias! Vejam:

  • Promovendo discussões e reflexões:

No print abaixo, o Lucas colocou em discussão que o comportamento do método responsável por gerar uma chave única usada para persistir no cache a informação recuperada pelo repository, poderia ser abstraída. Veja:

Essa discussão gerou uma melhoria no código! Indo mais além, em um outro momento, em outra feature, essa abstração gerou uma reflexão por parte do David, veja:

Olhando pra esses dois reviews acima, eu gostaria de destacar duas coisas:

  1. O código está sempre evoluindo, o CR estimula isso de forma natural 🚀 !
  2. Olha o sentimento de "Ownership" presente por toda parte ❤️ !
  • Compartilhando conhecimento:

Na imagem abaixo, eu optei por usar array destructuring do PHP para armazenar os valores de um array em variáveis, porém descartando o primeiro elemento. Veja:

O Thomás ainda não tinha usado essa abordagem e isso gerou um aprendizado pra ele.

  • Repassando conhecimento:

Na imagem abaixo, o Rod fez uma observação bem interessante sobre a API de datas do PHP, aconselhando usar DateTimeImmutable e DateTimeZone, veja:

Olha esse mesmo conhecimento sendo repassado por mim para outra pessoa, em outro projeto:

Legal né?

  • Clean code durante o Code Review? Nós temos!

Engana-se quem pensa que a limpeza de código é algo complexo… Pequenas coisinhas já melhoram bastante a legibilidade. Quer ver alguns exemplos que aconteceram por aqui?

Mudando um condicional:

Renomeando um método:

  • Detalhes que passam desapercebidos

Nesse exemplo eu deixei de implementar um teste porque estava aguardando um outro merge request entrar em produção pra eu aproveitar um helper que havia sido implementado lá. Se o Thomás não vê, isso ia passar batido…

Top!

  • Conhecendo alguns "hacks" do git:

No exemplo da imagem abaixo, o Eduardo fez um commit sem usar o nosso usuário padrão do Gitlab — sem problemas Dudu, também já fiz isso! kkk— Nossa amiga Thays compartilhou um passo a passo explicando como arrumar isso, veja:

Brilhou demais Thays!

No print abaixo, olha só que dica simples e super bacana que a Larissa compartilhou com o Lucas:

Eu também faria de outro jeito (mais complicado)… Mandou bem Lari!

  • Aprendendo e propondo padrões
  • Meios alternativos de se resolver o mesmo problema:
  • Correção de typos (quem nunca né?)
  • Elogios e incentivos

Na imagem abaixo, olha só que bacana, o Vinícius incentivando o João Couto durante a sua primeira semana na empresa.

No print abaixo, foi a minha vez de receber um feedback positivo e é claro de retribui-lo ao meu brother Rod Elias. Nessa ocasião estávamos trabalhando no MVP de uma feature (um pouco confusa 😬..) a revisão dele foi fundamental!

  • Deixando o dia-a-dia mais divertido

Escrever código pode ser mais divertido do que você pensa 😝…

Obviamente esses são só alguns exemplos de vários outros que acontecem por aqui.

Conclusão

O assunto “Code Review” é bem amplo e não se limita somente aos tópicos citados acima, por exemplo, poderíamos falar das "boas práticas para um bom code review" — Mas, isso é assunto para um próximo artigo…

A ideia desse texto foi mostrar pra vocês como nossa cultura de compartilhar conhecimento esta presente no nosso processo de code review e no dia-a-dia!

https://bit.ly/compartilhe-seu-conhecimento

Gostou? Como está o code review na sua equipe? Comenta aí!

Obrigado por ler! Se você gostou do artigo, dê um clap 👏.

--

--

--

A Fretebras é a pioneira e a maior plataforma tecnológica para o transporte de cargas da América do Sul. A empresa conecta transportadoras e caminhoneiros, investindo em soluções inovadoras para tornar o transporte rodoviário mais eficiente.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
João Roberto da Paixão

João Roberto da Paixão

Eterno aprendiz que compartilha aquilo que aprende. Apaixonado por tecnologia, desenvolvimento pessoal e investimentos. Pai de família, um cara tranquilo =) !

More from Medium

Differences between the work culture/environment of Turkey and Sweden?

Free Time for Engineers

Avoid The Software Sinkhole

Design Patterns — Why it is used?