[MÚSICA] [MÚSICA] Olá a todos. Esse é o curso de Princípios de Desenvolvimento Ágil de Software. Meu nome é Eduardo Guerra. Hoje vamos estar falando sobre algumas variações da Programação Pares. Vamos ver aí, a gente tem o Pair Program. Mas e aí, será que o pessoal tem que parear o tempo todo? Será que poderão ser mesmo só duas pessoas, será que não dava para ter mais? Então vamos dar uma olhadinha no que mais existe por aí, nessa questão da interação e colaboração entre os membros da equipe para a atividade de programação. Bom, o que eu vou falar aqui agora, eu apelidei de Pair Development. Mas esse nome oficialmente não existe. Mas eu, como todo o mundo, a gente vai repetindo até que de repente pega. O que é que é o Pair Development? São duas pessoas e não parece. Aí você pensa mas o que é o Pair Program? O Pair Program são duas pessoas com uma tarefa de programação sentadas no mesmo computador. No Pair Development, a ideia é o seguinte, você vai ter as duas pessoas e aí a gente vai dar uma tarefa para elas com a responsabilidade de cumprir essa tarefa é dos dois. E vocês vão cumprir essa tarefa da forma como vocês acharem mais adequada. Então, o que é que eles vão fazer? Eles vão pegar e vão quebrar aquela responsabilidade, aquela funcionalidade do sistema tarefas. E aí, essas tarefas, eles podem de repente estar decidindo fazer individualmente ou fazer par. Então, imagina o seguinte. Eles falam assim: Olha, a gente tem aqui uma classe para fazer, a gente tem que criar banco de dados, tem que criar uma classe de negócio, tem que criar aqui uma interface gráfica web, para poder cumprir. Então eles vão separar as tarefas. E podem virar e falar assim: Olha, essa regra de negócio aqui, ela é core da funcionalidade que a gente estava fazendo. Vamos fazer ela juntos? Então eles tentam e com a programação pares eles vão lá, usando lá o DVD, criam o teste, e tal faz Mock ali na classe de Log e tal e não sei quê, foi criada aquela classe com a programação pares. Então assim, olha, falta fazer aqui a interface gráfica que vai interagir com isso daí e falta fazer a parte de comunicabilidade. Com essas partes a gente não vê grandes problemas, porque isso aí a gente tem interface gráfica, tem banco de dados. E aí, cada pode ir fazendo pedaços. Eles podem-se separar. Então, é assim, a ideia do Pair Development é você dar responsabilidade compartilhada pelos desenvolvedores. Mas eles têm autonomia para decidir se eles vão utilizar programação pares, e que partes eles vão utilizar a programação pares e que partes eles vão fazer individualmente, e como é que eles vão fazer isso aí. De repente, eles vão sentar do lado do outro, enquanto programa ele vai ajudando, o outro sei lá, vai tentando alguma coisa. Então eles têm toda a liberdade para abordar essa responsabilidade de diferentes formas. Uma prática interessante é você fazer teste com o código do outro. Então praticamente, como eu falei, essa responsabilidade é dos desenvolvedores, mas essa pode ser uma prática sugerida e incentivada de forma Vamos fazer o seguinte, vocês podem-se separar e cada fazer código. Mas vamos fazer o seguinte a partir do momento que vocês criarem código, quem vai ser sozinho, quem vai sentar ali é o condutor. Então, isso daí, você vai dividindo, vai compartilhando, e aí digamos assim, você foca a programação pares onde a dupla acha que aquilo ali está agregando mais valor, você foca o individual para responder a uma tarefa pouco mais mecânica, de repente ou que, sei lá o desenho uma tela, [INCOMPREENSÍVEL], uma coisa repetitiva, ou que o par não vai agregar tanto, ou que naquela situação separar as duas pessoas, cada uma na sua especialidade pode ser mais vantajoso, mas a responsabilidade dependente de ter feito ou não é sempre dos dois. Então, essa é uma prática interessante que de repente vocês conseguem obter os benefícios dessa programação pares, mas ter pouco mais de flexibilidade e conseguir aproveitar melhor os recursos, aproveitar melhor as pessoas da forma que elas são. Bom, e aí é claro que eles estão usando não precisa parear 100% do tempo. Na verdade, grande parte das equipes que utilizam a programação pares, elas não têm essa questão de parear 100% das tarefas, 100% do tempo. Há uma grande, várias delas que utilizam mais de metade das tarefas. Mas não é 100%. Então, o Pair Development é uma forma de você ter, conseguir ter essa responsabilidade compartilhada e deixar na mão dos desenvolvedores essa autonomia para fazer cada caso da forma que eles acharem mais adequada. Bom, e aí, outra questão. Será que é possível trabalhar mais de duas pessoas no mesmo problema? Será que é possível fazer a programação trio? Quatro? Multidão? Então, existe uma técnica chamada Mob Programming. A ideia é você ter desenvolvedor sentado uma máquina, com projetor que ele está programando e o resto da equipe está ali participando. Você pode até alguns casos ter ali a figura do copiloto, mais próximo do desenvolvedor, mas a ideia é que todo o mundo esteja participando ali Eu já vi alguns casos extremos, tipo a equipe inteira trabalhar sempre assim todo mundo bem rápido, mas é uma técnica que eu acho que é interessante você, mesmo que você não queira adotar o Mob Programming como default na sua equipe, pode ser uma técnica bem interessante para você usar algumas situações. Então, por exemplo, você tem problema que envolve várias especialidades. Olha, isso aqui tem uma questão de banco de dados, mas tem outra questão de interface gráfica mas o dado vem de outro sistema, e aí você precisa de várias pessoas ali que entendam de coisas diferentes para resolver, senta todo o mundo ali volta, vai alternando também o piloto, da mesma forma que a programação pares, o Mob Programming também pode variar assim, quem tá lá vai se situar, no caso aí quem tem mais familiaridade quem tem mais experiência, com o que está sendo feito naquela hora, e a partir disso daí você vai desenvolvendo e aproveitando os expertises de todo o mundo. Outro caso é a questão da transferência de conhecimentos. Então, às vezes, a gente está utilizando uma tecnologia nova ou você está introduzindo elemento novo, framework. Vamos fazer a primeira funcionalidade do nosso programming, para todo mundo ver como aquilo funciona, para todo o mundo de repente ter a oportunidade de ir lá na frente e fazer pouquinho ela mesmo, às vezes é até esquema pouco confuso, só que aí no caso com menos pessoas você aumenta o tempo que cada fica reprogramando. Então é uma forma também de às vezes você tem que ir, as pessoas fazerem cursos ou aquela pessoa que tem aquele conhecimento que tem de parear com todo o mundo e às vezes nem sempre tarefas relacionadas à aquilos. O Mob Programming pode ser uma forma de parear a equipe, de todo o mundo trabalhar não só simplesmente com o que está estudando, mas trabalhar numa tarefa do próprio projeto, só que todo o mundo junto com o objetivo de aprender determinados conhecimentos sobre aquela questão. Então, o Mob Programming também às vezes é uma forma de você superar desafios muito difíceis, ou tomar decisões importantes e às vezes até uma questão arquitetural, que quer ser discutida com a equipe, ao invés de ficar falando blá, blá, blá, pode sentar todo o mundo na frente do código e vamos mostrar quais são as alternativas de poder ali o que seria o mais adequado, o melhor para o nosso projeto, pegando as ideias de todo o mundo, deixando todo o mundo contribuir. Então, à vezes para decisões difíceis, para aquele problema que ninguém consegue resolver, então pára, pára tudo, vamos sentar todo o mundo na sala e ver o que está na cabeça de todo o mundo, ver se você consegue fazer isso direito. Então, nessa aula mostrei algumas variações da programação pares, do Mob Programming, que é outro tipo para gerar código, parei pouquinho aí no Pair Development, que não é o tempo todo os dois na mesma máquina, que tem esse conceito da responsabilidade dividida, a gente pode utilizar o Pair Program determinadas tarefas, até todas ou nenhuma. Então a ideia é que você tome a responsabilidade das técnicas que você está usando e assuma a responsabilidade por elas. É funcionarem corretamente sabendo aí que vocês podem funcionar melhor. Certo? Então, muito obrigado. Espero que tenha ficado claro para todos e mando abraço, não só para você mas para o seu par aí também. Até ao próximo módulo. [MÚSICA] [MÚSICA]