ti-enxame.com

Quando a programação de pares funciona? Quando evitá-lo?

Em vez de emparelhar programaticamente de maneira servil o tempo todo, usamos a programação de pares seletivamente em nossa equipe. Eu acho que funciona melhor nas seguintes circunstâncias:

  • Aprimorar novos membros da equipe em um projeto (em vez de deixá-los passar por documentação ou código por conta própria).
  • Ter pessoas juniores e seniores trabalhando juntas (ajuda a mostrar algumas das habilidades e truques dos desenvolvedores mais experientes, além de permitir que os cães mais velhos aprendam novos truques às vezes).
  • Quando alguém está tentando localizar um defeito, geralmente ajuda a emparelhar com um novo conjunto de olhos.

Quando usar o programa de par e por quê?

Quando evitar a programação em pares? Por quê?

55
Paddyslacker

Pesquisa compilada por Laurie Williams indica que a programação em pares funciona melhor em equipes industriais quando

  • Os pares trabalham na especificação, design e complexo tarefas de programação - experimentos indicam que nenhuma melhoria de qualidade é mostrada ao trabalhar em tarefas simples em um par, mas pode haver melhorias na velocidade. Observe também que a "programação" em pares geralmente inclui atividades diferentes da escrita de código.
  • Cada indivíduo em um emparelhamento tem aproximadamente o mesmo nível de especialização - enquanto a programação de pares é ótima para treinamento, os pares são mais envolvidos quando estão no mesmo nível.
  • As funções giram regularmente - a rotação regular ajuda a manter o copiloto atual envolvido, pois os indivíduos tendem a contribuir mais quando dirigem ou sentem que estão prestes a dirigir.
  • Os pares giram regularmente - as equipes demonstraram conforto em saber sobre as diferentes partes do sistema que estão construindo. A rotação de pares ajuda na transferência de conhecimento, o que reduz certos riscos no projeto. Em um ambiente acadêmico, os pares costumam ser atribuídos; no entanto, o setor geralmente é auto-atribuído durante os levantamentos. Nos dois casos, o par é mais eficaz quando os dois indivíduos estão dispostos a participar e vêem valor na atividade de emparelhamento.

Na minha experiência pessoal, descobri que minha equipe XP gasta cerca de 60% da nossa programação de pares de tempo de desenvolvimento em média. O restante do tempo é gasto desenvolvendo individualmente. Não é incomum emparelhe para criar um design inicial, trabalhe sozinho no design por algumas horas e depois volte a se juntar para finalizar partes difíceis ou difíceis do código.

Também descobri que a programação em pares é mais eficaz em blocos de aproximadamente 1,5 a 2,5 horas. Qualquer coisa muito menos tende a exigir muita sobrecarga para configurar, enquanto muito mais e os pares tendem a ficar irritadiços e cansados. Irritadiço e cansado significa que você não está se comunicando bem e pode estar deixando defeitos entrar no sistema.

47
Michael

A programação em pares funcionou para mim em muito, muito poucas situações.

Onde a programação em pares falha para mim

A história resumida é que a programação em pares não funciona para mim como a principal maneira de desenvolver software. Posso emparelhar o programa por um dia ou talvez uma semana, principalmente se estivermos focados em um problema específico. Mas depois disso? Terminei. Torrada. Não quero ver ninguém, conversar com ninguém, e preciso de pelo menos alguns dias em uma caverna até estar apto para a companhia humana novamente.

É uma história triste, mas o engraçado é que agora estou muito mais feliz com o final. Estou felizmente empregado em um contrato em que trabalho em casa ou em uma cafeteria e fiz novos amigos e explorei mais de São Francisco do que jamais pensei ser possível. Eu tenho uma bicicleta e um laptop e, desde que cumpra meus prazos e verifique regularmente o código, meu tempo será meu.

Vou listar os grandes problemas que tenho com a programação de pares com antecedência e fornecer detalhes e anedotas mais tarde.

  1. Dividir o foco.
  2. Sem experimentação.
  3. Sem notas altas.
  4. Sem orgulho na propriedade.
  5. Nenhuma escapatória...

... perguntei aos meus colegas de trabalho se eles viam o que eu via, se faltava alguma coisa, qualquer coisa - não vi como isso poderia funcionar, como as pessoas poderiam continuar fazendo isso. Eles disseram que eu estava indo bem, que só levou tempo para me instalar e me ajustar. Que foi difícil para todos no começo.

Eventualmente, eu me afastei. Entre as dores de cabeça ofuscantes, a insônia e a necessidade não atendida de escrever código, parei de responder à entrada. Eu podia olhar para uma tela e não ver nada. Alguém poderia falar comigo inesperadamente e eu não os ouviria. Eu estava cumprindo os requisitos rotineiros do meu trabalho, mas não estava lá. Eu usei tudo o que tinha acabado de aparecer para o dia. Comecei a verificar meu iPhone quando meu outro parceiro estava digitando.

Finalmente - apenas três meses depois, e pela primeira vez na história -, fui demitido por não fazer parte de uma equipe ao programar em pares.

Não sozinho

Escrevi isso não apenas para entendê-lo, mas também para poder falar sobre isso. Presume-se que a programação em pares funcione para a maioria das pessoas e é muito mais fácil e mais rápida do que a programação em solo seria. Pode ou não ser esse o caso, mas, como prática de longo prazo, a programação de pares não funciona para mim. Há muitas outras pessoas que a programação de pares também não funciona. Nós também importamos ...

34
Will Sargent

Minha equipe faz programação em pares desde o início, muito antes de eu trabalhar lá, como parte de uma loja no estilo de "programação extrema". A programação em pares é o estado padrão ; as pessoas só ficam solteiras se houver um número ímpar, ou ocasionalmente para investigações, especialmente aquelas que envolvem mexer com equipamentos hostis e tentar fazê-lo funcionar.

"Junior/senior" não é o único caminho a percorrer. "Intermediário/Júnior" é útil; ajuda o sujeito de nível intermediário a sintetizar o conhecimento obtido, forçando-o a comunicá-lo a outra pessoa. Desafios "Intermediário/Intermediário": duas pessoas trabalham juntas para compartilhar seus conhecimentos, se comunicar e trabalhar como parte de uma equipe. E mesmo se você tiver dois caras realmente seniores, é provável que eles tenham áreas de especialização diferentes e possam apresentar abordagens diferentes. Os aspectos de compartilhamento de conhecimento não terminam quando alguém está vagamente "atualizado" em um projeto. Em vez disso, a programação em pares é o epítome de um organização de aprendizagem . Novas técnicas e melhores práticas se espalham rapidamente.

A programação em pares também ajuda a manter a qualidade do código (menos defeitos) e a sanidade do código (ele não apenas faz o que pretende, mas faz o que deveria ... idealmente sem descer por uma toca de coelho de várias semanas fazendo a coisa errada ou duas coisas certas diferentes que entrarão em conflito descontroladamente). Ajuda os programadores a manter seu foco: aqui no coração do Vale do Silício, casa das 80 horas semanais de trabalho, podemos trabalhar apenas 40 horas por semana, porque estamos fazendo codificação intensa por oito horas por dia, mudando as coisas fora um com o outro. (Além disso, se você demorasse mais tempo a programar em pares, provavelmente desistiria. Ou pelo menos se esgotaria.) Isso é ótimo para o equilíbrio entre trabalho e vida pessoal e também ajuda a organização quando é importante ter uma resposta rápida (resposta de baixa latência, em particular).

Não é tudo, completamente, 100% de pêssegos e creme; Acho que a programação em pares é ocasionalmente um obstáculo para a minha aplicação de processos cerebrais intuitivos que são úteis em certos problemas. Mais recentemente, em uma tarefa de vazamento de memória, passei algum tempo com e sem pares; sem um, me senti mais livre para mexer e experimentar experimentos sem realmente saber exatamente como explicar o que estava fazendo a qualquer momento. Há também algumas vantagens em trabalhar com singleton, sendo capaz de sair pela tangente e fazer certas refatorações selvagens (avaliadas na metodologia XP metodologia) por um capricho.

Mas, ao todo, os benefícios superam em muito os custos, e o emparelhamento funcionou espetacularmente para nós: desde o estágio inicial até a aquisição por uma empresa maior e nossa integração subseqüente. (Falando nisso, a programação em pares nos ajudou a manter uma continuidade da cultura através da expansão e apesar de um pouco de rotatividade).

(Desenvolvemos um dispositivo de software em Perl, preço de tabela entre US $ 4.000 e US $ 40.000.

10
user2348

Nunca trabalhei em uma configuração de "Programação em pares" e, no entanto, posso afirmar que fiz parte das três circunstâncias listadas. O cenário que você menciona parece mais "programação regular", com fases de ajuda/treinamento lançadas. Não fizemos tudo isso antes da criação da "programação em pares"? Programação em pares, presumo que exigiria uma abordagem mais comprometida, onde o processo de compartilhamento dentro de uma equipe não pare no minuto em que você enfrentar a tarefa ou o problema imediato em questão. Mas então é isso que eu "penso" e não o que "sei".

Pessoalmente para programação em pares Eu gostaria de trabalhar em uma equipe onde tenho a chance de aprender e compartilhar meus conhecimentos. Uma equipe desequilibrada, na qual todo mundo com quem trabalha está quilômetros à sua frente, ou então muito abaixo do par, pode ficar desinteressante rapidamente. Além disso, eu teria medo de trabalhar com pessoas que são definidas em suas crenças e difíceis de convencer.

4
Preets

Temos experimentado a programação de pares em nossa equipe nos últimos meses. Eu sinto que é bastante útil quando você está trabalhando em algo novo (nova tecnologia, novo recurso etc.), pois você pode rapidamente trocar idéias com outra pessoa da equipe e tê-las validadas/invalidadas. Além disso, uma revisão por pares ajuda a manter os bugs afastados.

Outro colega de equipe tentou usar a programação em pares com um teste para executar o ATDD e eles ficaram bastante satisfeitos com os resultados (de acordo com seus cálculos, um aumento no custo de desenvolvimento de 20% levou a uma redução de cerca de 50% no tempo de teste)

2
Amit Wadhwa

Boa noite

muitas vezes debatemos sobre práticas de programação extrema e o programação em pares. No tempo, somos capazes de entender que a programação é uma atividade individual porque os programadores precisavam de concentração e isolamento. Os programadores da época estavam no zone, um estado mental em que podiam se concentrar com eficiência no código e tomar decisões agradáveis ​​e criativas.

A programação em pares também parece arriscada se você presumir que um programador interrompe o outro. Por outro lado, é mais difícil interromper dois programadores trabalhando juntos. Na programação Solo, por exemplo, será mais fácil ser interrompido, por isso é quase impossível para um programador solo permanecer na "zona".

A qualidade do código é outra quando o prazo final está chegando. As pessoas estarão sempre com pressa, sejam programadores em pares ou programadores individuais: eles não aplicarão certas práticas recomendadas e apenas esquecerão os testes de unidade.

Eu ficaria com a programação em pares. Porque quando se trata de riscos, quando um programador se foi, você sempre terá outro cara para documentar o processo e ensinar a todos os outros como ele funciona.

1
Junior M

Trabalhar em qualquer coisa de complexidade não trivial tende a ser um bom candidato à programação em pares, para que várias pessoas entendam o código, em vez de apenas um desenvolvedor conhecer uma parte da base de código. Outro caso é quando alguém quer transferir algumas habilidades. Um exemplo aqui pode ser ter alguém realmente bom em testes de unidade emparelhado com alguém que não é tão familiarizado com o conceito e, portanto, ajuda a adquirir um hábito inicial em algo.

Quanto a onde evitar a programação em pares, resmunge as tarefas de trabalho simples, onde seria melhor dividir o trabalho em dois grupos e deixar que cada desenvolvedor faça parte do trabalho separadamente para concluir o trabalho. Algumas tarefas podem exigir bastante digitação, mas não são tão grandes que vale a pena gastar algumas horas tentando encontrar uma maneira melhor de fazê-lo, como seria possível se cada desenvolvedor adotasse uma abordagem de força bruta por alguns minutos. horas.

1
JB King