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 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ê?
agile
pair-programming
Paddyslacker
fonte
fonte
Respostas:
A pesquisa compilada por Laurie Williams indica que a programação em pares funciona melhor em equipes industriais quando
Na minha experiência pessoal, descobri que minha equipe do XP gasta cerca de 60% da nossa programação de pares de tempo de desenvolvimento, em média. O restante do tempo é gasto no desenvolvimento individual. Não é incomum emparelhar para criar um design inicial, trabalhar sozinho no design por algumas horas e depois voltar a reunir-se para concluir 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.
fonte
A programação em pares funcionou para mim em muito, muito poucas situações.
Onde a programação em pares falha para mim
fonte
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 uma organização que aprende . 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 diminuir o desempenho de várias semanas. buraco 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 a programar em pares, provavelmente sairia. Ou pelo menos se esgotaria.) Isso é ótimo para o equilíbrio entre trabalho e vida pessoal e também ajuda a sua 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, poder sair pela tangente e fazer certas refatorações selvagens (avaliadas na metodologia XP) por capricho.
Mas, ao todo, os benefícios superam os custos, e o emparelhamento funcionou espetacularmente para nós: desde o estágio de inicialização 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.
fonte
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 em que todos com quem trabalha estão quilômetros à sua frente ou muito abaixo do par podem ficar desinteressantes rapidamente. Além disso, eu teria medo de trabalhar com pessoas que são definidas em suas crenças e difíceis de convencer.
fonte
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 validá-las / invalidar. 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)
fonte
Boa noite
muitas vezes debatemos sobre práticas de programação extrema e a 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 na zona , 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 ser 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.
fonte
Trabalhar em qualquer coisa de complexidade não trivial tende a ser um bom candidato para a 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.
fonte