Mob Programming

Igor Sthaynny
Popcodemobile
Published in
8 min readJun 14, 2022

Um dos grandes desafios das equipes ágeis é continuar desenvolvendo e entregando recursos dentro do prazo. Para garantir a qualidade de tais recursos, é necessário realizar um planejamento eficiente e principalmente participativo, mas nem sempre todos os participantes são agentes ativos nessa cerimônia. A falha em colaborar com todos os participantes pode comprometer o sprint, pois os membros da equipe de desenvolvimento podem não ter a mesma visão sobre o quadro geral

Imagina todas as pessoas brilhantes trabalhando na mesma coisa, ao mesmo tempo, no mesmo lugar e no mesmo computador. Como seria a construção de um produto de software com essa metodologia.

Nesse artigo, será tratado um pouco do Mob programming, que é uma abordagem de desenvolvimento de software onde toda a equipe trabalha na mesma coisa. Isso é semelhante à programação em par, onde duas pessoas se sentam no mesmo computador e trabalham em uma tarefa ou problema ao mesmo tempo. Um geralmente faz a codificação e o outro a “Navegação”.

Idealização

O conceito original vem de Woody Zuill. O Mob programming pretendia ser uma evolução da programação em pares, uma técnica na qual dois programadores trabalham juntos na mesma atividade. Na nossa realidade do Mob não seria apenas dois profissionais trabalhando juntos e mais, não mais uma única pessoa liderando a atividade até a sua conclusão. Como já entendido, uma abordagem inventada para otimizar as atividades técnicas de programação, mas já está sendo utilizada para diversas outras frentes de desenvolvimento de software, como definição de histórias, design de produtos, testes, negócios e planejamento.

Funcionamento do Mob

Então, o conceito é que toda a equipe se senta em torno de uma (ou duas) telas de bugs, e se revezam sentados no teclado e todos trabalham juntos para resolver um problema, desenvolver uma história de usuário ou o que a situação julgar. Existem muitos níveis para implementar a programação em multidões, então algumas equipes podem usá-lo para resolver um único problema ou bug, algumas equipes o usariam algumas vezes por semana, talvez em determinadas tarefas ou ocasiões e outros farão todo o possível e o usarão para tudo.

Então, quanto à configuração, a maioria das equipes implementar algo assim:

Para a condução das atividades, dois agentes são muito importantes e são os únicos membros participantes na programação em multidão:

  • Navegador: responsável por pensar, discutir e tomar decisões, é o agente que decide o que vai ser implementado numa decisão conjunta.
  • Driver: responsável por traduzir o que os navegadores decidiram. Trabalho completamente mecânico de fazer o que os navegadores decidiram implementar. Há apenas um motorista de cada vez.

Os princípios que regem tal dinâmica precisam ser sempre:

  • Gentileza: entender que um dos principais objetivos da Mob Programming é a imersão e o aprendizado coletivo, onde todos os colaboradores tiveram conhecimento de todas as atividades;
  • Consideração: conhecer a real importância de todos os presentes no desenvolvimento do planejamento;
  • Respeito: saber responder às dúvidas dos participantes, entendendo que nem sempre, todos têm o mesmo conhecimento e é sempre necessário tratar tais níveis de conhecimento com gentileza.

No início haverá discussões, discussões sobre métodos, experiência e conhecimento, até coisas como velocidade de digitação, métodos de codificação e atalhos e macros. A maioria das pessoas tem seus PCs configurados de uma certa maneira que lhes permite trabalhar com mais eficiência, agora você está compartilhando um computador com uma quantidade X de outras pessoas. Mesmo esses pequenos problemas precisam ser resolvidos ao longo do tempo. É sempre importante lembrar os objetivos e os benefícios de fazer as coisas dessa maneira.

Quais são os benefícios?

Existem muitos benefícios, e estes se tornarão óbvios dependendo da equipe. Mas estes são alguns dos benefícios universais que posso ver com o uso desta metodologia:

As equipes se aproximam.

Trabalhar tão perto de um número de pessoas por 8 horas por dia vai forjar amizades ao longo do tempo.

A equipe se complementa com suas habilidades

É comum diariamente ter especialistas em uma equipe, ou pessoas que se destacam em certas coisas. Não importa o quanto você tente construir uma equipe autônoma, é da natureza humana que alguns membros da equipe serão mais fortes em outras em determinadas áreas. Agora você pode pensar que isso é uma coisa negativa… mas na verdade não é. Normalmente as pessoas tentam esconder suas fraquezas e muitas vezes elas não são abordadas ou melhoradas. Nesta situação, a equipe trabalhará em conjunto para lidar com eles. Você descobrirá que com o tempo o campo de jogo fica nivelado e sua equipe começará a melhorar como uma unidade.

A equipe se torna tomadora de risco.

Ao enfrentar desafios, às vezes pode parecer assustador por conta própria; mas com a força total de sua equipe atrás de você. Praticamente todas as decisões serão discutidas, votadas e acordadas, então, se algo der errado, a equipe assume as consequências. Você descobrirá que isso pode erradicar qualquer cultura de culpa e até mesmo esse tipo de situação pode fortalecer o vínculo da equipe.

A equipe fica mais feliz .

Essa metodologia permite reduzir qualquer estresse na equipe e pode melhorar muito a moral. As equipes não sentirão mais responsabilidade exclusiva ou excessivas e todos os problemas serão resolvidos rapidamente em conjunto, para que você reduza as instâncias em que há um problema e ele passa despercebido ou não é tratado por um longo período de tempo. E todos nós sabemos o que acaba acontecendo nessas situações.

A equipe não precisa mais ir às reuniões .

Se todos estão trabalhando na mesma coisa ao mesmo tempo, todos estão na mesma página e no loop, quantas reuniões você acha que serão canceladas. Claro que haverá algumas reuniões, não podemos nos livrar de todas, mas esse formato também significa que, como todos sabem tudo o que está acontecendo, qualquer membro da equipe pode ser um representante em qualquer reunião.

A equipe não tem dependências.

Porque a equipe está interagindo como uma parceria, não importa se alguém está doente, vai de férias ou tem que sair em caso de emergência. A equipe vai lutar como uma unidade. Isso também tem vantagens quando as pessoas voltam de férias longas ou até mesmo novas pessoas para a equipe. Você descobrirá que eles rapidamente se tornarão parte da equipe socialmente e também suas habilidades chegarão ápice rapidamente.

A equipe se torna mais eficiente.

Trabalhar de perto com os membros de sua equipe reduzirá qualquer sincronização que geralmente acontece dentro de uma equipe. Com os colegas em constante comunicação e no mesmo nível, as resoluções dos problemas serão maximizadas. Seus ciclos de feedback se tornam instantâneos e você verá as tarefas avançarem mais rapidamente e as melhorias implementadas mais rapidamente. Qualquer tipo de problema ou discussão pode ser feito em tempo real. A equipe também trabalhará muito mais e de forma mais eficaz.

A equipe vai crescer.

A equipe crescerá em conhecimento, socialmente, emocionalmente, tecnicamente e pessoalmente. Este é provavelmente um dos meus benefícios favoritos, mas trabalhando assim, sua equipe compartilhará tanto conhecimento e a colaboração estará no auge. Os pontos fortes estarão espalhados por toda a equipe e todos melhoraram. Uma pessoa aprenderá uma nova habilidade e será rapidamente aprendida pelo resto da equipe. Não é apenas relevante para as habilidades, mas para as tarefas relativas ao trabalho, os desenvolvedores aprenderão a implantar, os testadores aprenderão a codificar e até mesmo os colegas da parte comercial do negócio entenderão a arquitetura técnica e as restrições.

A equipe se torna uma.

Você passará de uma equipe de cada membro único fazendo as coisas de uma maneira diferente, para todos fazendo de uma maneira. Todos juntos.

Considerações finais

O mob programming não é uma bala de prata para resolver todos os problemas da equipe, mas é uma abordagem alternativa que pode ser usada ocasionalmente para combater problemas como: comunicação não assertiva, acúmulo de conhecimento em um membro que pode sair, tomando uma decisão individual e excesso de ego em membros da equipe.

Não há regras definidas para a programação de multidões, é mais uma abordagem experimental e não é para todos. Sua equipe pode não ter a cultura certa ou o tipo de trabalho que essa metodologia melhoraria a eficiência. Para a maioria das equipes, isso seria algo para usar de vez em quando, algo em sua ‘caixa de ferramentas’ para usar quando você tem um problema crítico de produção ou um obstáculo difícil de superar. Outras equipes podem usá-lo no início de um projeto e, à medida que avança, começam a se separar e a trabalhar individualmente.

Se você quiser experimentá-lo, é recomendado tentar em uma pequena tarefa ou bug. Também é bom tentar quando você tem um novo iniciante em sua equipe. Dessa forma, você pode ver antecipadamente se é benéfico para sua equipe sem se comprometer ou mudar completamente a maneira como você faz as coisas.

Agradeço sua atenção até aqui, sucesso na sua jornada. ❤

Referências

Hardy, A. (n.d.). Mob Programming — What is it?. Mob Programming What is it? | by Ashley-Christian Hardy | Medium. Ashley-Christian Hardy. Retrieved June 8, 2022, from https://achardypm.medium.com/mob-programming-what-is-it-a8699da1b583

Livyson. (2018, November 3). Using Mob Programming in Sprint Planning | by Livyson | Medium. Livyson. Retrieved June 8, 2022, from https://livyson.medium.com/using-mob-programming-in-sprint-planning-37506d63a769

Woody, Baga, D., & Lucian, C. (2018, January 8). Mob Programming — All the brilliant people working on the same thing, at the same time, in the same space, and on the same computer. Retrieved June 8, 2022, from https://mobprogramming.org/

--

--

Igor Sthaynny
Popcodemobile

Sou desenvolvedor mobile e fascinado por tecnologia, busco diariamente aprimorar minhas habilidades pessoais e profissionais.