Eu sei que a programação em pares é uma técnica ágil de desenvolvimento de software na qual dois programadores trabalham juntos em uma estação de trabalho. Um, o motorista, escreve o código, enquanto o outro, o observador, revisa cada linha de código à medida que é digitada.
Mas eu me pergunto: a estratégia ainda funcionará no caso. Por exemplo
- se eles tiverem um nível de habilidade de programação muito diferente.
- se um nunca experimenta no domínio do problema enquanto outro tem.
- Ainda está bom se eles tiverem um baixo nível de habilidade de programação?
Você poderia sugerir a estratégia de programação de pares no caso acima?
agile
pair-programming
Sakares
fonte
fonte
Respostas:
Supondo que a pessoa mais experiente do par tenha o temperamento para orientar a outra pessoa, emparelhar alguém com pouca experiência no idioma ou no domínio do problema com uma pessoa experiente facilitaria a transferência de conhecimento. A pessoa menos experiente teria um mentor para instruí-la sobre o idioma, o domínio, o aplicativo e as melhores práticas ou convenções da equipe.
Há um resumo interessante no wiki C2 sobre transferência de conhecimento usando programação em pares . A pessoa mais sênior, que foi contratada para servir como mentora da equipe, aprendeu muito com os programadores juniores e seu conhecimento até aumentou como resultado de ser associado a desenvolvedores de software mais juniores e menos experientes. Existem outras histórias sobre programadores especialistas que também estão emparelhados com especialistas em domínio.
fonte
Foi exatamente para isso que foi feita a programação de pares de casos de uso: compartilhamento de experiência entre barba velha e jovem gafanhoto.
Trata-se de um compartilhamento bidirecional: insetos ágeis têm muito a ensinar aos cérebros reumáticos.
fonte
Quando fui promovido a minha equipe atual, eu era o novato no J2EE, mas era o especialista no domínio. Meu sênior (o novo líder da equipe) era habilidoso em J2EE, mas não na plataforma.
Acho que aprendi mais sobre Java2EE nesses 4 meses com programação em pares do que ler um livro e o líder da equipe também aprendeu sobre a plataforma.
A diferença de experiência entre os dois é a chave para emparelhar o imho da programação.
fonte
Descreverei minha experiência e tentarei extrair alguma "estratégia" dela.
Certa vez, programei um par com um não programador completo. Ele era especialista no assunto do produto de software que desenvolvemos. Pelo contrário, eu não tinha experiência no domínio do problema. E ele também era meu supervisor no momento (eu sei que isso pode parecer estranho :)
O principal benefício dessa metodologia foi que eu tive que explicar a implementação de muitas coisas do seu domínio de conhecimento, garantindo assim a exatidão da implementação e sua compreensão do processo, o que significava que ele entendia por que demorou esse tempo.
Outro benefício é o foco fácil na tarefa, sem distrações (ha-ha, imagine abrir o Twitter antes do nariz do seu chefe).
Às vezes, era bastante intimidador, pois até mesmo uma pausa para o chá se tornava uma "distração do trabalho" (não do ponto de vista dele; era apenas inconveniente pedir uma pausa e assim por diante).
Portanto, isso não é realmente uma programação em pares, pois ele praticamente não pôde revisar o código conforme foi digitado. No entanto, parecia ser uma estratégia sensata (pelo menos por algum tempo). No fim das contas, funcionou por causa da relativa simplicidade da metodologia de desenvolvimento (quero dizer, nenhuma técnica complexa de design de software como o OOP Patterns estava envolvida) e o assunto. Isso não funcionaria se tivéssemos que desenvolver um compilador, eu acho. Acredito que ainda poderia funcionar caso um observador não programador participasse do processo de desenvolvimento de pequenas peças claramente definidas. Digamos, não há problema em ele assistir à programação de uma função "computar o parâmetro X de Y e Z pelo algoritmo fornecido", mas pode não ser tão bom vê-lo assistir ao processo geral de design do sistema (significando o desenvolvimento da arquitetura de software, ou seja, a hierarquia de aulas,
Eu acho que funcionaria ainda melhor se ele tivesse algumas habilidades básicas de programador, pois eu não precisaria explicar "o que é uma matriz".
Espero que ajude :)
fonte
Na minha experiência, se ambos os programadores têm um baixo nível de habilidade, pode ser um problema. Nesse caso, geralmente há uma tendência para tentar a programação copiar e colar. Eu acho que pode ser uma boa idéia não emparelhar dois programadores iniciantes até que eles atinjam um nível específico determinado pela equipe.
Caso contrário, a programação em pares pode ser uma ótima idéia, supondo que, obviamente, dois indivíduos estejam prontos para compartilhar o que sabem. Além de ser uma ótima maneira de manter todos informados sobre o código-fonte, também atua como um bom lugar para novas idéias e discussões.
fonte
Desde que os membros da equipe se respeitem, a programação em pares pode ser benéfica, independentemente dos níveis de experiência dos programadores. Mesmo que um programador júnior apenas encontre alguns erros de sintaxe (que todos cometemos!) Diante do programador mais experiente, isso ainda poupa tempo na compilação de código.
Eu também acho que isso pode abrir a atitude de um programador em relação às capacidades de outros membros de sua equipe, especialmente se eles tiverem uma mente aberta e esperarem que todos possam lhe ensinar algo.
fonte