Implementando Pair Programming em sua equipe

Conhecendo as dificuldades e as vantagens dessa prática XP.

Conhecendo as dificuldades e as vantagens dessa prática XP

Nos últimos anos, o mercado de TI tem conhecido gradativamente, as vantagens de aderir às práticas da metodologia de desenvolvimento de software, Extreme programming (XP). Já existem muitos projetos sendo feitos sob a ótica ágil de XP e proporcionalmente a isso, as comunidades que debatem e incentivam seu uso vem crescendo cada vez mais no Brasil e no mundo.

Mas como XP defende conceitos e idéias ágeis, sua adoção também tem mostrado algumas lacunas na compreensão de algumas práticas propostas. Uma das práticas mais polêmicas é a de Pair Programming (Programação em Par) e nesse artigo, vou tentar mostrar de maneira clara e objetiva como implementá-la e como vencer seus principais obstáculos.

Conceito básico de Pair Programming

O conceito básico que envolve a prática de programação em par é o seguinte: compartilhar a codificação de uma classe, de um método ou de um trecho de código paralelamente entre 2(dois) programadores, onde, ambos trabalham ao mesmo tempo e no mesmo computador, mas claro que invertendo periodicamente entre os papéis do piloto e do co-piloto, ou seja, enquanto um dos programadores está codificando, o outro acompanha seu trabalho, observando se os padrões de projeto estão sendo seguidos, se a declaração das variáveis e métodos estão seguindo a mesma nomenclatura padrão, se sintaxe utilizada está correta, se método que está sendo implementado não pode ser simplificado, inclusive, já observando as possibilidades de refatoração no mesmo, se as regras de negócios estão de acordo com os casos de usos ou com os cartões, se os testes unitários ou de integração estão sendo seguidos a risca e de maneira geral, os programadores trabalham em par para compartilhar conhecimentos para melhor implementar as estórias definidas nos cartões.

Observe que ao contrário do que se pensa, o co-piloto, nem sempre deve ser o menos capacitado da dupla, pois devido a seu papel de quase “supervisão”, é importante que o mesmo possua uma grande capacidade e conhecimento sobre um projeto de software e suas minúcias. Mas a prática de alocar um programador forte com um fraco, também tem gerado bons resultados em muitos projetos, pois dessa forma em curto prazo, é possível pelo menos nivelar os conhecimentos técnicos sobre a linguagem usada no projeto, abordaremos a seguir, mas detalhadamente as vantagens da programação em par.

Práticas associadas, a grande vantagem

Uma grande vantagem da programação em par é o fato de a mesma favorecer o uso de outras práticas XP, como por exemplo: rodízio de pessoas, código coletivo, ritmo sustentável e padrões de projeto, pois basta lembrar dos conceitos dessas práticas, vejamos.

Rodízio de pessoas: uma vez que consiga dividir sua equipe em duplas, torna-se então possível fazermos periódicas trocas de pares, visando com que todos os membros compartilhem o conhecimento agregado no código produzido, favorecendo dessa forma à prática de propriedade coletiva do código, ou seja, nem uma classe ou método está somente sob a guarda de um único programador e todos possuem a mesma visão de todo o projeto.

Esse movimento de pessoas permite também ao coordenador da equipe, criar escalas de trabalho mais sustentáveis e não sobrecarregar ninguém com uma grade pesada de trabalho, favorecendo com isso a prática de ritmo sustentável.

Observe na figura abaixo, um modelo ideal para aplicação da prática de programação em par:

Conceito básico de Pair Programming.

É importante observar que, devemos sempre que possível, deixar os programadores à vontade para determinarem, em que momento deverão fazer as inversão de papéis e de pares, onde cada dupla deverá ter a sensibilidade para notar esse momento. É comum que os pares se invertam, por exemplo, por motivo de cansaço, seja de codificar ou acompanhar a codificação.

Outras vantagens:

Em projetos que usam a prática de programação em par existem também vantagens com relação à qualidade do código produzido, pois é observado que:

Observe que a palavra chave é “ATENÇÃO”, pois, com o seu aumento na codificação, a velocidade de implementação dos cartões também é reduzida, principalmente pela quase inexistência de retrabalho, e dessa forma começamos a ver em nossos projetos a aplicação real do termo “metodologia ágil”.

Dificuldades e Obstáculos

Infelizmente, o uso de pair programming não é somente um “mar de rosas”, pois como mencionei no início do artigo, existem muitas lacunas em sua compressão e falhas na forma de adoção da prática, de modo que, os maiores relatos de problemas no seu uso são:

De uma maneira geral, esses problemas estão muito ligados à natureza individualista e senso de sobrevivência de nós seres humanos. Mas isso não necessariamente configura-se como um problema, pois se observarmos bem a fundo o segredo do sucesso da prática de pair programming, iremos ver que pelo fato de que, não gostamos de comprometermos nossa individualidade, sempre procuramos abreviar ao máximo o tempo em que fazemos algo junto de outras de pessoas, com isso:

A Solução básica

Para terminar esse texto, afirmo a você que a prática de programação em par, quando bem aplicada, torna o desenvolvimento mais divertido, dinâmico e mais ágil, e gostaria de lembrar que a maioria dos casos de insucesso no uso de pair programming está associada ao não uso de outras práticas sugeridas por XP, principalmente pelas que são diretamente associadas à programação em par, como rodízio de pessoas, propriedade coletiva do código, padrões de projetos, e ritmo sustentável.

E isso é algo a ser olhado com muito carinho quando se tenta instanciar as práticas XP de forma modular, apesar de que devido a flexibilidade e dinamismo da metodologia, é importante sempre analisar quais práticas estão associadas entre si, pois caso você esqueça de usar alguma prática que seria fundamental para o sucesso de outra, as chances de fracassos como: atrasos, falta de aderência ao escopo, elevação do custo do projeto, aumentam muito.

Considerações finais

Termino esse artigo, convidando você a sentir-se tentado, a usar as práticas de Extreme Programming, e nos ajudar a divulgar, e evoluir seu uso. Espero sinceramente ter colaborado de maneira clara, não somente para a compreenssão do assunto, mas que esse artigo possa estimular uma profunda reflexão sobre o uso de extreme programming em projetos de desenvolvimento de software.

Confira também

Artigos relacionados