[MÚSICA] [MUSIC] Olá a todos! Meu nome é Eduardo Guerra. Esse é o curso Princípios de Desenvolvimento Ágil de Software. Nesse módulo, vamos falar sobre o pair programming, a programação pares. Uma técnica bem famosa do desenvolvimento ágil mas igualmente polêmica. Vamos falar pouco mais sobre as suas características e como implantar ela de forma eficaz dentro da sua equipe. Na aula de hoje, a gente vai meio que conhecer a técnica, entender pouquinho como ela funciona e pouquinho das suas vantagens. O que é o pair programming? Pair programming ou programação pares, como a gente chama português, é uma técnica que você tem dois desenvolvedores sentando na mesma máquina para trabalhar na mesma tarefa. Então, a gente vai ter duas pessoas no mesmo computador. Não vão ser computadores diferentes, não tem dois teclados, não tem dois mouses. São duas pessoas realmente trabalhando juntas na mesma tarefa. Só que pair programming é muito mais do que você sentar junto com a outra pessoa e ficar lá programando junto com ela. Não é só o cara ir lá, sentar e ficar vendo o outro programar ou o cara sentar, pegar o teclado, disparar na frente e não estar nem aí para o cara que está do lado. Não é isso que é pair programming. Então, a gente vai ver que, às vezes, não é tão fácil assim, não é tão simples assim. Quando a gente está fazendo o pair programming, a gente tem ali as duas pessoas: uma que está efetivamente no teclado e no mouse, trabalhando, que a gente chama esse cara de piloto e aí esse cara é quem efetivamente vai estar trabalhando no código ali, pensando no "if", pensando nos condicionais, vendo qual o melhor nome da variável e tal. então assim, é o cara, normalmente, quem está programando está com foco maior no micro, naquela linha de código, naquele momento ali que ele está escrevendo. E aí, a gente tem a figura do cara que está do lado, que é o copiloto. Esse cara está acompanhando ali a programação, lógico que ele não deve ficar: "Esqueceu o ponto e vírgula! Esqueceu não sei o quê! Escreveu errado!". Às vezes, a pessoa viu, mas ela não quer perder o ritmo. Mas ele vai ficar ali meio ligado, do tipo: "Olha, eu acho que esse código aqui já tem algum outro lugar. Olha, será que essa variável aqui, não seria melhor declarar ela num ponto diferente aqui do código?". Então, o copiloto é aquele que, enquanto o piloto está focado, ele está com uma visão pouquinho mais global, pouquinho mais ampla ali do software, para entender o contexto daquilo e ajudar também o piloto nos momentos que ele precisar. Então, no pair programming a gente acaba tendo esses dois papéis: do piloto e do copiloto. E aí vem a pergunta: o que é que eu ganho usando programação pares? Muita gente tem essa impressão de: " não, espera aí. Eu estou botando duas pessoas para fazer o trabalho de uma. Então, eu estou perdendo tempo, eu estou perdendo dinheiro". Na verdade, não. A gente vai falar pouquinho mais sobre isso nas próximas aulas, mas hoje a gente vai falar pouquinho também dos benefícios de implantar o pair programming dentro de uma equipe. Então, assim, o desenvolvimento ágil, ele tem uma série de técnicas que exige que você tenha uma certa disciplina. Exemplo, é a refatoração, para você estar sempre observando a qualidade, refatorando código, sem deixar para lá aqueles pequenos desvios ali, aquelas pequenas acochambrações que acabam ficando no código, para fazer ele passar mais rápido, para ver se vai dar certo. Isso aí é uma coisa que exige disciplina e você tendo par ali do seu lado você tem reforço nisso daí. A mesma coisa eu digo para os testes automatizados. Muitas vezes, também, a gente deixa para lá ou a gente: " não, deixa eu implementar isso aqui, depois, quem sabe dia, eu crio teste lá". Agora, se você tem par, puxa o outro, cobra o outro, você fica até com vergonha de deixar código meio mais ou menos, ou de deixar de fazer teste. O cara: " poxa, depois a gente faz esse teste". Aí o par vai lá e lembra: "Olha, lembra aquele teste que a gente deixou de fazer? Vamos aproveitar para fazer lá agora?". Então, essa questão do pair programming dá reforço muito grande nas outras práticas, principalmente, aquelas que exigem uma certa disciplina dos desenvolvedores para dar certo. Quem aí, jogue a primeira pedra quem nunca estava desenvolvendo alguma coisa e de repente se, acaba meio que se distraindo ali com e-mail que chegou, com uma mensagem, "zap-zap", sei lá, alguma coisa assim. Então, quando você está sozinho, você, às vezes, se dispersa facilmente. Às vezes, são até coisas de trabalho mesmo, mas, às vezes, você perde o foco daquela atividade de programação que foi planejada para aquele momento. Com o pair programming, você consegue manter esse foco melhor porque você está junto com outra pessoa. Você vai parar para olhar e-mail e deixar aquela pessoa esperando? A mesma coisa vale para ela. A gente vai discutir outras aulas a questão da privacidade, mas essa questão do foco aumenta muito a eficiência dos desenvolvedores. Você tem ali a discussão e cada ali sabe que, naquele momento, ele não pode desviar o foco para outra coisa porque vai estar, também, atrapalhando o colega. Então, o pair programming ajuda muito nessa manutenção do foco. Uma outra coisa que é óbvia, mas é importantíssimo a gente falar e faz uma diferença enorme, é a transferência de conhecimento. Enquanto desenvolvedor está fazendo junto com outro, ele está aprendendo. Está aprendendo com o outro, independente de ele estar como piloto ou copiloto. Às vezes, o cara não sabe muito bem e está como piloto, o outro vai ajudando. Ou, às vezes: "Olha, você sabia que esse método aí que você está usando pode ter problema de segurança?". Às vezes, o cara não sabia. " você sabia que essa PI que você está usando tem método melhor para fazer isso que você quer fazer?". Então, vai tendo uma transferência de conhecimento de forma que a ideia é que, depois de tempo, a equipe esteja mais ou menos uniforme relação às tecnologias que está utilizando num determinado projeto. Acontece muito, do desenvolvedor, às vezes, ser mais forte ou ter uma especialidade alguma coisa ou ter uma experiência maior de lado e ter uma experiência menor do outro. Às vezes, o cara que é muito bom com aplicação web tem menos experiência teste e o cara que é bom de testes não tem tanta experiência com aplicações web. Esses caras trabalhando juntos, com certeza, vai reforçar o ponto mais fraco do outro. Então, essa parte da transferência de conhecimento, a facilidade com que você consegue inserir uma pessoa nova na equipe e fazer com que ela fique familiar com tudo, isso daí é realmente uma grande diferença da programação pares, uma grande vantagem. E, por fim, a gente tem uma melhora significativa da qualidade do código si. Você tem duas pessoas olhando para o mesmo código. Então, a chance de passar erro ali sem querer é pequena, a chance de, às vezes, você criar teste que tenha uma falha ou que não está testando tudo. Você tem duas pessoas pensando ali nos casos de teste, olhando códigos. É como se você tivesse uma revisão de código simultânea à sua programação. Então, você ter dois olhos cima do mesmo código, isso daí faz uma grande diferença e várias pesquisas já mostraram que, realmente, quando a gente utiliza a programação pares, o resultado é uma qualidade de código superior, às vezes, da mesma equipe ou dos mesmos desenvolvedores, criando aquele código sozinhos. Existem vários estudos que apontam evidências para esse lado. Então, assim, vamos ter código mais limpo, uma menor quantidade de bug. Então, olha aí, as grandes vantagens que a programação pares acaba trazendo para a gente. Certo? Então, é isso. Queria falar hoje para vocês sobre essa técnica da programação pares. Espero que tenha dado para entender como ela funciona, suas principais vantagens. E, nas próximas aulas, a gente vai aprofundar mais esse assunto aí. Muito obrigado! Continue assistindo à gente! [MÚSICA] [MÚSICA]