Um guia para melhorar a performance do seu time através de melhoria contínua
Mobile Engineer @ Sanar
lucianomlima
@lucianomlima
Startup nas áreas de saúde e educação.
Temos como objetivo empoderar os profissionais da saúde
Mais de 250 funcionários
Escritórios em Salvador e São Paulo
Temos desenvolvedores trabalhando remotamente em todo o país
Muuuuitas vagas abertas
"É o processo onde alguém, diferente do autor do código, examina o código."
Manter a qualidade do código e dos produtos
Garantir que todo o código se mantém saudável e em constante melhoria ao longo do tempo
Ajuda no compartilhamento de conhecimento entre o time
Toda a discussão envolvida pode ser utilizada como documentação das decisões tomadas
Dados e fatos técnicos tem maior relevância sobre opiniões e preferências pessoais
Style Guide é autoridade absoluta – consistência por todo o projeto
Design de Software deve ser baseado em dados ou em princípios sólidos de engenharia
Caso não tenha um padrão estabelecido, deve-se seguir o aplicado atualmente
Desenvolvedores precisam ter progresso em suas atividades
Quem revisa precisa garantir que a qualidade do código não vai cair ao longo do tempo
O código não precisa estar perfeito!
"If you never submit an improvement to a codebase, then the codebase never improves"
Se o revisor impedir que as mudanças ocorram, isso pode gerar uma falta de incentivo à mudanças no futuro
Código fonte tende a se degradar ao longo do tempo, principalmente quando há restrições de tempo
Se algo relacionado à atividade pode ser melhorada, é obrigação de quem revisar comentar sobre a melhoria
Ao invés de buscar perfeição, devemos buscar melhoria contínua.
Quem revisa deve ter liberdade para comentar sobre o que pode ser melhorado
"Em geral, revisores devem favorecer a aprovação de um código assim que ele chegar em um estado onde definitivamente melhore a integridade do código como um todo, mesmo que a mudança não esteja perfeita"
Desenvolvedor e revisor devem tentar entrar em consenso sobre algum conflito
Não deve-se esperar que algum conflito seja resolvido apenas através de comentários
As vezes é necessário discutir com todo o time, pedir por uma opinião de algum gerente ou pedir pela ajuda de alguém mais experiente no assunto
Design
Funcionalidade
Complexidade
Testes
Nomenclatura
Comentários
Estilização (style guide)
Documentação
Contexto
Encorajamento
1 - Tenha uma visão geral do código
2 - Revise as partes principais
3 - Dê uma olhada no restante
Por que code reviews precisam ser rápidos?
O quão rápido precisam ser?
Velocidade vs Interrupção
Respostas rápidas
Aprovação com ressalvas (LGTM)
Pull Requests longos
Code review fica mais rápido com o tempo
Em caso de emergência...
Seja claro e útil com quem você está revisando.
Faça comentários sobre o código, não sobre o autor do mesmo
Explique o porquê, dê exemplos
É responsabilidade do autor corrigir os problemas, não do revisor.
Mas você como revisor deve ajudar chegar a solução do problema
Se for necessário pedir uma explicação sobre o código, está é uma oportunidade de escrever o mesmo de uma forma mais clara
Nem sempre sua sugestão vai ser aceita
Defenda sua opinião, mas com argumentos
O autor ficar chateado com a insistência do revisor pode ser indício de que o comentário não foi feito de forma educada
Deixar a limpeza para depois é uma das principais formas de criar débitos técnicos. Sempre que possível, peça pela limpeza o quanto antes
Revisões rigorosas geram mais reclamações, com o tempo o rigor é bem visto pelo time
"Fix build" "Add patch" "Remove code"
Está descrito de forma clara o objetivo do PR?
A qualidade e saúde foi mantida no PR?
A solução está com um bom design?
O código está simples? Outro desenvolvedor consegue entender sem dificuldades?
O código atende ao que foi solicitado?
A nomenclatura utilizada está correta?
Os comentários são de fato úteis e claros?
O código está seguindo o style guide?
A documentação foi devidamente atualizada?
O código está coberto por testes?
Quando possível, escolha os melhores revisores
Caso queira uma outra opinião, marque a pessoa no seu PR
Programação em par pode servir como um code-review