Fonte: http://cameracourage.com/tag/how-do-i-become-a-co-driver/

Pair programming — materiais confiáveis para lhe ajudar nesse tema

Parear ou não parear? Aqui você encontrará embasamento para tomar essa decisão!

Wagner Fusca
5 min readOct 16, 2021

--

Breve explicação. Se você já conhece a prática, pode pular essa parte!

Trabalhar em par é uma prática descrita em XP (eXtreme Programming) e ela é uma alavanca poderosa para promover a propriedade coletiva de código fonte.

Fonte: http://www.extremeprogramming.org/map/code.html

No pareamento, duas pessoas estarão trabalhando na mesma tarefa e no mesmo computador durante uma fração de tempo (pode ser horas ou dias ou semanas). Após essa fração de tempo, sugere-se trocar a dupla, ou seja, realizar o move people around, que é outra prática de XP.

No pair programming, uma pessoa começa no teclado (na função driver, ou seja, digitará o código) e a outra pessoa irá fazer o papel de navegador (navigator), dando as instruções de como resolver o problema. De tempos em tempos (25 min, por exemplo), os papéis se invertem. Durante a codificação, utiliza-se testes unitários para garantir a qualidade do trabalho.

“Duas pessoas na mesma tarefa??? Isso é desperdício!!!”

Esse questionamento é feito com frequência por lideranças quando surge a ideia de utilizar essa prática para determinadas tarefas. Pensando nisso, preparei um conjunto de conteúdos relevantes e com profundidade para te dar mais segurança na hora de adotar essa prática.

Parear consome 15% a mais de tempo total de trabalho mas reduz, pelo menos, 15% a quantidade de códigos com defeito

Em fevereiro de 2000, surgiu o primeiro estudo sobre os benefícios da programação pareada. Alistair Cockburn e Laurie Williams realizaram um estudo analisando a quantidade de tempo que o pareamento consome. Foi descoberto que a diferença de tempo é de 15% a mais frente ao trabalho solitário e não o dobro do tempo, como costuma-se afirmar.

Além disso, foi percebido aumento na qualidade de código (ou seja, menos bugs), menos linhas de código (mais simplicidade) e maior satisfação do time ao trabalhar com pareamento.

https://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF

Pareamento acaba com o comportamento isolado e de ego do programador e ativa áreas cerebrais que não são ativadas enquanto se programa solitariamente

Em 2016, Jon Jagger apresentou no NorDevCon uma palestra sobre pair programming e nela ele apresenta o conceito Egoless e como a programação pareada pode ajudar para que esse conceito seja aplicado a sua cultura organizacional.

Ele também apresenta como a troca de informações no pareamento ativa partes do cérebro que ficam “dormentes” quando você programa sozinho.

Além disso, ele referencia o estudo de produtividade e qualidade citado no tópico acima.

Conselhos e lições aprendidas ao realizar pareamento

No link abaixo você encontrará diversas informações sobre programação pareada, padrões e antipadrões dessa prática.

Parear numa visão de neurociência

Gisele Morilha Gonçalves realizou um estudo aplicando neurociência com a prática ágil de programação pareada. Os resultados podem ser assistidos no vídeo a seguir:

https://youtu.be/TmCxjkxo0VU

Razões para você não caminhar numa jornada solitária na programação

Ron Jeffries escreveu 12 tweets refletindo sobre o trabalho solitário de programação. Na imagem abaixo você encontrará a primeira parte, para conferir os outros 11 tweets, acesse o link https://twitter.com/RonJeffries/status/1114808214648967168?s=20

https://twitter.com/RonJeffries/status/1114808214648967168?s=20

Case de redução de bugs e aumento de vazão de tarefas com pareamento — LuizaLabs

Victor Castanheiro e Rafael Raza de Campos compartilharam o case deles na LuizaLabs. Nesse case, eles aplicaram programação em par e tiveram redução de bugs (código com defeito) em 75% e com menos bugs, foi possível entregar mais tarefas de valor a cada semana.

Os aprendizados foram tantos que até o formato da mesa foi alterado para ter maior efetividade na programação em par.

https://www.slideshare.net/tdc-globalcode/tdc2018sp-trilha-ux-pair-programming-troque-seu-fone-por-um-dev

Case de sucesso de TDD e Pair programming, afetando a cultura organizacional — Ateliê de Software

Aline Garcia e Matheus Haddad do Ateliê de Software, apresentaram um case sobre o impacto da adoção do pair programming e TDD no dia a dia da empresa. Ao adotar ambas as práticas, a cultura de aprendizado é desenvolvida, junto com a autonomia.

https://pt.slideshare.net/tdc-globalcode/tdc2018sp-trilha-xp-tdd-e-pair-programming-alem-da-engenharia-de-software

Case de sucesso e pontos de atenção do pareamento — Objective

A empresa Objective tem um case detalhado de como foi escalado o ágil dentro de suas equipes de software através da adoção de diversas práticas ágeis, dentre ela o pareamento de software e testes unitários. No vídeo abaixo você vai ouvir a trajetória de erros e sucessos com pair programming.

https://youtu.be/kUJDgCS0-SY?t=417 (do min 6:57 até 14min)

O que é programação em par e quais são seus benefícios?

Nesse material, andrefaria descreve de o que é a programação em par, quais áreas do cérebro são ativadas com essa prática e como ela ajuda você a chegar no Flow State.

https://pt.slideshare.net/andrefaria/programao-em-par

Ao invés de parear, por que não todos do time trabalhando ao mesmo tempo na mesma tarefa (mob programming)?

Woody Zuill é o criador do Mob Programming. Ele esteve no Agile Brazil de 2019 compartilhando sobre essa prática. A palestra está disponível no link abaixo e você entenderá como Mob pode reduzir o leadtime das tarefas e aumentar a qualidade do trabalho.

Com Mob Programming, todas as pessoas de um time estarão numa mesma sala e no mesmo computador, resolvendo um único problema. Com isso, o tempo de interrupções será próximo a zero, não existindo desperdício.

https://youtu.be/Ej771ihzbKY

Tim Ottinger, escreveu uma série de dicas para realizar mob programming de forma efetiva.

Caso você tenha outros links de conteúdos sobre programação pareada, adicione nos comentários!!! Até a próxima!

--

--

Wagner Fusca

Agile e desenvolvimento de software podem caminhar juntos!