O Code Review Maroto

06 Apr 2017

Essa é uma tradução

O post original está em inglês, confira lá.

TL;DR

Buddha says: try to not be an asshat

Que negócio é esse aqui, bicho!? OMG!

Seguinte… tem um tempinho que alguns colegas vem me dizendo que meus Code Reviews são um pouco “diferentes”. Sendo o rei da auto-estima que sou, Comecei a me perguntar (e a perguntar para todo mundo) o que eu estava fazendo errado. Aí, para minha imensa surpresa, descobrir que o “diferente” nesse caso era na verdade algo batuta.

Vou tentar explicar o meu processo mental e os passos que sigo para fazer meus Code Reviews ultimamente.

Leia o código (DUH! e não “apenas o diff” )

Eu acho muito tentador só dar aquela passada de zóio 👀 no diff. Mas me esforço para resistir a essa vontadinha e de fato® ler as alterações.

É assim que eu entendo o contexto geral das mudanças, e eu acho que isso é pré condição para tirar qualquer tipo de conclusão.

O objetivo é esclarecer as motivações

Talvez aquele código meio bosta que parece irremediavelmente idiota está lá por algum motivo histórico. A primeira “leitura” que eu faço é uma tentativa entender isso. De me colocar em uma posição em que as mudanças estão em um contexto dentro da minha cachola.

Então de fato® ler o PR antes de comentar é algo que works for me (eu acho).

Obama drinking beer approves this

Enaltecer o bom antes de bater no ruim

Esse conceito pode parecer alienígena mas eu quero (MUITO) acreditar que o papel principal de quem está pilotando o Code Review é enfatizar as coisas boas que apareceram. Esse ambiente de incentivo vai alimentar as coisas boas e elas vão se multiplicar.

WOOOW! Just blewed me away. Wink!

Na minha humilde opinião é bem mais efetivo evitar que coisas ruins apareçam do que reclamar demais quando elas estão lá. Mas, já sabe né? Sem falsas esperanças, amiguinhos:

código ruim “vai acontecer”

Se eu tenho um conselho para dar aqui é: relaxa. Mantenha o foco do review em apreciar as coisas marotas. Sabendo que isso é bem difícil para nós programistas (de repente é mais certo dizer: para nós seres humanos), aqui vai um mix de alguns exemplos que o tempo me ensinou e eu uso nos meus comentários em reviews:

E claro, está dada aqui minha benção para usar memes a gifs animados nesse ponto. Palmas lentas é um dos meus preferidos da vida.

Here some slow claps: you sure deserve it!

Reviews ficam registrados

Githubz e similares oferecem um gama de ferramentas para organizar e deixar belas as mensages e comentários em um Code Review. Vira e mexe eu me vejo olhando “antigos” Pull Requests. E na maioria das vezes para lembrar sugestões que apareceram para resolver algo específico, ou alterar o código de alguma forma (também específica).

Trate o Code Review como se alguém, muito provavelmente você mesmo, fosse voltar a ele no futuro. Também acredito que é legal tratar os Pull Requests em si da mesma forma, mas isso é assunto para todo um novo blog post™.

Bom… chegou aquela hora.

Eu realmente me esforço para apontar tudo que eu acho que não está 100% em um Pull Request. Mas acredito que isso tem que ser feito da maneira mais polida possível. E vamos combinar, né? Eu sou um gentleman.

Uma coisa que acho muito importante lembrar (antes de trazer a tona as coisas que podem ser diferentes) é:

código ruim vai “aconter”, lembra?

E quer saber? Tudo bem! A gente erra o tempo todo. Bom, pelo menos eu erro.

TALVEZ EU SEJA UMA MULA, QUEM É QUE SABE!?

Mas sem zoeira, se não estamos errando provavelmente é porque não estamos tentando nada novo/melhor, certo?

Trazer a tona os problemas no PR é criar oportunidades para enteder porque eles estão acontecendo:

Nunca diga simplesmente: “o código está feio”.

Não seja um idiota desagradável. Primeiro porque isso não existe. Mas também porque isso é COMPLETAMENTE subjetivo.

A beleza está nos olhos de quem vê.

Eu sempre tento meu melhor para ser objetivo em relação a isso.

Quando algo está errado, eu tento mostrar como e porque.

Faço bastante uso do milagre moderno chamado syntax highlighting e de todo o pacote de h1, h2 e h3 nos meus markdowns. Tento tornar meus comentários legíveis.

Bom… EU TENTO, tá bom!? 😤

Outra dica é enriquecer os exemplos de código com referências a outras experiências e a outras pessoas que a galera no time respeita (vamos de internetz: blog posts, livros, etc).

Prove o seu ponto. Se empenhe nisso. Não economize tempo aqui.

Quando eu sinto que algo está errado mas eu não consigo pensar em um exemplo claro de como fazer melhor, eu prefiro chamar para um papo. Manja? Aquele bagulho antiquado feito de trocar algumas palavras? Cara a cara? Provavelmente algumas ideias vão surgir durante a conversa, mas eu prefiro não escrever nada no PR se sinto que estou apenas com “ar quente” na cabeça💨.

Se você “só ACHA” que algo está errado, testa primeiro, faz favor.

Estou sempre me vigiando para me dar aquele soco bem na orelha direita se penso em escrever alguma coisa como:

“Eu acho que isso não precisa estar aqui, tá ligado? Mas tipo, eu não tenho certeza.”

Quem escreveu o código empenhou tempo na coisa, pensou em abstrações para tornar a parada massa, escreveu tests/specs para garantir que tudo está funcionando… Então é bem zoado chegar lá e “só achar” que tem alguma coisa no PR que não foi feita do melhor jeito possível. Ainda pior, meio que delegar o trampo de provar ou refutar a hipótese para a própria pessoa que trabalhou duro naquela feature.

E convenhamos que na maioria das vezes eu descubro coisas bacanas quando eu vou ali rapidinho no terminal e testo. Manja? Aquele tipo de dúvida “#third é do Active Support ou do Ruby mesmo?”.

It was TOTALLY worth it. Even with all the punchs directly at the nose.

Agora vai lá, nenê. Aproveite o dia.

Estamos todos aqui pela diversão e pelo aprendizado. Tome uma (breja ou suco, sei lá) com seus colegas sempre que puder. Pergunte o que pode ser feito para melhorar suas próprias interações.

Vamos ter alguma diversão enquanto trabalhamos.

Beijocas.

Muito obrigado. SÉRIO. MUITO OBRIGADO.

Esse post (original) seria ainda pior sem a cuidadosa leitura e revisão prévia, além do apontar de defeitos muito polido feitos por

Você é o cara, bicho! 💙

References:

Share this on → Twitter Linkedin