O que é “swarming”?

42

Eu ouvi swarming mencionado no contexto de Programação Ágil ou Extrema. Parece ser um complemento ao pareamento.

O que exatamente é isso? Quando deve ser aplicado? Como você faz isso bem?

    
por Jay Bazuzi 07.05.2012 / 22:18
fonte

4 respostas

43

A ideia é que todos da sua equipe trabalhem na mesma história ao mesmo tempo. Em vez de todos se concentrarem em tarefas diferentes, todos se concentram em uma tarefa de cada vez até que seja concluída. Então eles passam para a próxima coisa, onde todos trabalham juntos.

Isso ajuda as equipes que lutam para completar as histórias antes do final do sprint. Muitas vezes as equipes terminam com 80% de todas as histórias, mas nenhuma está completa. Isso é menos útil do que terminar completamente 80% das matérias, já que as histórias inacabadas não têm (efetivamente) nenhum valor para o usuário final. É mais fácil conseguir histórias concluídas quando todos da equipe estão se concentrando em uma história por vez. Essa é a motivação por trás da enxameação.

Existem algumas dificuldades aqui. Por exemplo, o controle de qualidade nem sempre pode testar as coisas antes de elas serem construídas (ou até projetadas). Nesse caso, você deve estabelecer um projeto juntos no início e, em seguida, o controle de qualidade pode gravar (inicialmente falhar) testes contra o projeto e não a implementação real.

    
por 07.05.2012 / 22:21
fonte
11
Enxame apenas se refere ao fato de que várias pessoas trabalham juntas para completar uma tarefa ou história. Na minha experiência, isso não é algo que você faz com frequência.

Normalmente, cada membro da minha equipe trabalha em uma tarefa diferente e / ou em uma história diferente. Se alguém está ficando para trás, ou se há um desejo de terminar uma tarefa ou história cedo, outras pessoas vão parar de trabalhar em outras tarefas e "enxame" para completar a tarefa, o que significa que todas trabalham juntas em uma única tarefa ou história. está completo.

Recentemente, tivemos um pequeno número de histórias que foi um trabalho bastante chato e desinteressante. Eu dei à equipe um pequeno incentivo (pizza) e prazo (fim do dia) para terminar o trabalho, então eles se apinharam na história e eliminaram pelo menos dois dias de trabalho em uma tarde. Eles fizeram o trabalho e saíram do caminho mais cedo, então cada membro da equipe voltou para o que quer que estivesse trabalhando. Eles conseguiram um almoço grátis, eu trabalhei cedo o que poderia ter se arrastado devido a sua natureza monótona, e a equipe se adiantou em seu sprint. Vencer vence-ganha.

"Swarming" nada mais é do que um termo chique para "ei, vamos ajudá-lo com isso".

    
por 08.05.2012 / 03:59
fonte
2
O enxame é, na verdade, um conceito central para a agilidade. Não é algo que é feito "quando há problemas". A enxameação, em sua forma mais simples, significa que as equipes trabalham de forma colaborativa em itens (histórias) e as trabalham até a conclusão. O conceito central é "sair da partida e começar a terminar". Em outras palavras, em vez de cada desenvolvedor trabalhar de forma independente em uma história, a equipe se concentra em um conjunto mais limitado de histórias / tarefas e faz com que cada item seja feito mais cedo. Pense nisso como a diferença entre um sistema single-threaded e multi-threaded. Se uma história de usuário tiver 10 tarefas a serem executadas, e cada uma tiver 8 horas, supondo que não houve complicações, um desenvolvedor poderia trabalhar cada tarefa em seqüência e concluir a história em 80 horas, ou cerca de duas semanas de 8 dev horas por dia). E se dois desenvolvedores dividissem as tarefas e trabalhassem ao mesmo tempo? As mesmas 80 horas de trabalho podem ser concluídas dessa maneira em uma semana. Adicione um terceiro, e você pode ver agora que pode ser feito em 3 a 4 dias.

O enxame pode ser feito de várias maneiras:

  1. Programação em Par (dois desenvolvedores sentados lado a lado para trabalhar no código, um é o "driver" escrever o código, o outro é o navegador, mantendo a direção de longo prazo em mente e ajudando a revisão de código simultaneamente.
    1. Trabalho em par: um desenvolvedor e um testador trabalham simultaneamente no mesmo trabalho, um de codificação e outro de teste, automatizando a escrita etc.
    2. Pululando como eu mencionei acima, o que é muito comum. Normalmente, os membros da equipe enxameiam uma história, mas cada um possui tarefas individuais nesse método.
    3. Programação da turma: toda a equipe está focada em uma história (ou até tarefa) de cada vez.

Equipes que dão uma história para cada desenvolvedor tendem a ter muito "trabalho em progresso" ou WIP, e muitas vezes muitas histórias começam, mas não são feitas. Este é um ANTIPADRÃO e NÃO é uma prática recomendada.

Equipes que pululam tendem a ter menos WIP e completam mais histórias - e, por fim, quero dizer Desenvolvido, Testado, Aprovado, pronto para implantar. Assim, esta é uma prática que é essencial para a agilidade.

    
por 20.03.2017 / 22:56
fonte
1

O seguinte artigo no InfoQ descreve uma abordagem para enxamear:

  • A equipe usa a programação da máfia para a maioria das tarefas de codificação
  • Partes da equipe ou membros individuais da equipe geralmente se separam e se juntam à equipe em intervalos curtos
  • Todo mundo faz tudo (sem papéis)
  • A equipe não está usando estimativas, a WIP é sempre uma, não há necessidade de apresentações em pé ou cerimônias similares

Leia o artigo para a explicação detalhada.

    
por 11.10.2017 / 00:29
fonte