Ajedrez - antoniomartel.com

Archivos por Etiqueta: curso

Scrum diario o Daily Scrum

La reunión diaria de Scrum es una reunión de 15 minutos en la que el equipo Scrum se reúne siempre en el mismo sitio y a la misma hora para comentar sus actividades diarias. Cada uno de los miembros del equipo contesta a las siguientes preguntas:

  • ¿Qué hice ayer?
  • ¿Qué haré hoy?
  • ¿Qué me impide avanzar?
Con estas preguntas se sincroniza todo el equipo de trabajo que cada día sabrá qué es lo que han estado haciendo sus compañeros de trabajo y en qué van a trabajar hoy. También sabrán si sus compañeros tienen alguna dificultad o la prevén para un futuro cercano y si pueden ayudar. Esto favorece que surjan cuestiones, dudas y ofrecimientos de ayuda que nos hagan avanzar más rápidamente. Algunas de las frases más útiles que pueden surgir durante estas reuniones son:
  • «No sé cómo añadir la autoridad certificadora a nuestra KeyStore de Java» a lo que otro compañero responde «Yo he hecho esto antes, luego nos vemos y te explico«.
  • «Se me están acabando las tareas antes de ejecutar los nuevos scripts, pronto necesitaré un backup de seguridad de producción» a lo que el Scrum Master podría responder «Le pediré al cliente que realice un export de producción con fecha de mañana a las 03:00 AM«.
  • «Hoy voy a acabar con las historias de usuario para las transferencias periódicas. Pronto se necesitará analizar nuevas historias de usuario con el Dueño del Producto» a lo que el analista responde «Me veré con el Dueño del Producto lo antes posible para que las tengas preparadas antes de comenzar el trabajo«.

A menudo, después de esta reunión, el equipo de desarrollo o algunos de sus miembros se reúnen inmediatamente después para resolver las cuestiones que han surgido. En los ejemplos anteriores se reunirían los dos desarrolladores para explicar cómo añadir la autoridad certificadora al KeyStore, el analista y el Dueño del Producto para describir nuevas historias de usuario y el Scrum Master iría a llamar por teléfono al cliente para programar una exportación de la base de datos de producción.

El trabajo del Scrum Master en esta reunión consistirá en asegurarse de que tenga la reunión todos los días, de cumplir la regla de que sólo los miembros del equipo de desarrollo participan en el Scrum Diario y de que esta reunión se mantenga en los límites de tiempo de 15 minutos por reunión.

Es habitual que en muchas organizaciones esta reunión de Scrum diaria se haga de pie (Daily stand-up meeting) para evitar que los asistentes hablen más de la cuenta y la reunión dure más de 15 minutos. Yo en cambio las prefiero organizar sentados alrededor de una mesa de reunión y escribir en una hoja de papel o en un documento de Google Docs las respuestas a las tres preguntas de la reunión. Luego, una vez terminada la reunión, revisaba cada una de las respuestas y a modo de checklist comprobaba que no quedasen cuestiones sin resolver o que se dijeron en la reunión y no queden en el olvido.

Un problema habitual en muchos equipos Scrum es que las reuniones diarias duren mucho más de los 15 minutos programados, reuniones de pie que duran más de una hora consumiendo el tiempo productivo de los desarrolladores y que llegan a ser temidas por los miembros del equipo de trabajo. Es frecuente también que algunos opinen que 15 minutos no son suficientes para mantener la reunión diaria. Hay diversas razones por las que pasa esto. Algunas de las más habituales son:

Reuniones dentro de la reunión diaria

Dentro de la reunión diaria se quieren mantener las reuniones detalladas para resolver problemas específicos que deberían mantenerse después de la reunión diaria. El equipo de trabajo no debe entrar en cómo añadir la autoridad certificadora a la KeyStore en Java sino que ésto debe quedar para otra reunión inmediata posterior, en la que estén sólo los implicados, para ahondar en esta explicación.

Las cosas no están claras

Falta un objetivo del sprint claro o falta refinamiento en el backlog. Cuando no hay un claro objetivo del sprint es habitual que surjan muchas dudas durante la reunión diaria. Del mismo modo cuando los requisitos de las historias de usuario no están suficientemente bien refinadas y recogidas vuelven a surgir muchas cuestiones en la reunión diaria. Si trabajas en resolver estos puntos, el trabajo diario de los desarrolladores será mucho más claro y conciso por lo que estarán deseando acabar la reunión para continuar con su desarrollo.

Se explica hasta el último detalle

Se entra en especificar hasta el último detalle de la tarea que se está haciendo. Si la reunión dura 15 minutos y en el equipo trabajan 4 desarrolladores tendrá menos de 5 minutos cada uno para responder a las 3 preguntas. Aproximadamente 1 minuto 15 segundos por pregunta. Es realmente muy poco tiempo por lo que hay que ser muy conciso. Hay personas que con esto tienen tiempo suficiente pero otras que realizan un repaso tan completo a cada uno de los detalles en los que están trabajando que requieren al menos el triple de tiempo. Hay que explicarles que se trata de ser breves, explicar a grandes rasgos en qué están trabajando y del límite de tiempo que se tiene para que la reunión sea productiva y para que los demás no se aburran o desconecten de la reunión.

El objetivo del sprint

El objetivo del sprint es la meta que definiremos durante la reunión de planificación del sprint y que nos permite tener una idea clara, en palabras, de qué es lo que conseguiremos si acabamos de implementar todas las funcionalidades definidas para este Sprint. Se trata de dar una función coherente a los elementos de la lista del producto seleccionados para este sprint.

Si por ejemplo desarrollamos una web para la banca online podríamos tener un sprint en el que habría que desarrollar los siguientes elementos:

  • Desarrollar formulario que permita definir transferencias periódicas de dinero (mensuales, trimestrales, anuales).
  • Desarrollar vista que permita ver, anular y modificar transferencias periódicas.
  • Desarrollar módulo backend que permita que las transferencias periódicas programadas se ejecuten a su debido momento.
Para que, a medida que se trabaja, el equipo mantenga el objetivo del sprint en mente podríamos definir la meta del sprint la siguiente:

Permitir crear al usuario transferencias periódicas de dinero.

Sin embargo, con frecuencia tendremos para el sprint una serie de funcionalidades o bugs a resolver que juntos no permiten dar un objetivo o meta clara en común. Pensemos por ejemplo que estamos desarrollando una web de eCommerce en la que, durante la reunión de planificación del sprint, decidimos que las historias de usuario a desarrollar sean:

  • Implementar la forma de pago con PayPal.
  • Añadir varios productos a la vez a la cesta de la compra.
  • Proporcionar sugerencias útiles a los usuarios registrados que ya compraron algo.
  • Corregir bug en producción por el que no se muestra el último elemento de la cesta de la compra cuando éste contiene más de 200 caracteres en su descripción.
  • Corregir bug en producción por el que no se muestran correctamente los caracteres especiales como tildes y acentos del idioma francés.

Para un caso como este en el que no tenemos una narrativa común que defina un objetivo claro para el sprint podríamos definir lo siguiente como meta del sprint:

Objetivo del Sprint: Implementar 3 historias de usuario y corregir todos los errores de producción.

Reunión de planificación del Sprint

Durante esta reunión, mantenida al inicio del Sprint o poco antes de empezarlo, se planifica el trabajo a realizar durante el Sprint. Participarán en ella el Scrum Master, el equipo de desarrollo y el Product Owner.

Para sprints de un mes esta reunión durará un máximo de ocho horas durando menos si el Sprint es más corto de un mes. El Scrum Master se encargará de que la reunión se lleve a cabo, de que todos entiendan para qué es la reunión y que ésta se mantenga dentro de las ocho horas de margen de tiempo.

En esta reunión de planificación calcularemos qué puede entregarse al finalizar el Sprint que va a comenzar y cómo haremos el trabajo para conseguir este objetivo:

Qué puede entregarse al finalizar el Sprint

Con la vista puesta en los objetivos definido por el Dueño del Producto discutiremos con el equipo de Desarrollo qué funcionalidades deberemos desarrollar y si caben dentro del Sprint. Escogeremos de la Lista de Producto esas funcionalidades y las pasaremos a la Lista del Sprint. Si logramos acabar esta selección de elementos de la Lista de Producto dentro del Sprint habremos conseguido el Objetivo del Sprint.

Sólo el equipo de desarrollo puede decir cuantos elementos de la lista de producto entran a formar parte de la lista del sprint. Con la vista puesta en esa lista de producto y en el rendimiento obtenido en sprints pasados, el equipo de desarrollo hará una proyección de hasta donde puede llegar en este sprint.

Cuando el equipo de desarrollo ha finalizado este cálculo de cuantos elementos de la lista de producto puede terminar en el sprint, el equipo Scrum al completo (Scrum Master, Dueño del producto y equipo de desarrollo) deciden cuál será el Objetivo del Sprint (Sprint Goal). Este objetivo estará presente durante todas las semanas de implementación del Sprint y servirá como guía al equipo de desarrollo para saber por qué y para qué se está trabajando en ese sprint

Cómo haremos el trabajo para conseguir el Objetivo del Sprint

 Los elementos de la Lista de Producto (Product Backlog) seleccionados para este Sprint componen la Lista del Sprint (Sprint Backlog) y son los elementos que el equipo de desarrollo implementará para entregarlos al final del Sprint.

El equipo de desarrollo diseñará las funcionalidades y el trabajo necesario a realizar para completar el Sprint y concluirá la reunión con éste trabajo descompuesto en unidades o tareas de un día o menos. A partir de ahí el equipo de desarrollo se auto-organizará para tomar estas tareas y llevarlas a cabo a lo largo del Sprint.

Durante la reunión de planificación el Dueño del Producto explicará lo que hay que desarrollar para poder hacer las nuevas funcionalidades de la Pila del Sprint. El equipo de desarrollo tomará más elementos de la Pila del Sprint si no tiene suficiente trabajo para el Sprint o renegociará con el Dueño del Producto los elementos de esta lista si tiene demasiados.

Al finalizar esta reunión del planificación del sprint tendremos:

  • La Lista o Pila del elementos del Sprint (Sprint Backlog)
  • El Objetivo del Sprint
  • La descomposición de la Lista del Sprint en tareas de 1 día o menos.

El Scrum Master y la organización

¿En qué ayuda el Scrum Master a la organización o empresa en la que trabajamos? En textos anteriores vimos en qué ayudaba el Scrum Master al Product Owner y al Equipo de Trabajo pero ¿y a toda la empresa en su conjunto?

Lo más importante de todo es liderar los cambios en la empresa para poder adoptar Scrum, es decir, ayudar a todos a que entiendan el motivo de las reuniones diarias, las reuniones de demo, la pila del producto, etc. buscar un hueco para estas reuniones y organizarlo todo para poder implementar Scrum en la empresa.

Para hacer esto habrá que planificar la adopción de Scrum en la organización ayudando a poner fechas para una implementación de Scrum gradual y cada vez mayor en la empresa si este es el caso. Por ejemplo podría establecer un calendario para que cada vez más equipos se vayan sumando al uso de Scrum, fijando reuniones de formación previas para explicar cómo se trabaja con Scrum y hacer seguimiento de cómo van estas implementaciones de Scrum en la organización para luego realizar los cambios que sean necesarios que incrementen la productividad de los equipos Scrum.

El Scrum Master tendrá también que ayudar a sus compañeros y empleados en la empresa a entender cómo funciona Scrum y cómo llevarlo a cabo. Debe llevar ese papel de formador o ‘profesor’ de Scrum para hacer que todos entiendan este cambio de paradigma.

Por último el Scrum Master deberá trabajar con los otros Scrum Masters de la empresa para que en conjunto se incremente la efectividad y la productividad de la aplicación de Scrum que se está haciendo en la empresa. Deberán poner en común las cosas que están funcionando o no en la adopción de Scrum y hacer los cambios necesarios para mejorar la aplicación de Scrum en la organización.

El Scrum Master y el Equipo de Desarrollo

El trabajo del Scrum Master no es el de jefe de proyectos ni es sólo el de servir de ayuda al Product Owner (que tampoco es el jefe de proyectos). En el trabajo diario del Scrum Master también debe ofrecer servicios de ayuda al Equipo de Desarrollo además de al Product Owner.

El más importante quizás sea el de eliminar impedimentos para el progreso del Equipo, es decir, ayudar en lo que el equipo necesite para tener su trabajo preparado y no tener que estar esperando por nada. Si por ejemplo se necesita solicitar una exportación de la base de datos antes de realizar algún trabajo, será trabajo del Scrum Master realizar estas gestiones para que el Equipo de Desarrollo lo tenga preparado a tiempo y no tenga que quedarse esperando a que esto se resuelva.

Otro de los puntos importantes en los que debe trabajar el Scrum Master es en el de guiar al Equipo de Desarrollo en ser autoorganizado y multifuncional. Los equipos de desarrollo normalmente esperan que alguien les asigne las tareas y a encargarse sólo de aquellas tareas que pone el título de su contrato. El Scrum Master debe intentar cambiar este paradigma haciendo que cambie esta mentalidad para que el Equipo de Desarrollo sepa elegir sus propias tareas (de acuerdo por supuesto a la priorización hecha por el Product Owner) y a encargarse de todas las tareas sin derivarlas a otros departamentos porque ellos son los especialistas (departamentos de administradores de bases de datos o de analistas para que ellos hagan el análisis o un import o export de bases de datos).

Entre los trabajos del Scrum Master también está el de organizar los eventos o reuniones de Scrum para facilitar que éstas sucedan. Deberá organizar la reunión diaria, la reunión de demo, la reunión de retrospectiva, procurar que todos asistan y que sea del máximo provecho para todos los interesados.

También deberá servir al Equipo de Desarrollo para ayudarlo a crear productos de alto valor que no quiere decir que tengan un nivel de calidad alto, que se da por supuesto, sino a que el Equipo de Desarrollo esté centrado en producir funcionalidades y características que le aporten el máximo valor o utilidad al producto que se está construyendo.

Por último, y no menos importante, el Scrum Master deberá guiar al Equipo de Desarrollo cuando éste no ha trabajado nunca con Scrum para ayudarles en su adopción y en que sea completamente entendido por todo el equipo.

Suscríbete

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad