Troca de pares: Quais são os prós e os contras?

15

A idéia geral adotada pela maioria dos teóricos do Agile / XP parece ser que os pares devem ser trocados regularmente. Por exemplo, cada programador deve trocar pares uma vez por dia; metade das pessoas trocam no início do dia, metade das pessoas trocam após o almoço: devido a fatores externos, como reuniões, feriados e similares, a maioria das pessoas tende a mudar seus horários de troca uma ou duas vezes por semana, para que as configurações dos pares sejam distribuídas bastante uniforme em toda a equipe.

Uma lógica por trás da troca frequente é que o conhecimento é distribuído entre a equipe de maneira rápida e uniforme, em vez de se concentrar habilidades específicas e conhecimentos em indivíduos específicos - o que implica que o trabalho pode continuar sem problemas se as pessoas estiverem fora ou deixarem a empresa. Outra justificativa, que é uma espécie de corolário do próprio dogma que envolve a programação de pares, é que toda vez que alguém troca com você, você recebe uma nova revisão de código com um novo par de olhos, para que isso só melhore a qualidade do código.

Ambas as afirmações parecem razoáveis; do ponto de vista do gerenciamento, parece que você obtém um aumento tanto na estabilidade quanto na qualidade, e, como essa troca frequente, é praticamente uma teoria padrão na maioria dos livros do Agile / XP que eu observei.

Então, quando realmente colocado em prática, o que as pessoas realmente pensam sobre a troca de pares de

  • O ponto de vista de um programador?
  • O ponto de vista de um gerente?

E

  • O que deve determinar quando alguém muda de / para um par?

fonte
É a mesma coisa que "Programação em pares?"
21811 Robert Harvey
@ Robert Harvey - Bem, é um aspecto da programação em pares. Depois que uma equipe decide que vai programar em pares (durante uma parte do dia útil), eles precisam decidir como organizar os programadores em pares, ou seja, quando um programador deve deixar um par (outro deve se juntar ao mesmo tempo) ) Isso é "troca de pares".
+1 para a ótima pergunta. Infelizmente, acho que já é difícil encontrar uma loja que faça o emparelhamento regularmente, e muito menos ter dados sobre a troca de pares. Espero estar errado sobre isso e você obter algumas boas respostas, estou muito interessado em ouvir algumas.
Jesse McCulloch
2
Eu pessoalmente consideraria a troca de pares muito perturbadora. Tentar lidar com tantas personalidades e níveis de habilidade diferentes em locais tão próximos produziria muita dissonância cognitiva.
22411 Robert Harvey
@ Jesse McCulloch - Eu trabalho em um local que apenas emparelha programas e swaps da mesma maneira que os livros dizem que uma equipe deveria. Eu também trabalhei em um ambiente solo puro e, portanto, tenho uma perspectiva bastante boa sobre o contraste. No entanto, gostaria de ouvir as opiniões de outras pessoas, pois gostaria de ver se elas correspondem às minhas sem influenciá-las demais.

Respostas:

4

A programação em pares é difícil.

É difícil porque funciona melhor quando as duas pessoas envolvidas estão próximas do nível de habilidade e isso pode ser difícil em alguns ambientes de trabalho. Pode ser mais difícil quando você troca, porque precisa encontrar outra pessoa com o nível de habilidade apropriado e, em seguida, atualizá-la sobre o problema atual. O benefício é que mais pessoas têm exposição a qualquer parte do código emparelhada. Isso deve levar menos vezes em que o código não pode ser corrigido, porque ninguém sabe o suficiente. Ele também deve propagar a propriedade do grupo e a capacidade de qualquer pessoa pegar qualquer parte do trabalho.

Eu descobri que, mesmo em ambientes onde o emparelhamento é feito, a troca de pares não vale o custo. No entanto, isso pode dever-se às nossas tarefas nunca levarem mais do que ~ 1,5 dias. Descobrimos um grande benefício em dividir as tarefas em menos de 1,5 dia de trabalho. A troca de pares pode fazer mais sentido no contexto de tarefas em execução mais longas.

dietbuddha
fonte
Pessoalmente, gosto de fazer parceria com pessoas de todos os níveis. Às vezes estou aprendendo, às vezes estou ensinando, e às vezes estamos apenas fazendo as coisas. Mas aprender e ensinar constroem capacidade de equipe a longo prazo, o que eu acho que é tão importante quanto marcar os recursos.
19711 William Pietri
você pode pensar que sim, mas o gerente de projeto que vê o prazo dele desaparecer à medida que sua experiência se acostuma a treinar as pessoas em seu tempo, em vez de produzir código o mais rápido possível, não concorda. E é assim que a maioria dos projetos opera, simplesmente não há tempo para treinar as pessoas a ter as habilidades necessárias para o trabalho, para que os juniores fiquem pendurados, o que é bom apenas para levar a culpa pelas excedentes do orçamento.
Jwenting
@William Pietri: Na minha experiência, o emparelhamento não é um bom formato para o ensino. Não tenho problema em pegar alguém e guiá-lo pelo código para explicar o que está acontecendo. No entanto, isso não é programação em pares.
dietbuddha
@jwenting: Se você está dizendo que a programação por pares não funcionará bem em lojas que se concentram em prazos de besteira sobre qualidade e sustentabilidade, eu não argumentaria. Minha dica: trabalhe em algum lugar que não seja insano.
19711 William Pietri
@dietbuddha: Funciona para mim! A maneira mais rápida de aprender um novo idioma, estrutura ou biblioteca é parear com pessoas que o conhecem bem. E não conheço uma maneira melhor de acelerar um noob do que o emparelhamento. Por exemplo, essa é a experiência: slesinsky.org/brian/code/starting_xp.html
William Pietri
3

Sou programador e gerente. Aqui está a minha opinião:

A troca regular é ótima. Eu sou a favor da troca de 2 a 4 vezes por dia, o que é o mais rápido possível. Para nós, isso ocorre em pontos de ruptura naturais: geralmente almoço e meio da tarde. Mudar a cada dia ou dois provavelmente é bom, mas eu me preocupo em demorar muito mais do que isso. (Eu ouvi falar de um lugar trocando tão raramente quanto a cada seis semanas, o que eu acho insano; depois de tanto tempo juntos, você estará pronto para esfaquear um santo.)

Como programador, adoro isso porque tenho novas perspectivas, posso verificar outras áreas do código e posso continuar com alguma coisa como preferir. Recentemente, passei da codificação solo de volta ao emparelhamento e estou emocionado: aprendo mais, me divirto mais e faço mais.

Como gerente, acho ótimo porque resolve muitos problemas de fatores de gargalo e gargalo. Por exemplo, neste fim de semana, vou passar um longo fim de semana no casamento de um amigo e não estou preocupado: tudo em que trabalhei também foi trabalhado por outras pessoas. Eu também acho que realmente ajuda os membros da equipe a apreciar os pontos fortes e fracos um do outro e a incentivar a propriedade coletiva do código.

Quanto a quem fica com o trabalho atual, sinto que depende principalmente das pessoas envolvidas. Às vezes, você deseja ver alguma coisa e, às vezes, está pronto para uma mudança. Às vezes, também trocamos para obter experiência ou alguém pode aprender algo em que está interessado. Tentamos manter nossas unidades de trabalho muito pequenas (0,5-2,0 pares / dia), para que não seja um grande problema, no entanto, a troca ocorre .

William Pietri
fonte
Para mim, tenho que dizer que trocar só é bom quando: a) não gosto de codificar com o cara com quem estou codificando; b) não gosto da história em que estou trabalhando (como consertar um ropey erro de memória antigo). Caso contrário, quero continuar do início ao fim. Pessoalmente, acho que a troca de pares reduz a qualidade do código, porque um bom código deve ter uma única visão clara, quanto mais pessoas trabalharem em uma única parte, mais desorganizada essa visão se torna. Quanto ao compartilhamento de conhecimento, eu diria que a maioria das pessoas tem uma idéia do que está acontecendo, mas ninguém realmente entende nada.
@B Tyler - Eu acho que uma base de código é um trabalho intelectual conjunto, então você precisa ter uma visão clara que também seja uma visão comum. É por isso que acho importante trocar: é preciso muita interação e discussão para desenvolver uma abordagem compartilhada sólida.
22811 William Pietri
1

Okie, aqui está a resposta de um programador pragmático / xp pragmático auto-proclamado. Faço programação em pares há mais de dois anos. Se a programação dos pares for boa, troque os pares com frequência (idealmente a cada duas horas, se não a cada meio dia). Em nosso escritório, fazemos questão de trocar pares todos os dias (geralmente) ou a cada dois dias (na pior das hipóteses). Fazer isso por si só pode nos dar muita confiança na qualidade do código que comprometemos e aprendemos ou adotamos sempre a cada rotação de pares (sabemos que a revisão do código é boa, quanto mais, melhor e quanto mais cedo melhor. É isso que a "programação de pares, incluindo a prática de trocar pares" alcança).

Por que não trocamos de pares a cada duas / quatro horas? Bem, na verdade eu também estive em equipes que praticam isso. Certamente é muito mais legal e produtivo. Mas aqui está o acordo: o intervalo de tempo entre pares de trocas não deve ser uma regra, deve acontecer por si só; somente então o gerente ou a empresa pode ver seus benefícios.

Eu testemunhei e experimentei isso. Agora sou evangelista. Não é uma teoria. Em vez disso, é completamente pragmático :) Feliz par de ping-pong e troca de pares.

karthiks
fonte
1
Agora estou totalmente convertido à opinião de que a programação em pares é geralmente uma má idéia; a troca frequente de pares na programação de pares apenas piora as coisas. Eu ouvi toda a teoria e tentei muito na prática e acho que é incrivelmente ineficiente, muito mais chato e frustrante do que a programação solo e resulta em código de qualidade inferior.