¿Qué es el "enjambre"?

42

He escuchado a enjambre mencionado en el contexto de la programación ágil o extrema. Parece ser un complemento para el emparejamiento.

¿Qué es exactamente? ¿Cuándo se debe aplicar? ¿Cómo lo haces bien?

    
pregunta Jay Bazuzi 07.05.2012 - 22:18

4 respuestas

42

La idea es que todos los miembros de su equipo trabajen en la misma historia al mismo tiempo. En lugar de que todos se centren en tareas diferentes, todos se enfocan en una tarea a la vez hasta que se completa. Luego pasan a la siguiente cosa, donde todos trabajan juntos en ello.

Esto ayuda a los equipos que luchan por completar historias antes del final del sprint. A menudo los equipos terminan el 80% de todas las historias, pero ninguna está completa. Esto es menos útil que terminar por completo el 80% de las historias, ya que las historias no terminadas no tienen (efectivamente) valor para el usuario final. Es más fácil completar las historias cuando todos los miembros del equipo se centran en una historia a la vez. Esta es la motivación detrás del enjambre.

Hay algunas dificultades aquí. Por ejemplo, el control de calidad no siempre puede probar las cosas antes de que se construyan (o incluso se diseñen). En este caso, debe establecer un diseño en conjunto desde el principio, y luego QA puede escribir (inicialmente fallando) pruebas contra el diseño y no con la implementación real.

    
respondido por el Oleksi 07.05.2012 - 22:21
11

Swarming simplemente se refiere al hecho de que varias personas trabajan juntas para completar una tarea o historia. En mi experiencia, esto no es algo que haces a menudo.

Normalmente, cada miembro de mi equipo trabaja en una tarea diferente y / o una historia diferente. Si alguien se está quedando atrás, o si hay un deseo de terminar una tarea o historia antes, otras personas dejarán de trabajar en otras tareas y se "enjambrarán" para completar la tarea, lo que significa que todos trabajarán juntos en una sola tarea o historia hasta que se completa.

Hace poco tuvimos un pequeño número de historias que fueron un trabajo bastante aburrido y poco interesante. Le di al equipo un pequeño incentivo (pizza) y una fecha límite (al final del día) para terminar el trabajo, así que enjambraron la historia y eliminaron al menos un par de días de trabajo en una tarde. Terminaron el trabajo y se retiraron antes de tiempo, luego cada miembro del equipo volvió a lo que estaba trabajando. Obtuvieron un almuerzo gratis, hice el trabajo temprano que podría haberse prolongado debido a su naturaleza aburrida, y el equipo se adelantó a su carrera. Ganar ganar ganar.

"Swarming" no es más que un término elegante para "hey, déjanos ayudarte con eso".

    
respondido por el Bryan Oakley 08.05.2012 - 03:59
2

Enjambre es en realidad un concepto central para la agilidad. No es algo que se hace "cuando hay problemas". El enjambre, en su forma más simple, significa que los equipos trabajan en colaboración en artículos (historias) y los completan. El concepto central es "dejar de comenzar y comenzar a terminar". En otras palabras, en lugar de que cada desarrollador trabaje de forma independiente en una historia, el equipo se enfoca en un conjunto más limitado de historias / tareas y realiza cada elemento antes. Piense en ello como la diferencia entre un sistema de un solo hilo y varios hilos. Si una historia de usuario tiene 10 tareas que deben realizarse, y cada una es de 8 horas, suponiendo que no hubo complicaciones, un desarrollador podría trabajar cada tarea de forma secuencial y completar la historia en 80 horas, o aproximadamente dos semanas (se le dará un sprint de 10 días). de 8 horas dev por día). ¿Qué pasa si dos desarrolladores dividen las tareas y las trabajan simultáneamente? Las mismas 80 horas de trabajo se pueden completar de esta manera en una semana. Agregue un tercero, y puede ver que ahora se puede hacer en 3 a 4 días.

El enjambre se puede hacer de varias maneras:

  1. Programación de pares (dos desarrolladores sentados lado a lado para trabajar en el código, uno es el "controlador" que escribe el código, el otro es el navegador, teniendo en cuenta la dirección a largo plazo y ayudando a Revisión del código simultáneamente.
    1. Trabajo en parejas: un desarrollador y un probador trabajan simultáneamente en el mismo trabajo, una codificación y la otra prueba, automatización de escritura, etc.
    2. Enjambre como lo mencioné anteriormente, lo cual es muy común. Normalmente, los miembros del equipo pululan una historia, pero cada uno posee tareas individuales en este método.
    3. Programación de la mafia: todo el equipo se centra en una historia (o incluso una tarea) a la vez.

Los equipos que brindan una historia a cada desarrollador tienden a tener demasiado "trabajo en progreso" o WIP, y con frecuencia muchas historias comienzan pero no se hacen. Este es un ANTI-PATTERN, y NO son las mejores prácticas.

Los equipos que enjambran tienden a tener menos WIP y completar más historias, y al hacerlo, me refiero a Desarrollado, Probado, Aprobado, listo para desplegar. Por lo tanto, esta es una práctica que es el núcleo de la agilidad.

    
respondido por el Curtis Reed 20.03.2017 - 22:56
1

El siguiente artículo en InfoQ describe un enfoque para el enjambre:

  • El equipo usa la programación móvil para la mayoría de sus tareas de codificación
  • Algunas partes del equipo o miembros individuales del equipo a menudo se dividen y se unen al equipo en intervalos cortos
  • Todo el mundo hace todo (sin roles)
  • El equipo no está utilizando estimaciones, WIP siempre es uno, no hay necesidad de enfrentamientos ni ceremonias similares

Lea el artículo para la explicación detallada.

    
respondido por el Dan 11.10.2017 - 00:29

Lea otras preguntas en las etiquetas