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?
Respuestas:
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?
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í:
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.
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:
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:
fuente
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:
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.
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.
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.
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.
fuente
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.
fuente
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.
fuente