O lado humano do code review
Uma boa oportunidade de fortalecer laços de parceria e ganhar mais experiência.
Em primeiro lugar, pensar no lado humano não é desencorajar a fazer code review, pelo contrário, estou apenas alertando para possíveis problemas causados pelo code review quando feito sem estar consciente de alguns fatores. Fatores estes que estão mais ligados a parte humana do que a parte técnica.
Algumas premissas do code review ficaram fixas na minha cabeça depois de passar por algumas equipes muito boas em fazer code review e outras nem tanto, de qualquer forma o meu objetivo em relação aos code reviews e várias outras coisas da vida é fugir da superficialidade e dar contexto ou um sentido para as minhas ações, então vamos a algumas lições que aprendi:
O principal objetivo e a razão
Algumas vezes podemos esquecer disso, mas o principal objetivo de um code review é manter a qualidade do código, consequentemente melhorando a qualidade/confiabilidade do projeto. Quando se está fixado na mente que o principal objetivo é a qualidade do projeto, cria-se uma missão em comum com os seus colegas de equipe, que gera companheirismo e empatia.
Sempre que for revisar o código de alguém, lembre-se desse objetivo, é comum o code review acabar virando apenas uma crítica sem um objetivo, ou seja, quando uma crítica é feita com uma razão forte, provavelmente, será melhor aceita, já quando feita apenas pensando em código e sem empatia alguma por quem fez, existe uma grande probabilidade que se torne uma coisa desagradável, até mesmo tenha um tom ríspido ou agressivo, o que não traz benefício algum para a equipe.
Assim penso, acima de code reviews e lutas de ego entre programadores, está o bom relacionamento e sintonia entre a equipe. Hoje tenho uma certeza, prefiro trabalhar em empresas que se importam mais com o bom relacionamento dos colaboradores do que com as críticas feitas nos code reviews, já que tenho uma impressão (quase certeza) de que esses ambientes acabam entregando melhores produtos aos seus clientes e são ambientes muito melhores para se trabalhar e crescer como pessoa, além de fazer com o que os colaboradores sintam vontade de permanecer por anos e anos nesses lugares.
Empatia, enviando a mensagem
A empatia é o elo que liga uma crítica a um ambiente cordial e respeitoso entre colegas de equipe. Tive companheiros de equipe que faziam críticas tão boas e de uma forma tão sutil que eu tinha vontade de recebe-las todos os dias (várias vezes aos dias), por sentir que aquilo estava me fazendo evoluir como programador e como pessoa. Ao ver a cordialidade embutida na crítica, aquilo acabava me contagiando e criando um efeito dominó, eu sentia vontade de tratar os meus colegas com toda aquela gentileza que recebi através de críticas. Isso não tem preço.
Por outro lado, quando a empatia não faz parte das peças do jogo, o mais comum é que se crie um ambiente de disputa, nada cordial e até agressivo. Não consigo enxergar de que forma isso traz benefícios para a equipe ou empresa, já que o maior patrimônio das empresas, são as pessoas e não o código. Se as pessoas não estão pensando no seu colega antes de fazer uma crítica, já existe um erro que deveria ser revisado antes mesmo do code review.
Foco no problema, recebendo a mensagem
Do outro lado da ponta está o receptor, quem recebe a mensagem precisa estar preparado e adaptado ao pensamento de que críticas construtivas te fazem evoluir, e isso é tão importante quanto a forma com a mensagem é enviada. Não adianta enviar uma mensagem cordial e gentil se do outro lado é entendida como um "jab de direita". Focar sempre nos problemas e não em pessoas é um bom exercício para se tornar um expert em receber críticas e transforma-las em um degrau na sua evolução.
Conclusão
Sempre estou me fazendo algumas perguntas como:
- Estou fazendo o meu melhor?
- Estou pensando no meu colega?
- Estou usando as melhores palavras?
- Estou pensando em todo o contexto?
Essa auto-reflexão te deixa mais consciente para não enviar uma mensagem ou receber recebe-la de uma forma errada. Cautela sempre é bom, pensar no próximo é melhor ainda, esses são ingredientes de um bolo que sempre corre riscos de não ficar bom, porém se utilizar os ingredientes certos e fizer com carinho, a chance de dar errado diminui muito. Graças a minha esposa, aprendi isso.
Pra mim, a mesma coisa vale para code reviews, os ingredientes são bem conhecidos e são fáceis de encontrar, basta saber dosar e sempre jogar duas xícaras de chá cheias de empatia que o risco do bolo ficar murcho ou sem sabor, é bem menor.
É isso.