Mob Programming

Duas cabeças pensam melhor que uma, é um ditado popular, mas se juntarmos mais cabeças, será que o resultado disso é positivo, ou iremos criar uma hidra ou um Tiamat e destruir o mundo?

No mundo do desenvolvimento de software existem várias técnicas para auxiliar no desenvolvimento, uma delas é o Pair programming que consiste em duas pessoas se juntarem para o desenvolvimento de um bloco de código, onde os dois indivíduos juntam suas habilidades e tentam fazer um único trabalho que tende a resultar num código com uma qualidade melhor.

Pensando no conceito do Pair programming e inserindo uma ou mais pessoas nos trais o conceito de mob programming, onde várias pessoas, ou até mesmo o time inteiro se junta para resolver um problema especifico ou para somente a criação de um bloco de código. É utilizado um único computador e todos os integrantes colaboram para obter resultados.

Integrantes em um mob Programming:

Existem duas personas no processo de mob programming, que rotacionam durante o as iterações do processo, são elas:

Driver:

· Somente uma pessoa

· É aquele que vai controlar o computador

· Não pode participar das discussões da equipe para que suas ideias não condicionem as ideias dos outros membros

· Faz somente o trabalho mecânico

Navigators:

· É composto de todos os outros integrantes exceto o Driver

· Responsáveis pelas discussões e pela tomada de decisões

· Decidem o que vai ser implementado e digitado pelo Driver

Etapas de funcionamento:

1. Conhecimento inicial de todos os envolvidos:

Inicialmente todos introduzem suas experiencia rapidamente para que todos tenham uma noção do que cada um pode fazer. As vezes sendo necessário um nivelamento de conhecimento previamente antes de começar as atividades

2. Iniciação de uma atividade:

A equipe decide qual tarefa vai ser realizada, e é escolhido o tempo de rotação entre Driver e Navigators, também designando o Driver inicial.

3. Rotações:

Em certos intervalos de tempo preestabelecido um Navigator se torna o Driver, assim todos podem fazer parte de toda a experiencia do processo.

4. Pausas:

De tempos e tempos é necessário fazer algumas pausas e quando ocorrerem, todos devem parar até retornarem as atividades.

5. Entrega de uma atividade:

É terminada uma atividade, e sequencialmente é escolhida a nova atividade.

Benefícios

Melhoria na qualidade do código.

É uma característica muito importante de qualquer projeto, influencia diretamente no tempo, no custo, na performance e na satisfação do cliente de um software.

Com o mob programming, a quantidade extra de cabeças pensantes de diferentes áreas, diferentes perspectivas, mas com o mesmo objetivo, a criação do software. Com várias pessoas analisando e pensando em soluções e um corrigindo o erro dos demais, a qualidade do software melhora, soluções para problemas aparecem mais cedo e o resultado se mostra mais próximo do esperado.

Diversão

O trabalho é feito em time, novos desafios aparecem, resolver um problema se torna algo da equipe, e qualquer resolução é algo feito graças a equipe trazendo satisfação para a mesma.

Disciplina

Uma vez sendo utilizado a técnica de mob programming é necessário a disciplina de trabalhar em equipe, começar e terminar de trabalhar juntos, ter horários, para que sempre possam contar com um ao outro.

Comunicação

Comunicação é tudo para o mob programming, é necessário compartilhar suas ideias, interagir, mob programming só funciona com comunicação e com isso é necessário o aprimoramento dessa habilidade.

Compartilhamento de conhecimento

Na equipe do mob programming, existem pessoas de várias áreas, podem ter desenvolvedores junto com gerentes, junto com analistas de qualidade, junto do próprio cliente. Essa mistura traz um problema, nem todos possuem as habilidades necessárias para todas as ocasiões do projeto, porem todos juntos podem mostrar como é feito para todos do time, assim cada um do time pode ter uma noção das atividades de outras pessoas as quais normalmente não teria.

Pessoas novas no projeto ou pessoas que querem trocar de área de atuação podem usar do mob programming para aprender o que se tem que fazer em várias situações.

Outros benefícios:

· Pessoas podem ser substituídas

· Pessoas podem se focar em outras coisas e voltar

· Relacionamento da equipe

· Confiança no resultado

· Transparência para todo o time

· Decisões em conjunto

· menos reuniões

· menos stress quando encontrado um problema

· resulta em código mais fácil de entender

Malefícios:

· São muitas pessoas presas em uma única atividade sequencial

· Não é multitask

· Aumento de tempo para tarefas fáceis e com necessidade de trabalho mecânico