Executando verificação de segurança...
2

[DÚVIDA] Pull Requests são realmente necessárias?

Fala pessoal, atualmente trabalho como coordenador de uma equipe pequena de desenvolvimento (4 devs sênior e 5 estagiários) e como em todo lugar, tem mais demanda do que gente pra conseuguir fazer tudo.

Atualmente não temos um processo de revisão de código, pelo menos não para os devs sênior, para os estagiários os devs acabam revisando um pouco do código quando dão algum suporte pra eles.

Apesar de não ser muito comum, por conta de não termos esse processo de revisão, já tivemos alguns casos que se outra pessoa tivesse olhado o código alguns problemas poderiam ter sido evitados.

Por isso tenho buscado sobre como melhorar a nossa qualidade de entrega, não que ela esteja ruim, mas sei que tem espaço pra melhorar. E pelos conteúdos que consumo sobre programação, principalmente vídeo do youtube e podcast, nacionais ou gringos, e até em conversas com colegas de outras empresas, vejo como uma prática comum os processos de Pull Request.

Sei que cada empresa tem uma realidade diferente, por isso nem tudo que a gente vê por aí se aplica pra todo mundo. Mas considerando uma realidade como a minha aqui, onde temos pouca gente pra muito trabalho, qual seria a vantagem de implantar um processo desse?

Ao ter que fazer a revisão de outro código cada dev vai acabar entregando menos código e aumentando o tempo das entregas, não? Por isso a pergunta: Pull Request são realmente necessários?

Espero poder aprender bastante com as experiências de vocês.

Carregando publicação patrocinada...
4

Ao ter que fazer a revisão de outro código cada dev vai acabar entregando menos código e aumentando o tempo das entregas

Qual a qualidade da sua base de código hoje?

Qual a porcentagem de tempo que é gasta em correção de bugs?

Quando desenvolvemos um código temos uma visão enviesada do resultado, testamos um numero X de cenários e não conseguimos pensar em cenários diferentes. Quantas vezes você apenas explicou um problema para outra pessoa e esta te deu um cenário que você nunca imaginou?

A revisão pode aumentar o tempo da entrega, mas a entrega vai ser com uma qualidade maior e consequentemente vai diminuir a quantidade de bugs e o tempo gasto em correções


Disclaimer

Revisão de código e pull request são duas coisas diferentes.

Pull Request é simplesmente o ato de solicitar o merge dos commits ao repositório principal sem a ocorrencia de conflitos de merge.

Revisão é analisar a qualidade dessa solicitação

2

Qual a qualidade da sua base de código hoje?

Boa pergunta, essa seria o meu próximo post aqui no tabnews rs "Como avaliar a qualidade de um código?"

Sobre esse ponto eu comecei a pesquisar recentemente sobre o Sonarqube, mas hoje eu não sei dizer de forma objetiva qual a qualidade do código. Subjetivamente, eu penso que dá pra melhorar, mas hoje não tenho dados pra dizer onde melhorar e como.

Recentemente começamos a usar o Jira para mapear as tarefas, mas ainda tem pouco tempo pra tirar alguma conclusão de lá, mas percebo que com mais dados vou conseguir fazer essa análise um pouco melhor da relação de bugs por falha de código.

A revisão pode aumentar o tempo da entrega, mas a entrega vai ser com uma qualidade maior e consequentemente vai diminuir a quantidade de bugs e o tempo gasto em correções

Foi o ponto que mais fez sentido pra mim pra justificar ter um processo de revisão.

Revisão de código e pull request são duas coisas diferentes.

Realmente, tratei como se fossem sinônimas mas é possível fazer revisão sem pull request, por exemplo com pair programming talvez. Acabei juntando as duas pelo fato do pul request ser bem útil pra revisão.

1

Sim, no github tem todo um processo de aprovação e rejeição do PR. Dá pra explicar o motivo que foi recusado e voltar.

Como avaliar a qualidade de um código?

Primeira pergunta é a que fiz antes. Qual a % de tempo que sua equipe fica corrigindo problemas e qual a % do tempo é gasto para coisas novas?

Acredito que essa é a primeira resposta que você precisa ter

2

Boa noite!

Considero grande uma equipe de 9 pessoas. Com 4 sêniors acredito que vocês tratem vários assuntos paralelamente. Por esse motivo, já considero valoroso ter um processo de revisão de código. 1) Mantém todos (ou quase todos) atualizados do que está sendo feito. 2) Ajuda a manter o padrão de código. 3) Oportunidade para encontrar bugs e code smells antes de ir para produção.

Outro ponto: Considero equivocado acreditar que código de Dev sênior não precise ser revisado. Esse tipo de "divisão" é muito nocivo dentro da equipe.

Por último, lembre que revisão de código não é perda de tempo. Produtividade não é só escrever código (principalmente para Sênior). Documentar, revisar, ajudar outros Devs, apoiar P.O., etc, tudo isso é ser produtivo.

Espero ter ajudado, amigo! Boa sorte.

2

"Ao ter que fazer a revisão de outro código cada dev vai acabar entregando menos código e aumentando o tempo das entregas, não? Por isso a pergunta: Pull Request são realmente necessários?"

Se sua definição de entrega é codigo escrito e não entrega em produção, sim vai aumentar o tempo.
A revisão de código acelera o aprendizado técnico e de regras de negócio para todos.

"já tivemos alguns casos que se outra pessoa tivesse olhado o código alguns problemas poderiam ter sido evitados."

Isso já é um grande sinal que deveria levar em conta.

Talvez o que precisa, é medir as entregas de uma maneira mais abrangente contando com correção de bugs, tempo de atuação até a entrega em definitivo(com o cliente utilizando) isso tudo deveria fazer parte da entrega, não somente código escrito.

Dê uma pesquisada sobre "Dora metrics"
Já te daria uma visão geral de como medir entregas de software de uma maneira mais assertiva.

Escrever código é só uma parte do trabalho com desenvolvimento de software.

2

Como já foi mencionado aqui em comentário anterior, Pull Requests e Revisão de código (code reviews) são coisas completamente diferentes (já foi explicado e não vou repetir novamente).

O que sugiro é continuar na busca do entendimento, ver os prós e contras e vê se faz sentido para você e para o time que trabalha contigo.

Vale lembrar também, que com algumas automações (uso de CI/CD, GitActions, Sonar, etc..) e talvez o uso adequado das IAs também (são os hypers atualmente) ajudem a melhorar a qualidade das entregas e não sobrecarregue alguém do time com esse trabalho das revisões.