A programação em par e a integração contínua podem andar de mãos dadas. Enviar para o main várias vezes ao dia é difícil em isolamento, levando a atrasos, PRs grandes e problemas de mesclagem, mencionaram Ola Hast e Asgaut Mjølne Söderbom em sua palestra sobre entrega contínua com programação em par no QCon Londres. A programação em par permite revisões de código instantâneas, refatorações mais fáceis, menos bugs e maior resiliência da equipe.
Em um artigo anterior, Hast e Mjølne Söderbom mencionaram que sua equipe usa programação em par e mob com TDD; não há tarefas solo ou revisões de código separadas. Essa abordagem aumenta a qualidade do código, reduz o desperdício e possibilita o compartilhamento de conhecimento. Pausas frequentes ajudam a manter o foco e o fluxo.
A programação em par e a integração contínua (CI) se apoiam mutuamente. CI real significa enviar para o main várias vezes ao dia, ou assim que você termina uma pequena tarefa, disse Mjølne Söderbom. Isso é difícil de alcançar quando os desenvolvedores trabalham em isolamento, já que cada mudança requer revisão e coordenação externas:
“Se nossa equipe de quatro desenvolvedores trabalhasse em isolamento/sozinha, seria quase impossível trabalhar com CI real. Eles teriam que interromper uns aos outros o tempo todo. O resultado imediato disso é que eles produzem tarefas maiores com pull requests maiores. Isso também interrompe nosso próprio fluxo. Então, todo o conceito de CI desmorona. Nós vemos isso acontecer em outras equipes o tempo todo.”
Refatoração se torna especialmente difícil se as pessoas trabalham em isolamento, muitas vezes sendo adiada com promessas de “depois”, que nunca acontecem, disse Hast. Quando as pessoas trabalham em isolamento, adiciona-se uma camada de coordenação para fazer a refatoração necessária, o que leva a um “inferno de mesclagem” ou mais promessas de fazê-lo depois.
Há tanto tempo desperdiçado esperando nas organizações, especialmente na indústria de software. Esse tempo desperdiçado raramente recebe foco nas organizações porque pode ser difícil de ver claramente, especialmente para a gestão. A maneira de trabalhar deles significa que muitos dos processos que geralmente fazem parte de um fluxo de desenvolvimento são supérfluos, explicou Mjølne Söderbom:
“Por exemplo, como implantamos pedaços muito pequenos na produção e temos a capacidade de ocultar funcionalidades por trás de toggles de funcionalidades, testar em outros ambientes simplesmente não é necessário.”
Mjølne Söderbom mencionou que eles gastam muito pouco tempo revisando código de pull requests, já que fazem toda a revisão continuamente enquanto programam em par. “Não é algo que decidimos fazer; é apenas uma consequência natural de trabalhar dessa maneira”, disse ele.
Ao trabalhar juntos, você não apenas reduz o desperdício durante a tarefa, mas também reduz enormemente o desperdício no que chamamos de retrabalho; todas as coisas que podem acontecer após uma tarefa estar “finalizada”, mencionou Mjølne Söderbom:
“Como usamos TDD, programação em par e CI, ficamos com um valor significativamente mensurável.
Isso resulta em menos bugs em produção, e ainda mais importante, o código é mais fácil de mudar, e podemos desenvolver software mais rápido no futuro”, concluiu ele.
InfoQ entrevistou Ola Hast e Asgaut Mjølne Söderbom sobre refatoração e os benefícios que sua maneira de trabalhar trouxe para eles.
InfoQ: Como você faz refatoração?
Asgaut Mjølne Söderbom: Fazer a refatoração necessária é muito difícil, pois precisa ser coordenada com todos. As pessoas tendem a dizer: “Faremos essa refatoração em outro pull request depois”. O que significa nunca.
Ao trabalhar em pequenos passos e colocando o código em produção rapidamente, podemos facilmente fazer algumas arrumações/refatorações, implantar isso na produção e depois voltar ao que estávamos fazendo. Isso é um enorme benefício para melhorar o código legado à medida que você avança.
InfoQ: Quais benefícios você obtém da maneira como está trabalhando em equipe?
Ola Hast: Quando você trabalha de perto com um pequeno grupo de indivíduos ao longo do tempo, você os conhece muito bem. Então, a segurança psicológica é alta, o nível de estresse é baixo e nos divertimos muito trabalhando juntos.
O conhecimento compartilhado no grupo nos dá resiliência, o que é muito útil, dado que ambos temos filhos pequenos com tudo que isso implica, como doenças ou reuniões escolares. Alguém estar ausente geralmente nunca é um problema para nosso progresso, pois temos continuidade.
