Pair Programming - Construir software em equipe
O Pair Programming é uma prática que a cada dia vem ganhando mais espaço em times ágeis. Essa forma de trabalhar muda um pouco a maneira com que desenvolvemos software, ao invés de criar código sozinho, trabalhamos em parceria com outras pessoas em busca de soluções mais participativas. Apesar de parecer algo simples, alguns cuidados são importantes para aproveitar ao máximo essa prática. Compartilho neste artigo algumas lições aprendidas que tive utilizando o pareamento para desenvolver software.
Divida o trabalho em tarefas
Pair Programming exige transparência do trabalho a ser realizado. As pessoas envolvidas devem estar cientes de onde se quer chegar. Uma boa maneira de fazer isso é dividir o card em pequenas tarefas. Ao dividir o card em partes menores, ficará claro para todas as pessoas os passos necessários para sua conclusão. Isso facilitará também a comunicação entre as pessoas no pareamento, flexibilizando assim escolher a melhor estratégia a ser utilizada.
Alinhamento das agendas
Para evitar interromper o pareamento de forma inesperada devido reuniões ou outros compromissos, faça um alinhamento das agendas logo no início. É comum que existam outros compromissos que impossibilitem fazer o pareamento em alguns momentos do dia, alinhar as agendas ajuda para que ambas pessoas possam programar outras atividades. Um ótimo exemplo é que enquanto uma das pessoas precisa se ausentar, a outra pode atuar em algumas tarefas que exigem mais concentração ou também programar eventuais reuniões fora do pareamento. O alinhamento de agenda é algo rápido, no máximo alguns minutos no início do pareamento.
Ambas pessoas pilotam
Uma das coisas mais importante durante o Pair Programming é que ambas as pessoas possam ser piloto e copiloto. Ser piloto ou copiloto tem as suas vantagens, por isso é importante que exista um rodízio entre as participantes. Para pilotar, é necessário que o ambiente da pessoa esteja preparado para realizar as tarefas, o que muitas vezes já exige um compartilhamento de conhecimento. Ambas pessoas fazerem commit e se sentirem responsáveis por cada pequena entrega tem um valor muito grande para o trabalho em equipe.
Cito aqui uma experiência positiva que tive em um Pair Programming em que optamos por fazer o rodízio de piloto e co-piloto a cada 25/30 minutos, colocando uma pausa de 5 minutos a cada troca. A experiência foi ótima, recomendo fortemente essa forma de trabalhar. Além de um grande compartilhamento de conhecimento, as pausas de 5 minutos deixaram o pareamento mais leve.
Trabalhe com commits pequenos
Submeter alterações em pequenos passos ajuda a dividir um grande problema em partes menores. Quando se trabalha com pequenos commits, o rodízio de piloto e co-piloto se torna mais fácil de ser feito. Troque aquele commit enorme, com muitos arquivos por uma sequência de pequenas alterações. Abaixo um exemplo que normalmente acontece em histórias que exigem algum tipo de refatoração no código, antes de submeter as mudanças. Como pode ser visto, é uma sequência de commits em que cada um deles a aplicação não fica quebrada.
- (1) Cobrir método com testes unitários;
- (2) Extrair o método para uma nova classe com menor responsabilidade;
- (3) Renomear as variáveis;
- (4) Criar teste unitário para regra de negócio X;
- (5) Incluir a regra de negócio X.
Se surpreenda com soluções diferentes
Em algumas situações podem existir divergências de pensamentos, isso é normal, faz parte. O Pair Programming é um momento de troca, é muito importante estar aberto para criar uma linha de raciocínio para resolver algo em conjunto. Esse é um ótimo momento para aprender uma maneira diferente de resolver um problema, e acredite, em algumas vezes você vai se surpreender.
Utilize TDD
Criar código orientado a testes (Test-driven development) inverte um pouco a forma que solucionamos os problemas. Primeiro pensamos onde queremos que o código chegue, depois criamos um teste para isso e somente então começamos a implementação. Veja que essa prática exige algumas discussões sobre o que será feito, o que a torna extremamente eficaz durante o pareamento. Sempre que possível, adote essa prática em suas sessões de pareamento, ela tornará as interações muito mais assertivas.
Faça pausas
O Pair Programming é uma prática com muitos benefícios, entretanto ela exige uma grande troca de energia. Muitas horas seguidas de pareamento pode se tornar algo extremamente cansativo. Recomendo criar intervalos durante as sessões de pareamento e deixar algumas horas do dia reservadas para atividades individuais. Isso vai tornar as sessões de pareamento algo muito mais leve.
Faça o rodízio dos pares
É extremamente saudável para a equipe fazer rodízio dos pares. Isso pode parecer algo simples, mas dependendo do nível de afinidade entre as pessoas da equipe, é possível que existam algumas inseguranças que geram receios. Uma dica é estabelecer alguma política interna na equipe que favoreça fazer esse rodízio, como por exemplo, mudar os pares a cada Sprint (ou também 15 dias).
É possível que no momento de realizar o rodízio dos pares o card não tenha sido concluído, sendo assim uma das pessoas que estava no pareamento precisará prosseguir nela. Não hesite em mudar os pares mesmo que o card não tenha sido concluído, é muito difícil ocorrer uma sincronia na conclusão deles.
Conclusão
O Pair Programming é uma prática repleta de benefícios, na maior parte das vezes que utilizei tive boas experiências. É um ótimo momento para conhecer pessoas novas e aprender com elas. Recomendo fortemente que seja utilizado, no início a equipe pode estranhar, mas conforme o tempo passa os resultados começam a aparecer. Você vai perceber que o compartilhamento de conhecimento entre as pessoas passa a ser algo comum, as soluções passam a ser mais assertivas devido brainstormings que ocorrem durante o pareamento. O senso de trabalho em equipe também vai aumentar, tendo em vista que as tarefas e código gerado passam a ser de responsabilidade coletiva.