Scrum: ¿con qué están ocupados los miembros del equipo durante un sprint?

33

Entonces, un scrum sprint es un período de tiempo fijo durante el cual se debe implementar un conjunto específico de características. Y un equipo de scrum está formado por todas las personas comprometidas con la entrega de esas características, la mayoría de las cuales suelen ser desarrolladores y evaluadores.

Una vez establecidas estas reglas, uno podría preguntarse cómo mantener ocupadas a todas estas personas durante todo el sprint. Al comienzo del sprint todavía no hay nada que probar, y al final del sprint generalmente no queda nada o muy poco por desarrollar / arreglar.

He visto 2 enfoques para manejar esto, pero ninguno de ellos parece resolver adecuadamente el problema.

1) Deje que los miembros del equipo decidan qué hacer cuando no tengan tareas.

Contras:

  • Si lo que hacen no se planifica a fondo (es decir, una refactorización importante, cambiar a un nuevo marco de prueba), su trabajo puede resultar inútil o quedar atrapado a mitad de camino
  • Por otro lado, planificar dicho trabajo puede llevar mucho tiempo, y el cliente puede sentirse decepcionado al ver que el equipo pierde tiempo en algo que no aporta valor inmediato
  • Tales tareas generalmente no se pueden estimar a fondo, por lo que es bastante fácil para los trabajadores sin principios pasar su tiempo mirando gatos de YouTube sin que se refleje en el tablero de scrum o en cualquier otro lugar

2) Haga espacio en el sprint solo para el desarrollo y comience a probar después de que el sprint haya finalizado (cuando los desarrolladores comiencen a trabajar en las características del próximo sprint)

Contras:

  • Al desarrollar funciones para el sprint actual, los desarrolladores se distraen al corregir los errores del anterior, y pueden fallar en realizar la cantidad de trabajo que se estimó que se realizó durante el sprint actual
  • Se necesitan dos tableros de scrum: uno para las características de sprint actuales y otro para los errores de sprint anteriores

Entonces, mi pregunta es: ¿cómo distribuir adecuadamente el trabajo durante el sprint entre desarrolladores y evaluadores para que nadie se sobrecargue con el trabajo o termine sin tareas en ningún momento? ¿Hay formas de mejorar los enfoques descritos anteriormente? ¿O hay mejores enfoques?

Holdenmcgrohen
fuente
9
Parece que te estás enamorando del mito
Nathan Cooper
1
@holdenmcgrohen ¿Cómo se hacen las estimaciones, planeando póker u otra cosa?
Robbie Dee
3
Los probadores deberían estar escribiendo casos de prueba el primer día. Todo lo que necesitan hacer son las historias. Si los desarrolladores tienen un tiempo de inactividad significativo durante el sprint, significa que no está tomando suficientes historias. Además, presumiblemente si sus evaluadores son buenos, mantendrán a sus desarrolladores ocupados con informes de errores cerca del final del sprint. Además, idealmente, tiene las pocas historias principales en la cartera de pedidos desarrolladas, por lo que, en el peor de los casos, los desarrolladores pueden trabajar en una de las mejores parejas de la cartera de pedidos.
Gort the Robot
1
@holdenmcgrohen, también enfrentamos un problema similar en nuestro proyecto. Hemos comenzado a agregar historias Stretch (no deberían ser ' must have ') como parte del sprint y solo se selecciona cuando los desarrolladores no tienen tareas. Ahora este enfoque nos ayuda a mantener ocupado al probador en los primeros días del próximo sprint.
user6005214
1
Recuerde que en la mayoría de los sprints está seleccionando un subconjunto de tareas de una cartera de pedidos . Si completa todo lo que se comprometió, obtiene una ventaja inicial en el próximo sprint al comenzar a trabajar en más elementos de la cartera de pedidos; al igual que si se atropella, extrae menos elementos de la cartera de pedidos en el próximo sprint. puede terminar los que no fueron terminados. Volcar el dogma; tenga en cuenta que el propósito de la herramienta es servirle, no que usted sirva la herramienta.
keshlam

Respuestas:

49

Al comienzo del sprint todavía no hay nada que probar

De Verdad? ¿No tienes requisitos para validar? No hay discusiones para tener con su cliente? No hay marcos de alambre para evaluar? No hay planes de prueba para pensar?

al final del sprint normalmente no queda nada o muy poco para desarrollar / arreglar

Nunca he estado en ese lugar en un proyecto. ¿No hay más trabajo que hacer? Siempre hay algo ¿Todas sus pruebas están completamente automatizadas? ¿Cómo se ve tu CI? ¿Se podría refactorizar la capa de acceso a la base de datos para que sea más simple? Y nunca he trabajado en nada con una lista de errores vacía y una acumulación. ¿Qué solían hacer sus desarrolladores en una fase de prueba en cascada?

Sé que algunas personas se vuelven muy religiosas sobre lo que es y lo que no es 'SCRUM'. No podría importarme menos eso. Pero creo que tienes dos problemas aquí:

  1. Un departamento de control de calidad `` tradicional '' que prueba el código una vez que los desarrolladores lo `` terminan '' en lugar de trabajar con clientes y desarrolladores para asegurarse de que está construyendo lo correcto y lo correcto. Echa un vistazo a los ágiles cuadrantes de prueba de Lisa Crispin. Los mejores probadores están involucrados en cada etapa del ciclo de vida del desarrollo de software y los mejores desarrolladores escriben sus propias pruebas.

  2. Intentar apegarse demasiado a un cronograma SCRUM de sprints de 1 semana / 2 semanas sin tener una acumulación de prioridades y tamaños divididos en tareas que son lo suficientemente fáciles de completar en un corto período de tiempo en un solo sprint. Si tuviera esto, entonces siempre habría más trabajo para seguir adelante. Tal vez la última característica en la que trabajas en este sprint no llegue al lanzamiento de este sprint, pero siempre puede pasar al siguiente.

Aparte. Si tienes un pequeño equipo cohesionado, los roles son menos importantes. En lugar de tener a alguien con el probador de etiquetas a quien no se le permite escribir código de producción, o alguien etiquetado como desarrollador que cree que está por encima de las pruebas, todos deberían hacer lo que sea necesario para que el equipo tenga éxito, incluidas las temidas tareas de gestión de proyectos cuando son necesarios, esto se llama un equipo multifuncional.

Un punto extra mencionado por @Cort Ammon en los comentarios. El manifiesto ágil habla sobre la colaboración del cliente sobre la negociación del contrato. Tu dices eso:

el cliente puede sentirse decepcionado al ver que el equipo pierde tiempo en algo que no aporta valor inmediato

Puede ser difícil de explicar y entiendo que los clientes pueden ser muy difíciles a veces, pero esto sería una gran señal de alerta para mí. Confían en usted con su código fuente / relación con el cliente / negocio / lo que sea que esté desarrollando para ellos. Si no pueden confiar en usted para que actúe profesionalmente en su mejor interés, entonces usted tiene un problema o ellos lo tienen.

He escrito una publicación que habla sobre los desarrolladores de software que no se consideran profesionales. Un médico profesional, un abogado, un ingeniero civil enfrentado a un cliente que cambió los requisitos a mitad de camino no solo reduciría la calidad y lamentaría al respecto. Les dirían a sus clientes que sería un problema. Si el cliente presionó, entonces un profesional no solo lo haría ciegamente a un nivel peligrosamente inferior porque sería responsable. No tomamos exámenes de ingreso profesionales y, por lo tanto, no somos responsables. Eso no significa que no debamos tratar de ser mejores.

En resumen, no me preocuparía demasiado tratar de lograr que las personas sean más eficientes al principio y al final de un sprint, sino más bien verlo como un síntoma de un problema más amplio dentro del equipo. ¿Has oído hablar de eXtreme Programming (XP) . Diría que los principios de XP para aplicar aquí son la comunicación y el respeto:

  • Respeta a tu equipo para hacer lo que ellos piensan que es lo mejor. Yo diría que si hay muchos videos de gatos, entonces tienes desarrolladores pobres o los estás tratando mal.
  • Comunicación. Si sus desarrolladores están hablando entre ellos, con los probadores, con la administración, con el cliente, entonces probablemente todos deberían tener una buena idea de lo que sigue y, si no lo hacen, simplemente pueden preguntar.
Encaitar
fuente
Si, si y si. Encuentra la respuesta en todos los sentidos.
David Arno
Buena respuesta: el último párrafo necesita trabajo. Plantea y explica los puntos aquí en lugar de señalar algún tomo.
Robbie Dee
1
¿Qué solían hacer sus desarrolladores en una fase de prueba en cascada? - No quise comparar scrum con cascada, sino más bien con enfoques similares a los kanban, donde siempre hay una lista de tareas pendientes que ya están evaluadas y priorizadas. La acumulación de scrum contiene características que el equipo no examinó correctamente, por lo que si un solo desarrollador (que actualmente no tiene características en las que trabajar) decide comenzar a implementar una de ellas en medio del sprint, esto puede tener consecuencias inesperadas. .
holdenmcgrohen
@holdenmcgrohen lo suficientemente justo. Mi estimación siempre es terrible, lo cual trato de explicar, por lo que siempre me gusta tener algo a continuación. Creo que las pausas diarias y el emparejamiento pueden ayudar aquí, si sus desarrolladores no se quedan solos por mucho tiempo, no pueden alejarse demasiado.
Encaitar
@Encaitar Grandes cosas +1
Robbie Dee
20

El primer punto es que Scrum se trata de optimizar el equipo , no cada individuo. Si el equipo es productivo y eficiente, no importa mucho si alguien está inactivo al comienzo o al final de la tarea.

Sin embargo, en cada equipo en el que he estado, siempre hay mucho trabajo. Permítame abordar un par de sus preocupaciones específicas:

Al comienzo del sprint todavía no hay nada que probar,

Si bien eso puede ser cierto en un sentido literal, implica que cree que el único trabajo para un probador es "probar". Se puede hacer mucho antes de que comiencen a realizar la prueba. Por un lado, pueden reunirse con el propietario del producto y los desarrolladores para comprender completamente los requisitos. Pueden estar ocupados trabajando en un plan de prueba, recopilando datos de prueba, etc. Si tienen el lujo de un buen marco, pueden comenzar a escribir pruebas automatizadas con anticipación.

al final del sprint normalmente no queda nada o muy poco para desarrollar / arreglar

Todavía no he visto un equipo de desarrollo que se haya quedado sin cosas que arreglar. Sin embargo, eso no es lo que deberían estar haciendo al final del sprint. Hacia el final del sprint deberían estar ayudando a los probadores a probar el producto. Pueden ayudar a escribir pruebas automatizadas, pueden revisar pruebas de código y accesorios / palabras clave / etc. escritos por los probadores. Pueden trabajar con el equipo de documentación para ayudarlos a terminar su trabajo, etc.

He visto 2 enfoques para manejar esto ... 1) Deje que los miembros del equipo decidan qué hacer cuando no tengan tareas.

La falla en su pensamiento es que las personas se quedan sin tareas. Las tareas pertenecen al equipo en su conjunto. No deberían estar haciendo otro trabajo mientras haya historias o tareas restantes para el equipo en el sprint actual.

Haga espacio en el sprint solo para el desarrollo,

Este enfoque no está dentro de la definición tradicional de scrum o ágil. El punto de agile es que todo un equipo está involucrado en el trabajo hacia un objetivo común. Eso significa que todo el trabajo requerido para terminar una historia debe estar representado en un sprint: diseño, desarrollo, pruebas, documentación, etc.

Finalmente, esta no es la única otra solución viable. Usted descuida la verdadera solución, que es que cada miembro del equipo debe contribuir según sea necesario para ayudar a terminar las historias en un sprint.

El objetivo es un objetivo de equipo , pero estás escribiendo como si cada persona individual tuviera objetivos individuales ("terminar mis tareas"). Si alguien no tiene nada que hacer, puede ver en qué se está trabajando actualmente y ofrecer ayuda. O bien, pueden tomar la siguiente tarea o historia y comenzar a trabajar en ella.

Bryan Oakley
fuente
1
+1. Los procesos ágiles requieren holgura. Para optimizar un sistema, a menudo tiene que desoptimizar los subprocesos. En este caso, lo dijiste mejor con "optimizar el equipo". Cualquier otra cosa es un síntoma de la falacia de la utilización.
CodeGnome
Al comienzo de mi carrera, me enfrenté a algunas compañías que esperaban candidatos para trabajar en PHP, Java, C #, aplicaciones de escritorio (VB), QA (automatizado, manual), Photoshop, CSS, etc. En ese momento, la industria consideraba que esas empresas eran menos profesionales debido al valor de especialización. Me pregunto si el mismo patrón gana aceptación (incluso se convierte en necesidad) bajo Agile.
kuldeep.kamboj
1

En todas las tiendas ágiles en las que he trabajado, los probadores se consideran pollos, por lo que no están en el tiempo como los desarrolladores. Antes de tener en sus manos el software, los evaluadores deben escribir planes y asegurarse de que los entornos estén configurados correctamente para recibir el software. Como parte de esto, deberían mirar cualquier documento de diseño tal como es.

A continuación, debe buscar llenar el sprint. No debería haber tiempo libre al final del sprint si las estimaciones son buenas, aunque, por supuesto, la estimación es un arte negro, por lo que rara vez se llena exactamente .

Si un desarrollador tiene tiempo libre al final del sprint, este tiempo aún debe rastrearse para asegurarse de que está agregando valor (aprender un nuevo marco, hacer análisis, realizar más pruebas, etc.).

La corrección de errores es una actividad perfectamente aceptable para poner en un sprint. Contribuye a una característica y, por lo tanto, agrega valor. Esto no debe verse como el tiempo robado del siguiente sprint, terminando más adecuadamente una característica.

Robbie Dee
fuente
8
Lea la guía de Scrum . Quizás encuentres la parte donde dice que está bien dividir el equipo de desarrollo en probadores y desarrolladores (pista, no lo harás).
Nathan Cooper
3
El documento no dice que tiene miembros del equipo de desarrollo con especialidades, pero no puede dividir un grupo para tratarlo como "pollos".
Nathan Cooper
55
Para los votantes caídos, ¿qué parte de la capacitación Ágil se perdió donde especifica que debe adoptar una estrategia que funcione para su equipo ? El equipo de Robbie Dee adoptó lo que funcionó para ellos en sus circunstancias únicas con su proyecto único y las limitaciones ambientales. Cada empresa tiene barreras ambientales y "daños" que deben ser eliminados. Esto parece un enfoque perfectamente aceptable para la pregunta que se hizo . La pregunta no era sobre la mejor manera de organizar a los evaluadores y los esfuerzos de prueba en su equipo de sprint.
maple_shaft
44
No. El OP preguntó específicamente sobre Scrum. No puedes hacer lo que quieras y llamarlo Scrum. Puede o no ser ágil, pero hacer que porciones de su "equipo" interfuncional sean tratadas como recursos externos o como cualquier otra cosa que no sean miembros de primera clase del equipo de desarrollo no es Scrum.
CodeGnome
2
@CodeGnome es absolutamente correcto y toca un punto que siempre menciono : Agile es una filosofía, Scrum es una implementación de esa filosofía. Los dos no son lo mismo, y se rigen por reglas separadas. (Sí, Scrum vino primero, pero luego se actualizó para ser una implementación ágil)
-2

En un mundo ideal, su equipo sería multifuncional . Todos tienen su especialización, pero todos pueden trabajar como otra especialización también. Si sus evaluadores no pueden codificar las tareas más simples, entonces no tiene un equipo multifuncional.

La forma SCRUM sería permitir que su equipo sea multifuncional. Sus evaluadores deben tener habilidades para la automatización de pruebas de todos modos, es un paso corto para codificar algunas de las cosas menos complejas.

nvoigt
fuente
66
Las personas con forma de T son una cosa, hacer que los evaluadores escriban código (a menos que estemos hablando de automatización de pruebas) es otra muy distinta.
Robbie Dee
2
¿Esto solo supone que solo los probadores tienen tiempo de inactividad en el sprint? Los desarrolladores también tienen tiempo de inactividad.
maple_shaft
Supongo que los desarrolladores pueden hacer pruebas sin más capacitación. Donde vivo es parte de la educación y el trabajo.
nvoigt