Você já ouviu falar sobre pair programming? Caso não saiba, essa é uma prática ligada às metodologias ágeis de desenvolvimento de software, que trouxe importantes conceitos para melhorar o trabalho em equipe, garantindo eficiência e agilidade.
Isso porque essa técnica nos diz que todo código de um projeto deve ser elaborado em duplas, o que pode ser um desafio para muitas pessoas. Afinal, é preciso ter boas habilidades sociais e de comunicação para manter a harmonia no trabalho.
No entanto, ao aplicar essa técnica é possível notar um benefício claro em relação à produtividade das equipes. Além disso, ela também diminui as chances de retrabalho, visto que a quantidade de erros inseridos no código diminui significativamente e o nível de atenção à tarefa aumenta.
Quer entender a razão para o pair programming ser tão importante? Então, veja o que você vai descobrir neste artigo:
- O que é e como funciona o pair programming?
- Quais são os 3 estilos de pair programming?
- Quais são os 3 tipos de pares do pair programming?
- Como funciona o pair programming remoto?
- Como aplicar o pair programming? Exemplo de modelo ideal!
- Por que é importante? 5 vantagens da prática pair programming!
- Quais as dificuldades de implementar o pair programming?
- 8 dicas para você implementar o pair programming!
- Quando usar e quando não usar o pair programming?
Boa leitura!
O que é e como funciona o pair programming?
O pair programming é uma prática que surgiu com a metodologia XP (Extreme Programming) e que tem o objetivo de melhorar a qualidade dos códigos criados, sem comprometer a produtividade da equipe. Em tradução literal, pair programming significa programação em par e essa é a ideia principal da técnica: duas pessoas trabalhando juntas no mesmo código em um único computador.
A técnica funciona de forma simples, pois ela estabelece dois papéis que são revezados durante a codificação: o de piloto e o de navegador. Assim, a pessoa que assume o papel de piloto tem a função de escrever o código.
Enquanto isso, quem está no papel de navegador faz a inspeção do trabalho, observando se as boas práticas de programação estão sendo aplicadas, se as regras de negócio estão sendo seguidas, buscando possíveis erros no projeto e dando sugestões de melhoria.
Um fator interessante dessa prática é que é comum alocar pessoas com níveis de experiência em desenvolvimento diferentes para trabalhar juntas. Dessa forma, com o tempo os conhecimentos técnicos são nivelados.
Quais são os 3 estilos de pair programming?
Como já sabemos o pair programming consiste no trabalho em par dentro de um único código, mas com o grande crescimento da área, muitas outros estilos de trabalhar em par foram surgindo. Por isso, vamos explicar alguns dos estilos de pair programming mais comuns:
1. Estilo Driver e Navegador
O estilo de pair programming Driver e Navegador é formado por duas pessoas desenvolvedoras no qual uma é considerada a motorista e a outra, navegadora que vão revezando entre elas e trocando de papéis durante o desenvolvimento do software.
Imaginando um avião onde temos pessoas na função de piloto(a) e copiloto(a), quem pilota é responsável por pilotar o avião e quem atua como copiloto(a) fica responsável por ajudar quem pilota e acompanhar o percurso. Assim funciona o estilo Driver e Navegador.
A pessoa driver fica no computador com o teclado desenvolvendo pequenas partes do código e explicando para a pessoa navegador o que está sendo feito naquela parte do software.
Com um papel diferente de driver, a pessoa navegadora fica responsável por observar e entender o que a pessoa driver está fazendo, pensando em melhorias e verificando se o código que está sendo desenvolvido pode acabar gerando bugs futuros.
2. Estilo Não Estruturado
O estilo não estruturado é o que as pessoas mais associam a pair programming: duas pessoas programando e se ajudando simultaneamente. Esse estilo não apresenta regra ou uma ordem. Isso quer dizer que o resultado deve ser mostrado, porém com uma exigência diferente.
Se você gosta de programar com outra pessoa apenas observando o que está sendo feito, o estilo de pair programming não estruturado não é uma boa opção, já que esse estilo é bastante utilizado para que as pessoas programadoras tenham mais liberdade em trocar ideias sobre o que está sendo feito, além de terem mais liberdade para definir o ritmo de desenvolvimento.
3. Estilo Ping-pong
O estilo de programação em par ping-pong é o mais diferentes entre eles, geralmente utilizado para desenvolver tarefas que são orientadas a testes — também conhecido como TDD (Test Driven Development).
Esse estilo tem como objetivo seguir um ciclo bastante simples sempre alternando entre eles. Como o próprio nome já diz, “ping-pong” pode ser considerado “pulando de uma pessoa desenvolvedora para outra” isso quer dizer que uma pessoa desenvolvedora desenvolve o teste com o objetivo de evidenciar as falhas e a outra pessoa desenvolvedora implementa o código para que o teste que falhou a primeira vez passe.
Isso pode parecer um pouco confuso de início, mas o principal objetivo do TDD que significa desenvolvimento guiado por testes é seguir um ciclo entre falhas e sucesso até que as pessoas desenvolvedoras consigam atingir o seu objetivo final garantindo então uma qualidade melhor do software por ter sido desenvolvido com base em teste.
Quais são os 3 tipos de pares do pair programming?
O pair programming é simples, porém dentro de uma empresa diversas situações podem ser apresentadas e nem sempre uma empresa vai ter pessoas colaboradoras com o nível de senioridade necessário para fazer pair programming, ou até mesmo pessoas que estão dispostas a compartilhar o seu conhecimento.
Por conta disso o pair programming passou a ser dividido em três tipos, sendo eles:
1. Par com dois especialistas
É considerado um par de pessoas especialistas quando se encontra duas pessoas programadoras com um nível de senioridade avançado, consequentemente isso quer dizer que esse par está pronto para pegar uma maior responsabilidade em relação ao nível de complexidade de uma tarefa.
Dentro de um projeto as demandas que são mais difíceis e podem levar maior tempo são direcionadas para os pares de especialistas que apresentam uma maior habilidade e autonomia para o desenvolvimento da demanda.
2. Par com dois novatos
O pair programming com duas pessoas desenvolvedoras que ainda não apresenta tanto conhecimento pode ser considerado um processo um pouco mais lento já que é necessário buscar conhecimento para que a demanda possa ser desenvolvida.
Nesse tipo de cenário é sempre importante que um líder ou gestor possa acompanhar o processo de desenvolvimento mais de perto já que alguns impedimentos podem acabar surgindo no meio do caminho.
3. Par com um especialista e um novato
O pair programming com uma pessoa especialista e uma pessoa que está iniciando agora é um dos melhores cenários, já que nesse processo a pessoa desenvolvedora com mais conhecimento tem como objetivo auxiliar a pessoa novata trazendo a ela mais conhecimento e ganho de habilidades.
Em uma empresa onde existem diversos níveis de senioridade, esse tipo de pair programming é o mais utilizado por conta do ganho mútuo de conhecimento.
Como funciona o pair programming remoto?
O pair programming remoto passou a ser utilizado com uma maior frequência com a intensificação da digitalização nas empresas, mas a dúvida é: se a programação é em par, como fazer isso de forma remota?
Pois bem, a programação em par, tanto presencial quanto remota, não tem grandes diferenças já que as pessoas desenvolvedoras estão juntas da mesma forma, porém em ambientes diferentes.
Para o pair programming remoto algumas alterações devem ser feitas, por exemplo o modo de se comunicar. No pair programming remoto a dupla define uma ferramenta para se comunicar, como o Google Meet ou o Zoom. Nela, é realizado o compartilhamento de tela entre a dupla e definido o tipo de pair programming que será utilizado para o desenvolvimento da tarefa.
A comunicação deve ser muito bem feita entre a dupla, já que se houver falhas, o surgimento de dúvidas se agrava, interferindo na produtividade e na qualidade de entrega.
Como aplicar o pair programming? Exemplo de modelo ideal!
Antes de um modelo de pair programming ser aplicado é importante entender se o time já roda boas práticas ágeis. Outro ponto de atenção é o estilo da equipe: antes de tudo, entenda como sua equipe gosta de trabalhar e se as pessoas se comunicam bem. Isso ajudará em toda a transição dessa aplicação.
Após fazer essa análise, siga este passo a passo para aplicar o pair programming dentro da sua equipe:
1. Ajuste o ambiente
O ambiente pode acabar interferindo bastante tanto no âmbito profissional quanto no âmbito pessoal. No pair programming isso não é diferente. Por isso, ter uma mesa com espaço para duas pessoas sentarem e uma boa máquina já é um dos principais pontos para esse estilo de programação ser aplicado.
2. Converse sobre o objetivo do pair programming com a equipe
Muitas vezes dentro das empresas diversas ações são feitas porém não acabam sendo compartilhadas com as pessoas colaboradoras. Isso é um grande problema, pois dessa forma as pessoas não sabem como seu trabalho impactará na operação. Então, sempre busque deixar claro para o objetivo do pair programming e porquê a empresa está adotando esse estilo de trabalho.
3. Monte a equipe como quem vai escalar o time da seleção
A parte de estruturar as duplas é considerada uma das principais, já que é a partir delas que os resultados vão ser gerados. Nessa etapa é necessário fazer uma boa escolha levando em consideração o nível de senioridade das pessoas da equipe, já que um dos objetivos pode ser a troca de conhecimento e o ganho de experiência. O importante é buscar a melhor estratégia para o máximo aproveitamento dos recursos.
4. Defina o tipo de pair programming
O pair programming apresenta alguns tipos, que você pode rever nos tópicos anteriores. Dependendo da forma que a dupla foi montada, o tipo de pair programming pode fazer grande diferençam já que isso pode interferir diretamente no desenvolvimento das demandas. Além disso, é importante deixar claro para os times que o rodízio dos pares deve ser feito para que ambos possam colocar a mão no código e entender o que está sendo feito.
5. Trabalhe a cultura de feedback e compartilhamento de conhecimentos
O pair programming foi criado com o objetivo de chegar em soluções que são pensadas em conjunto. Isso quer dizer que estimular a pessoa desenvolvedora a sempre buscar ajuda ao surgir dúvidas é de grande importância. Também é importante que elas sempre estejam abertas para receber críticas construtivas e realizar discussões sobre o assunto tratado no momento.
10 dicas para você implementar o pair programming!
Agora que você já sabe o que é e quais as vantagens do pair programming, deve estar se perguntando sobre como colocá-la em prática, certo? Abaixo, separamos algumas dicas que vão ajudar você nessa questão. Veja!
1. Planeje o seu dia
Para todas as atividades que precisam ser feitas no dia a dia, um bom planejamento pode acabar fazendo toda a diferença, principalmente quando se trata daquele dia no qual as chances de se perder nas tarefas é grande.
No pair programming isso não é diferente principalmente pelo fato de que essa atividade envolve mais de uma pessoa. Dessa forma tente listar tudo o que precisa ser feito por ordem de prioridade para que no final do dia seja possível concluir ou fazer a maior parte de tudo que precisa ser feito se acabar se perdendo no meio do caminho.
2. Aprenda a gerenciar o tempo
Ao pegar uma tarefa para fazer, muitas vezes é normal que alguns impedimentos possam acabar surgindo além de dúvidas, sendo assim aprender a gerenciar esse tempo pode fazer grande diferença no processo do pair programming.
Geralmente essa técnica de programação em par é aplicada para que ambas as pessoas desenvolvedoras possam programar juntas conversando sobre o que está sendo feito, então não tente gastar tanto tempo se você acabar travando em um ponto, peça ajuda a pessoa desenvolvedora que está ao seu lado!
Com a primeira dica sobre o planejamento do dia, busque também colocar ao lado o quanto de tempo você está disposto em ficar naquela função que está fazendo isso ajudará você a fazer uma maior quantidade de tarefas.
3. Tenha uma estrutura propícia
Além de tudo que já falamos, para que a prática seja viável e gere bons resultados, a estrutura utilizada pela dupla merece uma atenção especial. O motivo é simples: é preciso garantir o conforto do par para que o trabalho tenha um bom rendimento.
Nesse caso, deve-se pensar em equipamentos adequados para a prática, como cadeiras ergométricas e mesas que comportem bem as ferramentas e possam ser usadas por mais de uma pessoa ao mesmo tempo. Outro ponto de atenção é a tela do monitor, que deve ser grande o suficiente para que a dupla tenha uma boa visão do código.
4. Entenda como os seus colegas trabalham
Trabalhar em par é um exercício diário de aprendizado, mas não estamos falando de questões técnicas aqui. É preciso entender que cada pessoa tem sua forma de lidar com suas tarefas. Algumas gostam de analisar o código antes de iniciar o trabalho, outras são mais visuais e preferem fazer esquemas ou diagramas antes de mexer no código.
Essas diferenças precisam ser respeitadas para que a dupla consiga encontrar um ponto de equilíbrio que seja confortável para ambos.
5. Troque de pares frequentemente
A troca de pares deve ocorrer com frequência no pair programming, mas cada time tem liberdade para definir quando essa troca será feita. Uma possibilidade é realizar a troca ao fim de cada sprint ou definir períodos de tempo para trocar as duplas, como dias ou semanas.
Isso é necessário para melhorar o entrosamento da equipe, já que cada pessoa tem seu jeito de trabalhar, sua personalidade e a melhor forma de entender como lidar com essas diferenças é trabalhando em conjunto.
6. Comunique-se com cordialidade
Manter uma relação cordial com seus colegas, é essencial para a prática do pair programming. Obviamente isso requer boas habilidades de comunicação, além do exercício da empatia. Afinal, é muito chato quando sentimos que há desvalorização e desrespeito em relação ao nosso trabalho.
Para evitar esse tipo de desconforto, é importante manter uma comunicação amigável. Ou seja, caso você precise apontar um erro no código do seu par, por exemplo, pense em como gostaria de receber essa informação caso fosse ao contrário. É importante mostrar que valoriza o esforço de cada colega para apontar uma falha sem gerar constrangimentos.
7. Explique para o time o objetivo do pair programming
Para que a equipe consiga tirar o máximo proveito dessa prática, é fundamental que o time esteja ciente dos objetivos de trabalhar em par. É necessário explicar, por exemplo, o potencial que o pair programming tem para melhorar a qualidade dos códigos criados sem aumentar o tempo de entrega do software.
Também é interessante que a equipe entenda que a prática também traz benefícios individuais, como a troca de conhecimento constante. Dessa forma, o time estará mais propenso a seguir a prática com rigor e vai conseguir explorar cada benefício que ela proporciona.
8. Respeite o momento em que a outra pessoa pilota
Outro ponto importante para que o pair programming gere resultados positivos é respeitar os papéis que a prática define. Ou seja, no momento em que a sua dupla está no “piloto”, você deve se restringir à função de supervisionar o código.
É natural que durante o processo você sinta vontade de “botar a mão na massa” e queira fazer os códigos do seu jeito, mas lembre-se: o seu papel nessa hora é revisar o trabalho do seu par pensando no que é melhor para o projeto final. Por isso, as intervenções devem ser feitas apenas quando elas forem realmente necessárias e sempre de forma respeitosa.
9. Mantenha a mente aberta para aprender algo novo
Como pessoas desenvolvedoras, precisamos aceitar que nem sempre a maneira como estamos acostumados a codificar é a melhor forma de resolver um problema. Afinal, com o tempo criamos hábitos e temos a tendência de repetir alguns padrões de codificação. Ou seja, caímos em uma zona de conforto.
É isso que faz o trabalho em dupla ser tão rico e importante. Por meio dele, podemos conhecer novas tecnologias e ferramentas, aprender a usar diferentes funções, explorar outras maneiras para criar um código. Isso tudo, além de beneficiar o projeto em que estamos trabalhando, também nos enriquece profissionalmente.
10. Trabalhe junto do seu par, ajude e aceite ajuda!
O pair programming nos diz que as soluções devem ser pensadas em conjunto sempre visando o que é melhor para o projeto. Por isso, é importante que a dupla esteja aberta para discutir as alternativas para a solução de um problema. Em palavras simples, o que queremos dizer é: priorize o trabalho em equipe.
Às vezes, é comum sentir vergonha em admitir que não sabemos como resolver um bug no projeto, por exemplo. Afinal, queremos mostrar serviço e temos medo de falhar diante de um colega de equipe.
Nessas horas, lembre-se de que o seu par está ali para apoiar você e vice-versa. Então, se sentir dificuldade para desenvolver um trecho do código, não se acanhe em pedir ajuda. Da mesma forma, caso perceba que sua dupla está “travada” com algum problema, ofereça uma solução.
Por que é importante? 5 vantagens da prática pair programming!
Até aqui já explicamos o que é o pair programming, mas ainda fica a dúvida: essa técnica é realmente vantajosa? Sim, e o motivo nós vamos explicar logo abaixo. Confira!
1. Melhora a disciplina do time
O processo de codificação muitas vezes é cansativo e isso pode gerar distrações durante o desenvolvimento. Quando codificamos sozinhos, é muito fácil nos rendermos à tentação de verificar e-mails, atender telefonemas, checar as redes sociais ou fazer qualquer outra coisa que tire nossa atenção da tarefa.
Mas quando o código é desenvolvido em dupla, há um compromisso maior em manter o foco no desenvolvimento. Assim, cria-se um fluxo contínuo de produção mais resistente a interrupções cotidianas.
2. Favorece o compartilhamento do conhecimento
Como explicamos mais acima, os papéis de navegador e piloto no pair programming são invertidos sempre que um ciclo é finalizado. Isso permite uma boa troca de conhecimentos entre a dupla e favorece o nivelamento técnico das habilidades do time.
Mas essa não é a única vantagem, pois, além do revezamento de papéis, também é possível fazer a troca de pares. Dessa forma, o código é compartilhado pela equipe inteira, fazendo com que todos tenham conhecimento sobre as diferentes partes do software. No futuro, isso facilita a manutenção do programa e reduz o impacto negativo caso algum integrante saia do time.
3. Melhora a qualidade do código
Um dos maiores problemas da programação é a dificuldade de criar códigos limpos e sem erros em pouco tempo. Com o pair programming, esse fator é superado, pois tudo que é feito é revisado e aprimorado constantemente, já que com duas pessoas pensando na mesma solução é mais fácil identificar trechos que não são claros ou eficientes.
Além disso, quando programamos sozinhos, cedo ou tarde cedemos à tentação de apelar para as “gambiarras” quando nos deparamos com um problema que não conseguimos resolver. Já em dupla, há um rigor maior em seguir os padrões do projeto e em buscar a melhor solução para o problema e não a mais fácil.
4. Gera mais união na equipe
Com todos participando do desenvolvimento de diferentes partes do código, o espírito coletivo é fortalecido. Afinal, os erros e acertos passam a ser responsabilidade do time e não de uma só pessoa.
Junto a isso também temos o fortalecimento dos laços, além da troca de experiências e conhecimento, que fortalece ainda mais a união. A longo prazo, uma equipe com mais sinergia no trabalho tem maiores chances de gerar resultados positivos.
5. Mais velocidade na codificação
O aumento da velocidade no desenvolvimento do software é um dos benefícios mais notáveis do pair programming e isso está ligado a alguns fatores que listamos acima. Um deles é o maior nível de atenção da dupla, que faz com que as soluções sejam entregues mais rapidamente.
Outro ponto é a revisão instantânea do código que é feita por quem está no papel de navegador. Com ela há uma menor inserção de erros no programa, isso reduz a necessidade de refatoração do código devido a bugs ou à baixa qualidade da codificação.
Quais as dificuldades de implementar o pair programming?
Apesar das vantagens claras que o pair programming oferece, ainda existem dificuldades que precisam ser superadas para que a prática funcione. Algumas delas são:
- aumento no custo do projeto: à primeira vista, alocar duas pessoas para trabalhar juntas parece um desperdício de recursos, já que elas serão pagas para realizar a mesma tarefa;
- problemas de comunicação: trabalhar em par requer habilidades sociais que nem todos têm, o que pode gerar atritos dentro do time e dificultar o trabalho;
- resistência do time em adotar a prática: dentro de cada equipe há pessoas com personalidades totalmente diferentes e nem todas gostam de trabalhar em conjunto, seja por terem preferência pela solitude ou simplesmente por não gostarem de compartilhar conhecimento;
- dificuldade para manter a prática a longo prazo: ao longo do tempo, é comum ocorrerem imprevistos, como faltas e trabalhos individuais, que quebram o ciclo do pair programming.
Quando usar e quando não usar o pair programming?
Dentro de uma empresa ou projeto, entender o que precisa ser feito em relação a demandas é de grande importância, além disso é após essa análise que pode surgir a resposta se o trabalho deve usar o pair programming ou não.
Ainda assim existem muitas empresas que optam pelo trabalho individual e, só após a finalização do código, realizar o code review da tarefa que foi desenvolvida. Mas isso pode acabar variando de caso para caso, já que demandas simples como por exemplo trocar um texto, não existe a necessidade de duas pessoas programadoras para realizar a tarefa.
De modo geral, o pair programming deve ser aplicado para:
Estimular o compartilhamento de conhecimento
Se a empresa busca deixar seus colaboradores todos com a mesma linha de conhecimento, o pair programming é uma ótima opção já que ele pode ser utilizado principalmente em cenários onde se encontra uma pessoa programadora com mais experiência que outra.
Manutenção no código
Muitas vezes um código que não é bem estruturado pode acabar gerando grandes confusões futuras, dessa forma com um parceiro ao lado realizando a correção do problema que está sendo gerado pode trazer bons resultados.
Correção de código
Grande parte das empresas ainda utilizam o método de code review, ou seja o código desenvolvido só vai ser analisado por outra pessoa desenvolvedora assim que ele for realmente finalizado, quando ocorre o pair programming as correções já podem serem feitas de forma instantânea garantindo então que não ocorra o retrabalho e a entrega é feita com qualidade.
Velocidade da entrega
Com uma boa organização as tarefas tendem a ser entregues com maior velocidade por conta de se tratar de duas pessoas desenvolvedoras trabalhando na mesma tarefa
Maturidade de projeto
No pair programming a troca de ideias e opiniões é de grande importância, principalmente no processo de desenvolvimento, além disso com uma pessoa profissional com mais experiência ao lado, a chance da pessoa programadora com menos experiência se desenvolver é grande com o ganho de diversas habilidades.
Agora que já entendemos em que situações o pair programming deve ser aplicado, infelizmente ele não é totalmente bom, ainda existem algumas situações que o pair programming não deve ser aplicado, sendo elas:
Níveis de senioridade
Dentro de empresa de software é normal que as pessoas desenvolvedoras sejam classificados entre júnior, pleno e senhor de acordo como nível de conhecimento, dessa forma se a empresa apresenta apenas pessoas desenvolvedoras junior o pair programming precisa ser observado ou não será uma boa opção já que um dos objetivos dele é o compartilhamento de conhecimento.
Complexidade de tarefas
Dentro de uma sprint é normal que existam diversas tarefas com diferentes níveis de complexidade, sendo assim se existir um painel apenas com tarefas simples, não existe a necessidade de trabalhar com pair programming dentro da empresa.
Trabalho individual
Se dentro da empresa muitas das pessoas desenvolvedoras já se encontram trabalhando de forma individual, realizar essa mudança bruscamente para o pair programming pode ser arriscado, sendo assim o cuidado com isso é necessário.
Conclusão
Como foi possível perceber, o pair programing é uma técnica muito interessante, que, apesar de apresentar algumas dificuldades de implantação, gera benefícios significativos para as equipes que a utilizam. Então, se você nunca experimentou essa prática, recomendamos que faça uma tentativa. Afinal, novas experiências são sempre positivas e podem ser um grande diferencial para o seu currículo!
E aí, conseguimos esclarecer suas dúvidas sobre pair programming? Então, para aprofundar ainda mais seu conhecimento, confira nosso próximo artigo e saiba o que é e como aplicar a Extreme Programming!