O pair programming no desenvolvimento de software
O pair programming (ou programação em pares) trata-se de uma técnica ágil de desenvolvimento de software, e originada da metodologia de programação chamada Extreme Programming (XP). Cada vez mais projetos de desenvolvimento estão adotando técnicas de XP (programação extrema), técnicas como:
- Move People Around: Rodízio de pessoas, onde duplas de programação são revezadas periodicamente, pensando na unificação e padronização do código;
- Metaphor: Usar metáforas nos projetos, a fim de facilitar a comunicação com a equipe, mudando nome de projetos, etapas, entre outras coisas;
- Continuous Integration: Integração Contínua, onde todos os módulos do software são integrados diversas vezes por dia com todos os testes unitários, o código não é aprovado até ter 100% de aprovação.
A metodologia de Extreme Programming ainda conta com outras diversas técnicas, entre elas, é claro, o pair programming, que será o foco do nosso conteúdo de hoje.
Porém, antes de mais nada, é importante ressaltar que nem todas as técnicas e metodologias ágeis são necessariamente aplicáveis para o seu negócio. Por isso, entenderemos se vale a pena implementar o Pair Programming na sua empresa.
O que é o pair programming?
De maneira resumida, a técnica de Pair Programming consiste em um time de dois desenvolvedores trabalhando na mesma máquina/código. Essas duas pessoas irão trabalhar juntas no design, testes e/ou no código em si.
Uma maneira muito prática de imaginar como funciona o pair programming, é pensar o processo de desenvolvimento como dirigir um carro por uma área desconhecida.
A dupla ficará revezando entre “piloto” e “navegador”. No qual o piloto será aquele à frente do teclado, digitando e fazendo a parte operacional. Bem como, a função do navegador é estar atento à progressão geral do código e notar qualquer tipo de erro que possa passar despercebido pelo piloto.
Dessa forma, a dinâmica gira em torno dos pares trocarem entre as funções de piloto e navegador ao longo do desenvolvimento do projeto, garantindo o dinamismo do processo. Por se tratar de uma técnica colaborativa, esse trabalho em equipe agiliza o processo de resolução de problemas que poderia ser mais difícil para apenas um programador.
Mas nem tudo é tão simples, essa técnica exige que haja uma boa comunicação entre a dupla, ou o processo pode ser prejudicado.
O tempo é fundamental
Outra fonte de atenção é o tempo, considerando que usando o pair programming o tempo de desenvolvimento de uma tarefa aumenta. Dessa forma, com dois desenvolvedores para uma única tarefa é preciso ter um maior controle do tempo para que o aumento da qualidade não afete prazos.
Além disso, é preciso garantir que os seus programadores estejam confortáveis com esse processo antes de adotá-lo.
O processo de trabalho em equipe, divisão do espaço de trabalho e o dinamismo dessa técnica envolvem o uso de soft skills e hard skills que algumas vezes podem não estar treinadas em um colaborador. Restando a escolha de treiná-las ou optar por outras estratégias de desenvolvimento.
Quais as vantagens?
Uma das grandes vantagens do uso dessa técnica é a liberação do uso do Extreme Programming (XP) nos seus projetos.
A programação em pares é em suma a base para o XP. Dessa maneira a técnica permite a aplicação dos demais métodos, tais como o Move People Around.
Fazer o rodízio de pessoas nas duplas aumenta a interação do time de desenvolvimento entre si, gerando o compartilhamento de conhecimento do projeto.
Dessa maneira, é possível “partilhar” a guarda do código, evitando que um único programador guarde para si uma parte única do projeto. Além disso, permite que todos os membros do time estejam “na mesma página” no projeto.
Porém, a técnica ainda pode ser utilizada sem necessariamente utilizar a metodologia XP. O uso da técnica por si só é benéfica e trazendo impactos como:
- Conhecimento somado: Novos desenvolvedores podem coletar experiência com sêniores, e aqueles que estão a mais tempo no projeto. Da mesma forma, os desenvolvedores mais antigos se atualizam com o conhecimento trazido pelos juniores.
- Maior colaboração da equipe: Com as constantes interações do time e eventuais rodízios, a equipe se torna mais unida e fica mais a par do que cada um está fazendo.
- Menos erros no código: Com uma pessoa focada apenas em monitorar o código do “piloto” o número de erros por falta de atenção podem diminuir, aumentando a qualidade do código.
Desafios do pair programming
Uma metodologia diferente traz consigo precauções que também não são comuns, e aqui esclareceremos algumas delas. Primeiramente, começaremos pela principal preocupação entre as pessoas que estão avaliando adotar essa técnica, a eficiência.
De fato, a preocupação com a eficiência é algo natural de se associar, uma vez que estou usando o dobro de colaboradores para desempenhar um trabalho que seria desempenhando por apenas um normalmente.
Porém, segundo a pesquisa da Raygun a queda de eficiência não é de 50%, mas de 15%. Entretanto, apesar da queda ser menor, ainda é uma queda, sendo preciso pesar os benefícios e desafios antes de aplicar no seu negócio.
Além disso, podemos citar alguns outros desafios pontuais como:
- Engajamento: É preciso garantir que ambos os desenvolvedores estejam engajados no projeto da mesma maneira, ou então pode ocorrer uma disparidade entre a dedicação na dupla, gerando conflitos.
- Gerenciamento de tempo: Uma vez que a prática se baseia na divisão igualitária de tempo entre a dupla, alguns problemas podem aparecer. Tais como: faltas, férias, atividades extras, trabalhos paralelos, entre outros. Todos devem estar mapeados e planejados.
- Individualidades: Algumas pessoas do time podem achar ruim a perda da “exclusividade” do conhecimento do código e do projeto, se sentindo vulneráveis. Assim, é importante conscientizá-las da segurança do seu trabalho e da importância de compartilhar o conhecimento.
O pair programming é a solução?
Depende. Entendo que essa não seja a resposta que você gostaria de ouvir, mas é preciso conhecer bem o seu negócio, sua equipe e suas condições antes de adotar posturas mais arrojadas.
Se aplicado da maneira certa, atento a todos os cuidados que citamos, o pair programming torna o desenvolvimento uma tarefa menos mecânica e mais ágil.
Porém, caso ela não esteja associada a algumas práticas da XP, ou ao acompanhamento dos gestores e RH, existe uma chance dessa aplicação se tornar um fracasso.
Por isso, da mesma forma que na aplicação de qualquer estratégia na sua empresa, é preciso muito planejamento prévio.
Ainda assim, existe mais de um tipo de estrutura para a técnica, sendo a mais comum a navegador/piloto. Além dela, temos:
Além de práticas como o code review, uma versão mais “light” do pair programming. Aqui, um desenvolvedor irá analisar rapidamente o código de outro ao fim de uma tarefa, buscando minimizar erros e melhorar a qualidade.
Quando usar o pair programming?
Como falamos no tópico anterior, é importante ressaltar que nem todas as tarefas irão se beneficiar do pair programming.
Projetos muito simples, tarefas com soluções já otimizadas ou que sejam mais mecânicas que criativas, acabam se tornando maçantes. Utilizar o pair programming nesses casos acaba por ser um desperdício de carga de trabalho.
Porém, em casos opostos, como projetos que possuem atividades complexas ou de difícil modelagem podem aproveitar bem a proposta dessa técnica. Além disso, caso o intuito seja usar a experiência de uma pessoa para refinar a de outra, o pair programming irá brilhar.
Considerações finais
Por fim, o uso do pair programming é algo que deve ser testado antes de ser aplicado deliberadamente.
Não são todos os negócios que irão se beneficiar dessa técnica, lembre-se: ela não é uma estratégia obrigatória, e não precisa ser aplicado a todas as tarefas da organização.
Além disso, é importante que os desenvolvedores, em especial os juniores, também tenham espaço para programar sozinhos. Assim, resolvendo os problemas por si e não dependendo sempre do seu par.
Caso tenha ficado com alguma dúvida, não deixe de entrar em contato conosco pelo telefone ou pelo site. Sugestões também são bem-vindas sempre.
Espero que o conteúdo tenha agregado bastante ao seu conhecimento, até o próximo!
Ilustrações: https://storyset.com/web Web illustrations by Storyset
Tags: Otimização de Processos
Postado por contato@logiquesistemas.com.br
Um pouco sobre o autor (a):