Manifesto Do Merge Request ao Code Review para Times Colaborativos
#Introdução
Visto como penso e reflito o contrário do que penso, visando deixar princípios frutos dessas reflexões ao longo de mais de uma década de vivência em projetos dos mais diversos tipos, tamanhos e complexidade, além de interações com os mais diferentes tipos de pessoas nesses processos. Escrevo aqui os princípios não para impor, mas para ser piso o qual outros possam se apoiar caso desejem enquanto vivenciam esses processos em suas organizações e projetos. Piso esse que quis e jamais encontrei, o que me motivou a escrever pensando nos que viriam depois.
#Princípios
1: Combatemos a Lei de Murphy.
Em livres palavras: “O que pode dar errado vai dar errado no pior momento possível”.
Seja pessimista ao escrever seu código e use os itens 2 e 3.
2: Combatemos a imprevisibilidade.
Use programação defensiva para isso.
3: Tudo o que pode acontecer irá se fizermos testes o suficiente.
O matemático Augustus De Morgan em 1866 escreveu o livro “A Budget of Paradoxes” (O Orçamento dos Paradoxos) e nele um poema que dizia: “Tudo o que pode acontecer irá se fizermos testes o suficiente”.
Escreva testes de maneira a cobrir tudo que pode acontecer, por tanto todo código aprovado é um código com cobertura de testes unitários. Não pense que aqui eu quero determinar a ordem em que você escreve os testes ou o código, mas tenha em mente que tão importante quanto escrever bem o código, é escrever bem os testes.
4: Não somos Tomé, mas só acreditamos vendo.
Quando possível porém muito importante, todo código aprovado deve ser um código cujo o aprovador executou e validou.
5: Hoje melhor que ontem, amanhã melhor que hoje.
A prioridade do uso dos recursos das linguagens devem considerar do maior para o menor. Assim, recursos de mesma funcionalidade da versão atual tem prioridade de uso sobre versões anteriores.
6: Escrevemos código uma vez mas damos manutenção nele ao longo de toda sua vida.
O código escrito deve seguir boas práticas de legibilidade e manutenibilidade.
Guias sugestivos são Clean Code e A arte de escrever programas legíveis.
7: Escrevemos, revisamos e entregamos. Sem revisor, sem entrega.
Todo código enviado para revisão deve ser revisado por seu revisor no dia de seu envio ou o dia imediato posterior.
8: Um líder abre caminhos, um par nos faz melhores.
Assumi-se que os times são indicados a serem compostos por pares de engenheiros sendo a figura ímpar o líder.
9: Ordenado, organizado e constante.
O desenvolvimento de funcionalidades se da por atividades que são sua resolução. Da mesma forma que se implementa uma resolução seja simples ou composta para atender cada funcionalidade, a abertura do merge request e respectivo code review deve seguir o mesmo modelo.
10: Se organizar direitinho, cabe todo mundo.
Dentro dos processos de rotina do time de engenharia deve existir um espaço mínimo e máximo para comportar este processo bem como não comprometer os demais processos.
11: O combinado não sai caro.
Todo código tem uma finalidade e requisitos mínimos. A finalidade bem como os requisitos mínimos são subjetivos e variáveis, por tanto devem estar claros na abertura do Merge Request e na execução do code review.
12: Dividir conhecimento é multiplicar.
Esse é um momento de troca de conhecimento também, por tanto sugestões não impeditivas são bem vindas.
13: É sobre o código, a entrega e nunca pessoal.
Quando não atendido um dos itens do manifesto é sugerido que seja reprovado o Merge Request.
14: Sirva-se a vontade.
Esse manifesto visa ser uma base para ser extendido e ou afunilado em direção as necessidades de cada contexto.
15: Use com moderação.
Todos os itens desse manifesto tem um papel e um preço, pondere com sabedoria para o seu contexto.
#Autor
Carly Oliveira é acima de tudo, alguém que acredita fielmente que os valores das ideias estão nas ideias e não em quem as pensa ou diz. Mas reconhece que para A terá valor A e para B terá valor B, por tanto o valor atribuído conta sobre quem emite o valor mais que sobre o que foi valorado. Vê a programação como filosofia conteporânea, é Bacharel em sistemas de informação e MBA em gestão estratégica de projetos e metodologias ageis. Atualmente trabalha com programação, arquitetura e design de software, liderando times para projetos do setor financeiro.
Escrito em Olinda-PE, Brasil, no dia 02–01–2022.