Se você ainda não usa nenhuma ferramenta, eu sugiro que comece verificando o
Jenkins (jenkins-ci.org) e o CruiseControl (cruisecontrol.sourceforge.net).
82
Casa do Código
Capítulo 4. Entregando Valor
4.9
Programação em Par
A programação em par é uma técnica na qual dois programadores trabalham em
um mesmo problema, ao mesmo tempo e em um mesmo computador. Enquanto
uma pessoa (o condutor) assume o teclado e digita os comandos que farão parte do
programa, a outra (o navegador) a acompanha fazendo um trabalho de estratégia
[60].
A revisão de código, na programação em par, acontece em tempo real. Enquanto
um desenvolvedor está codificando, o outro está revisando o código. Pequenos er-
ros, que poderiam ser extramente difíceis de se corrigir posteriormente, podem ser
facilmente identificados e corrigidos nesse momento.
Os antigos já diziam que duas cabeças são melhores do que uma, e a programa-
ção também se beneficia disso. Dois desenvolvedores com um conjunto de conheci-
mento e experiência diferentes são, em regra geral, capazes de resolver um problema de forma muito mais eficiente do que poderiam fazer se estivessem trabalhando sozinhos. É o princípio da sinergia aplicado à programação.
Em um primeiro olhar, pode-se pensar que a programação em par é uma técnica
que reduz a produtividade da equipe, e que se ambos os desenvolvedores estivessem
trabalhando em paralelo resolveriam um determinado problema mais rapidamente
do que trabalhando juntos.
A programação em par é a prática de desenvolvimento ágil de software com mais
estudos científicos realizados na Academia até agora, e alguns desses estudos de-
monstram que, na prática, a programação em par não apresenta grandes diferenças
de produtividade [67], e que, em geral, o produto é entregue com menos defeitos e
com melhor qualidade, isso significa que menos tempo será desperdiçado em corre-
ções de defeitos e que a futura manutenção do software será mais fácil, ou seja, em uma análise de médio prazo, podemos concluir que a programação em par é, de fato,
eficiente.
Um dos fatores que apoiam essa alta produtividade é pressão dos pares. Nestes
tempos de redes sociais, e-mail, SMS, e diversas outras distrações, um desenvolvedor pode facilmente perder o foco e se distrair quando trabalha sozinho.
Trabalhando em par, o desenvolvedor assume um compromisso com seu colega
reduzindo assim a distração e a perda de foco, e como há um colega acompanhando
a codificação, há uma preocupação maior em criar soluções com mais qualidade e
elegância.
83
4.9. Programação em Par
Casa do Código
Programação em Par e Aprendizado
Aprender é a única coisa de que a mente nunca se cansa, nunca tem medo e nunca se
arrepende.
Leonardo da Vinci
Trabalhando em par, o conhecimento do time será rapidamente disseminado en-
tre os membros do time ajudando na eliminação de ilhas de conhecimento. Para que
isso aconteça de forma eficiente, é importante que haja um revezamento constante
entre os pares, de forma que todos tenham oportunidades de trabalhar com todos.
84
Casa do Código
Capítulo 4. Entregando Valor
A Pirâmide dos Pares
Uma ferramenta interessante para incentivar o revezamento entre os
pares e tonar visível quem está pareando com quem ao longo de uma
iteração é a Pirâmide dos Pares ou Pair-amid [44].
Trata-se basicamente de uma matriz que cruza todos os membros do
time, e desconsidera os cruzamentos repetidos e os cruzamentos de in-
divíduo com ele mesmo, veja na figura 4.4.
Figura 4.4: Pirâmide dos Pares
No exemplo acima, podemos ver que, até agora, o Robson e o Luiz
nunca parearam, e que o Robson pareou 3 vezes com a Carol e 2 vezes
com a Aline.
Se a pirâmide dos pares ficar visível no quadro do time, tornar-se-
á uma ferramenta útil para incentivar a programação em par e o reve-
zamento dos pares resultando em maior compartilhamento de conheci-
mento entre os membros do time.
A programação em par cria um espaço para aprendizado contínuo dentro da
equipe [60]. O trabalho em par também pode ser mais eficiente para disseminar
conhecimento do que documentações uma vez que não se limita ao que está escrito
e porque há troca de conhecimento entre ambas as partes.
É importante, porém, diferenciar programação e par de mentoria [1], a relação
da programação não é de estudante e professor, mas em vez disso, é uma relação
85
4.10. Revisão de Código
Casa do Código
de duas pessoas trabalhando juntas. Se há uma diferença muito elevada no nível
de conhecimento de dois profissionais trabalhando em par, provavelmente o que vai
acontecer é que um deles irá ensinar o outro na maior parte do tempo, criando assim uma relação que caracterizaria mais mentoria do que com programação em par.
A mentoria é também, sem dúvida, uma prática muito válida e importante em
uma equipe de desenvolvimento de software, mas é importante separar um conceito
do outro, e estar ciente de que a mentoria, geralmente, não resulta na mesma pro-
dutividade da programação em par, e que, muitas vezes, é um investimento mais de