Update: To read in english click here.
Definição:
Pair programming é uma técnica de desenvolvimento de software onde 2 programadores trabalham juntos em uma estação de trabalho. Mais detalhes consulte a Wikipedia: http://en.wikipedia.org/wiki/Pair_programming.

Trabalhei com programming apenas em 1 empresa por 9 meses. Deste período, tirei ótimas e péssimas experiências.
Durante os momentos em que você divide o computador com outra pessoa, você divide também detalhes de uma vida virtual, como:
- organização: como você organiza documentos, projetos, músicas, etc
- escolhas: quais aplicações você usa e de que forma você as usa, como: temas, hotkeys e configurações.
- habilidades: velocidade de digitação, quanto você aproveita das aplicações que usa e até mesmo quanto conhecimento você tem sobre a aplicação que está desenvolvendo.
Claro que, uma vez em que a dupla é bem entrosada esse compartilhamento de informações só tende a ser mais e mais produtivo. A pergunta de um milhão de dólares é: “E quando esse entrosamento não acontece?“

Se ambos não estiverem dispostas à aprender com a experiência, o convívio se torna menos saudável com o passar dos dias.
Pair programming não funciona se alguma das partes se sente tão capacitado a ponto de pensar que sozinho faria o trabalho melhor. Nestes casos, o pair programming torna-se uma experiência intrusiva e negativa.
Para alguns programadores, principalmente os que se sentem ótimos profissionais, é muito difícil entender esse tipo de situação. Para tornar a coisa um pouco mais genérica, eu costumo comparar pair programming com dirigir um carro tendo um passageiro ao seu lado no banco da frente.
Situação 1: Indo por um caminho conhecido.
Imagine-se indo para uma festa, você está dirigindo o seu carro e conhece o caminho até lá. Ao seu lado, tem um passageiro, pode ser um amigo ou apenas um conhecido.
Se você tiver alguma dúvida sobre o caminho ou acabar entrando em uma rua desconhecida, a pessoa pode pegar um guia e ajudar, sugerir um caminho mais rápido ou quem com menos trânsito.
Ao chegar à festa ambos aprenderam alguma coisa ou simplesmente compartilharam o bom tempo.
Situação 2: Um novo mundo.
Agora, imagine-se indo para outra festa. Você continua dirigindo só que agora você não sabe o caminho. Ao seu lado encontra-se uma outra pessoa, um amigo ou quem sabe apenas conhecido.
Durante o caminho você pede conselhos sobre qual caminho você deve tormar.
O passageiro por sua vez, te ajuda com o que ele sabe ou consulta um guia e te dá dicas de como chegar ao local desejado.
Ao chegar à festa vocês aprenderam um novo caminho, e mais uma vez tiveram uma boa experiência.
Situação 3: O começo do fim
Agora, imagine-se indo para uma festa, não importa se você conhece o caminho. Ao seu lado uma outra pessoa nas mesma condições anteriormente citadas.
Você continua dirigindo, só que agora o passageiro gostaria de ser o motorista. Qualquer dúvida que você tenha o passageiro olha para você e diz “Eu deveria ter vindo com meu próprio carro, teria sido melhor” ou “Se eu estivesse dirigindo isso não teria acontecido”. O que você faz?
Provavelmente ambos chegarão à festa mal humorados e tentarão a todo custo evitar esse tipo de situação novamente.
Talvez, se você estivesse no carro uma discussão aconteceria mas, durante o pair programming você está em uma corporação e algumas coisas não devem e não são ditas.
Antes de dividir o computador com alguém, pense nisso.




Muito bom Post! infelizmente o terceiro caso é muito comum devido a guerrinha de egos