Programação Pareada
A Programação Pareada é uma das práticas do Extreme Programming (XP), que sugere que o código seja sempre trabalhado em dupla em um mesmo computador, revezando quem está digitando. Assim, existem dois papéis nessa atividade, o piloto e o co-piloto. Os dois trabalham de forma análoga a pilotos e co-pilotos de aeronaves.
O piloto é o responsável pela digitação do código, a sintaxe, e por deixar o seu parceiro ciente do que está fazendo, sempre explicando seu raciocínio durante a execução. O co-piloto acompanha a elaboração do código, os testes que deverão passar, a próxima história a ser entregue, o tempo gasto na execução dos testes, o tempo decorrido desde o último commit, e a qualidade do código em geral.
A ideia é que o pareamento ajude a disseminar o conhecimento entre o time de desenvolvimento, que a aplicação tenha menos bugs e que mais funcionalidades sejam acrescentadas num menor período de tempo, resultando em melhores projetos.
Programação Pareada Remota
Pareamento remoto significa pareamento a distância. Esse tipo de pareamento é necessário quando os desenvolvedores não podem se encontrar pessoalmente.
Este pareamento é feito com o auxílio de ferramentas que permitem a comunicação e o compartilhamento de tela, como hangouts ou skype, ou em alguns sites que permitem várias programarem juntas.
A desvantagem desse pareamento é que o par pode perder o foco com facilidade já que a pressão do outro não é tão grande, o que pode acarretar em perda de produtividade.
Boas práticas Programação Pareada
Algumas práticas de pareamento altamente efetivos:
Proficiência: Ter proficiência com a linguagem e com as ferramentas utilizadas é extremamente importante para um pareamento eficiente. Caso contrário, o rendimento não será muito alto pois um membro do par será apenas ouvinte e não conseguirá acompanhar e contribuir.
Comunicação: A dupla precisa ter uma comunicação efetiva. É necessário que ambos estejam cientes e de acordo com o que será feito, é válido utilizar ferramentas de BDD para definir claramente o que será feito. Além disso, o piloto tem que estar constantemente se comunicando sobre o que está fazendo e pensando com o copiloto.
Autoconfiança: É essencial ter autoconfiança nas suas habilidades, dessa forma cada membro conseguirá contribuir e aprender bastante, criticando, recebendo críticas, questionando práticas e sugerindo novas ideias.
Autocontrole: Ter autocontrole para evitar distrações durante o pareamento e não se irritar ou se frustar com algo que não está dando certo contribui fortemente para a eficiência do par. Estabelecer algumas regras, como não usar celular para email ou mensagens que não vão contribuir é extremamente válido.
Paciência: Ter paciência com o outro membro do par quando este não tem tanto controle das ferramentas do computador é de grande ajuda para que ambos tenham confiança e vontade de trabalhar.
Modos: Estabelecer algumas regras para que o pareamento seja eficiente é extremamente importante. Regras como: trocar a função de cada um na dupla(piloto e copiloto) a cada intervalo de tempo pré-estabelecido, não ler emails ou mensagens no celular, não tocar na tela, não usar palavras ofensivas ou xingamentos, entre outros.
Higiene: Apesar de não parecer essa prática é importante. Maus hábitos de higiene pode deixar a outra pessoa extremamente desconfortável e fazer com que ela não queira parear. Ter práticas básicas de higiene pessoal e no ambiente de trabalho é essencial.
Tipos de Programação Pareada
Especialista x Especialista
Tipo de pareamento que a princípio parece ser o melhor, contudo, geralmente traz poucas inovações, já que especialistas já estão acostumados com as estruturas e paradigmas pré-definidos e tendem a não questioná-los.
Principiante x Principiante
Tipo de pareamento que traz melhores resultados que um principiante trabalhando sozinho, contudo, a curva de aprendizagem e de produção deste tipo é bem lenta, sendo ele desencorajado.
Especialista x Principiante
Tipo de pareamento mais recomendado, de modo que a curva de aprendizado do principiante tem crescimento rápido, além de que, o desconhecimento do principiante de estruturas e paradigmas pré-definidos o faz questioná-los, podendo gerar novas ideias e inovações. Contudo, para que este pareamento funcione adequadamente, o especialista precisa ter paciência e vontade de ensinar o principiante, bem como é requerida proatividade deste último, para que o primeiro não faça tudo sozinho.
Treinamento Programação Pareada
- Incluir descrição do treinamento/DOJO - passo a passo - etapas
- Registrar os detalhes da dinâmica
- Infraestrutura Necessária para a dinâmica
- Código referência no projeto da disciplina (00-Disciplina)
- Treinamento em, pelo menos 2 linguagens