<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Filipe</title>
    <description>The latest articles on Forem by Filipe (@fm1randa).</description>
    <link>https://forem.com/fm1randa</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F579882%2Fb25cef1b-4d72-4024-8deb-1942a347005c.JPG</url>
      <title>Forem: Filipe</title>
      <link>https://forem.com/fm1randa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/fm1randa"/>
    <language>en</language>
    <item>
      <title>Pull request / Melhores práticas</title>
      <dc:creator>Filipe</dc:creator>
      <pubDate>Mon, 31 Oct 2022 20:03:48 +0000</pubDate>
      <link>https://forem.com/fm1randa/pull-request-melhores-praticas-22no</link>
      <guid>https://forem.com/fm1randa/pull-request-melhores-praticas-22no</guid>
      <description>&lt;h2&gt;
  
  
  Por que se importar com bons pull requests?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Aumentar a produtividade do time&lt;/li&gt;
&lt;li&gt;Minimizar a frustração&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Também:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Um bom pull request tende a ser revisado rapidamente;&lt;/li&gt;
&lt;li&gt;Reduz introdução de bugs na base de código;&lt;/li&gt;
&lt;li&gt;Facilita a integração de novos desenvolvedores;&lt;/li&gt;
&lt;li&gt;Não bloqueia o trabalho de outros devs;&lt;/li&gt;
&lt;li&gt;Acelera o processo de revisão de código e consequentemente o desenvolvimento do produto.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Boas práticas:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Anatomia na criação de PRs
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Target&lt;/em&gt; e &lt;em&gt;source&lt;/em&gt; branches&lt;/strong&gt;&lt;br&gt;
feature/x --&amp;gt; development --&amp;gt; master&lt;br&gt;
&lt;em&gt;source&lt;/em&gt;ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ&lt;em&gt;target&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tamanho&lt;/strong&gt;&lt;br&gt;
Evite PRs extensos. Procure abrir um pull request com poucos arquivos e linhas de código&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Título e descrição&lt;/strong&gt;&lt;br&gt;
Forneça uma visão geral do seu trabalho juntamente com os links relevantes de forma que uma pessoa que acabou de entrar no time entenda.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tenha em mente quando estiver recebendo ou dando feedback:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Um mesmo problema pode ter mais que uma boa solução&lt;/strong&gt;. Discuta os &lt;em&gt;tradeoffs&lt;/em&gt; (pros e contras), riscos, impacto e chegue à um consenso rapidamente.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Faça boas perguntas, &lt;strong&gt;não crie demandas&lt;/strong&gt;. Boas perguntas &lt;strong&gt;evitam julgar&lt;/strong&gt; a perspectiva do autor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Não faça suposições, peça esclarecimentos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Evite propriedade seletiva de código. ("meu", "não é meu", "seu" código)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Seja humilde e respeitoso&lt;/strong&gt; para manter o ambiente real e profissional. De modo geral, evite termos que podem ser levados pro lado pessoal. Se emoji, GIFs ou humor não fazem o teu estilo, não force. Se fazem, use &lt;del&gt;e abuse&lt;/del&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fale sincronamente&lt;/strong&gt; (chat, compartilhando tela, pessoalmente) se você tem muitas dúvidas ou sugestões. Depois, faça um comentário resumindo a discussão.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mencione colegas ou times que você queira envolver na discussão e mencione o porquê. (@fulano, tem alguma sugestão quanto à essa abordagem?)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Dando feedback:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Respeite o tempo da pessoa&lt;/strong&gt;. Revise o mais rápido que puder. Seu colega pode iniciar outra tarefa e pode ser difícil para ele voltar à &lt;em&gt;task&lt;/em&gt; do PR se você incluir alguns comentários.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fique atento ao &lt;strong&gt;viés negativo&lt;/strong&gt; (se o conteúdo é neutro, assumimos que o tom é negativo) na comunicação online. Sempre conceda &lt;strong&gt;feedbacks positivos&lt;/strong&gt;. Evite linguagem negativa/neutra e prefira a positiva.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✅ Prefira:
"Eu sugiro X" ou "Você pode melhorar X fazendo Y"

❌ Evite: 
"Faz X" ou "X é errado, por que você não faz Z?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Não mude o código&lt;/strong&gt; enquanto estiver revisando.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use uma checklist&lt;/strong&gt; para tentar capturar algum deslize, erro, violação de convenção, risco de performance e etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Se você discorda fortemente, considere tirar alguns minutos para &lt;strong&gt;refletir antes de responder&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Explique os motivos&lt;/strong&gt; pelo qual você acredita que o código deve ser alterado. Por exemplo: o código não está de acordo com o &lt;em&gt;style guide&lt;/em&gt; ou até com uma preferência pessoal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Forneça maneiras de simplificar ou aprimorar o código.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Se as discussões ficarem muito filosóficas ou acadêmicas, mova a discussão para uma &lt;strong&gt;reunião técnica&lt;/strong&gt; relacionada ao assunto. Então, deixe o autor tomar a decisão final sobre as soluções alternativas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Foque em desenvolver &lt;em&gt;skills&lt;/em&gt; profissionais&lt;/strong&gt;, conhecimento do grupo e a qualidade do produto, através da crítica coletiva.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use emojis&lt;/strong&gt; para esclarecer o tom. Compare "Parece bom :)" ou "Parece bom! 👍" com "Tá bom."&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Respondendo feebacks:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agradeça&lt;/strong&gt; as sugestões. "Valeu! Vou alterar isso."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"&lt;strong&gt;Não leve pro pessoal&lt;/strong&gt;. O que está sendo revisado é o seu código, não você". Assuma que o revisor teve a melhor intenção em seus comentários e tenha em mente o quão difícil é transmitir emoções online. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Explique a razão do código existir.&lt;/strong&gt; "Fiz desse jeito, por causa disso, disso e disso. Seria mais claro se eu renomeasse essa classe/arquivo/método/variável?".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Caso encontre possibilidade de mudança ou refatoração, &lt;strong&gt;registre-as em &lt;em&gt;tasks&lt;/em&gt; futuras&lt;/strong&gt; e histórias.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tente responder todos os comentários.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Se perceber alguma confusão ou debate começando, &lt;strong&gt;se pergunte se o que você escreveu foi escrito da melhor maneira&lt;/strong&gt;. Converse (virtualmente) face a face, então considerem criar um comentário para resumir o que conversaram.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Faça o &lt;em&gt;merge&lt;/em&gt; somente quando você tiver &lt;strong&gt;confiante&lt;/strong&gt; e o seu sistema de integração contínua mostrar que os &lt;strong&gt;testes e &lt;em&gt;builds&lt;/em&gt; estão OK&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Resolvendo conflitos
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Exija ao menos &lt;strong&gt;2 revisores de código&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eventualmente o autor do PR e o revisor poderão discordar. Isso é &lt;strong&gt;perfeitamente normal&lt;/strong&gt; e na verdade é um sinal de uma &lt;strong&gt;boa dinâmica de time&lt;/strong&gt;. Entretando, o que não é normal é ter discussões intermináveis ou um desenvolvedor passar por cima do outro por preferências pessoais, senioridade, acessos, etc.&lt;/p&gt;

&lt;p&gt;É bom se prevenir dessas situações e ter uma &lt;strong&gt;estratégia para resolver conflitos&lt;/strong&gt;. Um bom método é ter pelo menos 2 revisores. Nesses casos, é simplesmente a solução do voto da maioria que será aderida.&lt;/p&gt;

&lt;p&gt;Traduzido e adaptado de:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rewind.com/blog/best-practices-for-reviewing-pull-requests-in-github/"&gt;Best practices for reviewing pull requests&lt;/a&gt;&lt;br&gt;
&lt;a href="https://leoneperdigao.medium.com/pull-request-best-practices-fa20f7daeb3c"&gt;Pull request best practices&lt;/a&gt;&lt;/p&gt;

</description>
      <category>pullrequest</category>
      <category>git</category>
      <category>codereview</category>
    </item>
  </channel>
</rss>
