Pair Programming

Existem vários artigos por aí falando sobre Pair Programming, muitos deles são bons e realmente ajudam a entender a prática e como iniciar a sua aplicação na sua equipe. Nesse post eu vou falar sobre a experiência que tive com pair programming, comentando os pontos positivos e algumas dificuldades e como elas foram superadas.

Para quem não sabe o que é Pair Programming

Acho que não existe nenhum desenvolvedor que não conheça a técnica, sério.

Alguns pontos importantes a serem notados é que a prática faz parte do XP[1], ou seja, é importante avaliar a prática junto com o resto do ecossistema da metodologia.

A programação em par, junto com as mudanças de pares são o centro da propriedade coletiva de código do XP. A propriedade coletiva do código é o centro da etapa de desenvolvimento do XP, que por sua vez é o centro das interações. Por tanto a programação em par pode ser considerada uma das bases do XP. Para mais informações visite o site oficial do XP [1] e veja o “flow chart” do XP.

Compartilhando o conhecimento

Trabalhar em uma parte do código lhe dá confiança para não só realizar as tarefas que foram atribuídas, mas também discutir sobre as questões que pairam ao redor daquela parte do sistema. Por tanto é muito importante que cada membro trabalhe com o maior parte possível do sistema, idealmente com todo o sistema.

Para que esse conhecimento seja compartilhado por toda a equipe a programação em par desempenha um papel chave. Se você desenvolve uma funcionalidade com alguém, quando outra pessoa vem parear com você ela ganha conhecimento nessa área também. Mais tarde, quando você vai parear com outra pessoa, você ganha conhecimento na outra funcionalidade. A rotação entre os pares também é essencial para esse processo.

Code Review ao extremo

Uma prática não tão comum entre equipes é a revisão de códigos. Uma pessoa que não esteve envolvido na produção do código  olha o código e sugere mudança e avalia os impactos das decisões tomadas na produção do código. A programação em par leva essa prática ao extremo pois enquanto uma pessoa produz o código outra faz a revisão na mesma hora.

O piloto, desenvolvedor que está programando ativamente, tem como preocupação fazer o teste passar o mais rápido possível (considerando que em pleno 2012, não existe desenvolvedor que não escreve testes). O navegador, desenvolvedor que está revisando o código, tem como objetivo analisar o código e avaliar o impacto das decisões considerando o código como um todo.

É importante trocar papéis durante uma seção de pareamento, pois é fácil para o piloto ficar cansado, bem como é fácil para o navegador se distrair com outras coisas. As vezes o entrosamento do par é tão grande que a mudança ocorre naturalmente, com um desenvolvedor peando o teclado para si.

No entanto pode ser importante chegar a um acordo sobre as mudanças, como por exemplo utilizar a técnica do ping-pong, onde uma pessoa escreve o teste, a outra escreve o código para fazer o teste passar e em seguida ambos sugerem refatorações.

Compartilhando a configuração

É importante notar que a programação em par envolve duas pessoas (dahh). Mais do que duas pessoas, dois desenvolvedores. Cada um tem suas opiniões, preferências e esquisitices. As diferenças vão desde o browser preferido até os atalhos personalizados que cada um utiliza. Assim o ambiente de trabalho precisa ser bem semelhante para que ambos os desenvolvedores sintam-se livres para trabalhar.

Uma solução é ter um computador neutro, com configurações que todos concordam, ou pelo menos aceitam utilizar. Desta forma, os desenvolvedores acabam se acostumando a trabalhar com estas configurações e os conflitos são evitados. Além disso cada um pode utilizar seu próprio laptop para resolver problemas pessoais, verificar e-mails etc.

Caso ambos precisem codificar em um computador pessoal, então é melhor que os pares cheguem a um acordo sobre as configurações ou com o tempo revesem o computador em uso para que cada um possa utilizar suas configurações.

Discutindo a relação

Outro ponto importante é sobre o código. Desenvolvedores costumam ter opiniões muito fortes sobre a “melhor maneira” de se resolver algum problema. Se os pares não souberem administrar as diferenças e aceitarem as opiniões uns dos outros, simplesmente não é possível que os pares consigam trabalhar juntos.

Uma boa ideia é juntar programadores experientes com outros menos experientes, assim um pode passar o conhecimento que possui para o outro. Mesmo quando dois desenvolvedores experientes estão pareando, é importante notar duas coisas: (1) o código possui um pouco do seu estilo de programar, ou seja, você consegue reconhecer o código como seu, e (2) o código não parece ser escrito por você por si só, ou seja, o código possui uma parte do estilo do outro desenvolvedor.

Apesar de parecerem opostos, ou até mesmo contrários, os dois pontos acima asseguram que ambos os pares tenham influencia no código produzido. Dessa forma ambos os desenvolvedores tem o sentimento de propriedade do código e podem assumir a responsabilidade pelo que foi feito.

Pair Programming != Mentoring

A programação em par, mesmo entre pares em diferentes estágios de experiência, não deve ser encarada como uma pessoa ensinando outra. Nestes casos, o maior problema é que o par com menos experiência acaba se inibindo e deixando de opinar sobre o código.

O desenvolvedor mais experiente deve deixar espaço para que o desenvolvedor menos experiente opine, pois assim ele tem a chance de refletir sobre o seu conhecimento do sistema. Também é importante que fique claro para ambos os motivos de uma ideia não ser aceita, ao invés de apenas dizer que a ideia não é boa, ou “o meu jeito é melhor”.

Para quem quiser explorar um pouco mais sobre Pair Programming eu recomendo muito o artigo da ImproveIT [2], é bem extenso mas vale muito a pena.

Referências:

[1] http://www.extremeprogramming.org/

[2] http://improveit.com.br/xp/praticas/programacao_par

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s