Mob Programming

Tiago Marques
3 min readMay 18, 2018

--

O que é Mob Programming?

É uma abordagem de desenvolvimento de software em grupo, onde todo o time executa atividades com um único objetivo, em um ambiente compartilhando, com apenas uma única máquina.

Sim, foi isso mesmo que você leu. Todo o time no mesmo computador! Algo como Pair Programming levado ao extremo e ainda mais, além de programar, todo o time participa de atividades como definição de estórias, design, testes e reuniões com o cliente.

Mas de onde veio a ideia de que esse arranjo poderia ser, não apenas produtivo, mas eficiente?

A verdade é que o arranjo veio antes da ideia.

Woody Zuill e sua equipe retomavam um projeto já iniciado, após vários meses no desenvolvimento de outros mais críticos. Com o intuito de recuperar o contexto e inteirar novos membros dos desafios, problemas e soluções encontrados até então, todo o time foi reunido para, juntos, revisitar documentação, código e outros artefatos. A ideia era, então, equalizar o conhecimento do time sobre o projeto e voltar à rotina de desenvolvimento em seguida.

Uma sala de reuniões foi reservada e toda equipe acomodada para algumas horas de trabalho em grupo. O trabalho progrediu e nas primeiras horas já estavam discutindo novas ideias e experimentando código novo. Ao final do dia, e após algumas mudanças de sala, uma rápida reunião de retrospectiva foi feita e todos sentiram que estavam sendo produtivos.

O agendamento de salas de reunião disponíveis para o dia seguinte foi natural. O padrão se manteve por duas semanas e durante esse período o time se referia ao que estava fazendo como Mob Programming. Já em um espaço definitivo e adaptado às necessidades, o projeto retomado foi finalizado e a equipe decidiu continuar trabalhando dessa forma nos projetos seguintes.

Equipe de Woody Zuill em sua sala definitiva.

Como é a dinâmica de trabalho?

O time, familiarizado com Pair Programming e Coding Dojo, começou a passar teclado de mão em mão instintivamente. Adotou-se, então, uma dinâmica de Driver/Navigators .

O trabalho dos Navigators é pensar, descrever, discutir e guiar o que está sendo desenvolvido. Para isso é necessário que haja uma ótima comunicação entre si e com o Driver. O Driver é o indivíduo que, de fato, digita o código ao receber instruções do restante do time e tem um papel mais mecânico, traduzindo o idioma falado em código. A ideia é que todo o código escrito vem dos cérebros e bocas dos Navigators através dos ouvidos e mãos do Driver para o computador.

O intervalo de tempo entre cada rotação de papéis é determinado com base na tarefa e no tamanho da equipe. Esse intervalo deve ser respeitado rigorosamente durante a tarefa mas pode e deve ser reajustado durante as diferentes fases de desenvolvimento. Rotações a cada 10 ou 15 minutos é um bom ponto de partida.

Benefícios

Alguns dos potenciais benefícios são:

  • Responsabilidade compartilhada sobre as decisões.
  • Maior qualidade de código.
  • Mais facilidade de concluir tarefas maiores.
  • Maior integração do time.
  • Oportunidade de disseminar conhecimento entre os membros da equipe.
  • Evita comunicação contraproducente.
  • Evita o desperdício de fazer mais do que o estritamente necessário.
  • Menor débito técnico.

Práticas e princípios

Algumas práticas importantes e princípios do Mob Programming:

  • Tratar todos com gentileza, consideração e respeito.
  • Telefone e Email compartilhados.
  • Uso de sala privativa (evitar interrupções).
  • Uso de um Timer para a alternância de papéis.
  • Todos devem assumir o papel de Driver, mesmo os não programadores.

O Mob Programming seria a melhor escolha para qualquer equipe?

Certamente não. Para colher os melhores frutos a equipe precisa abraçar o processo. Introversão e maior aptidão por trabalho solo são exemplos de características individuais potencialmente limitadoras para a efetividade dessa abordagem.

O que fica claro, através de experiências compartilhadas por diversas equipes, é que a opção pela abordagem, a duração e a regularidade das sessões devem emanar da equipe. Tendo essa liberdade respeitada o time estará livre para experimentar e chegar à melhor configuração.

--

--