Cómo mejorar nuestras reuniones diarias de SCRUM usando el API de Jira

Trabajar con metodologías ágiles es una prioridad en Paradigma. Dedicamos mucho tiempo y esfuerzo en formación y mejora continua para conseguir aportar valor a nuestros clientes apoyándonos en estas metodologías. El marco de trabajo más extendido en los proyectos de Paradigma es SCRUM. A través de esta metodología establecemos una serie de reuniones que se deben realizar periódicamente, por ejemplo, la reunión de planificación o la retrospectiva.

1

En este post vamos a centrarnos en la reunión diaria o daily y cómo la hemos mejorado en uno de nuestros proyectos para una gran operadora de telecomunicaciones.

El objetivo de la reunión diaria es facilitar la transferencia de información y la colaboración dentro del equipo para aumentar su productividad. Cada miembro del equipo analiza el trabajo que el resto está realizando (dependencias entre tareas, progreso hacia el objetivo de la iteración, obstáculos que pueden impedir este objetivo…) en un slot de tiempo limitado, de manera que la reunión no debería superar los 15 minutos.

En este proyecto la herramienta que el cliente nos pide que usemos para gestionar las tareas e historias de usuario es JIRA, una de las más extendidas y completas, pero a la vez una de las más complejas.

Durante los procesos de mejora continua interna de Paradigma, uno de los puntos a mejorar que detectamos fue la necesidad de visualizar el estado y el avance de las tareas de cada miembro del equipo durante la reunión diaria. Algunos equipos de la casa habían solucionado este problema usando paneles físicos para gestionar las tareas, pero en nuestro caso esto no era posible ya que el uso de JIRA era un requisito del cliente. Además, no teníamos posibilidad de modificar y configurar las vistas de la herramienta como nos interesaba ya que la instancia que usamos la proporcionaba el cliente dentro de su set de herramientas corporativas y no era posible realizar cambios.

Entonces, ¿cómo poder visualizar el estado de las tareas de una manera sencilla y sincronizada en tiempo real con un JIRA que no podemos modificar? La respuesta para nosotros fue usar el API de JIRA.

JIRA nos ofrece un API REST muy bien documentada y con una gran potencia que nos permite hacer todo tipo de consultas y operaciones. De esta manera se puede obtener fácilmente la información detallada de las tareas en formato JSON, lo que resulta muy conveniente.

En Paradigma hemos desarrollado una pequeña aplicación web basada en Python y Flask que hace uso de este API para mostrar en tiempo real el estado de las tareas de cada miembro del equipo en una vista sencilla que nos ayuda en nuestras reuniones diarias. Paradigma ha liberado el código fuente en Github para que cualquiera la pueda descargar, utilizar y mejorar: https://github.com/paradigmadigital/jira-daily-dashboard

 

La aplicación hace uso de la biblioteca de JIRA para Python (https://pythonhosted.org/jira/) que nos abstrae del API REST que ofrece JIRA y nos permite realizar queries y manejar los resultados de una forma muy sencilla en Python.

diagrama

De esta manera podemos lanzar queries usando la propia sintaxis JQL, el lenguaje avanzado de búsqueda de JIRA. Por ejemplo, para obtener las user stories del sprint 3 del proyecto “Mi Proyecto”, podríamos hacer:

from jira.client import JIRA

jira = JIRA({'basic_auth': (JIRA_USER, JIRA_PASSWORD)})

query = ‘project = “Mi Proyecto” and sprint = “Sprint 3”’

issues = jira.search_issues(query, maxResults=100)

 

Así podemos ejecutar fácilmente queries usando toda la potencia que nos permite JQL. En nuestro caso lo que nos interesaba ver era las tareas de un sprint asignadas a una persona en concreto para posteriormente iterar sobre ellas, segmentarlas por estado y poder presentarlas en un panel virtual, mostrando la información más relevante como por ejemplo: el estado de la tarea, el avance o el acceso directo a la información detallada.

De esta manera podemos tener un panel similar a lo que sería un panel físico tradicional con post-its, que podemos ver en un televisor o un proyector y actualizarlo en tiempo real, lo que nos permite tener un visión automáticamente actualizada del estado del sprint.

Con esta herramienta hemos conseguido hacer más ágiles, rápidas y productivas nuestras dailies. Por un lado, cada miembro del equipo puede apoyarse en el panel para explicar al resto sus avances e impedimentos y, por otro, el resto del equipo mantiene más la atención y entiende mejor las tareas y los avances al poder visualizarlos.

Más allá de la solución encontrada para este problema concreto, lo realmente importante es conseguir la motivación necesaria para que sean los propios equipos los que propongan soluciones. Esto lleva directamente a una mejora continua que logra sobreponerse a las dificultades que van surgiendo por el camino.

Manuel Zaforas es Ingeniero Superior en Informática por la UPM. Está interesado en HPC, IoT, Cloud, NoSQL, Big Data, Data Science, Machine Learning y Agile. Apoya activamente la implantación de software libre, la calidad en los procesos de desarrollo de software a través de la mejora continua y la innovación en las metodologías de desarrollo y gestión de equipos. Actualmente trabaja en Paradigma como Scrum Master y Arquitecto Software.

Ver toda la actividad de Manuel Zaforas

Recibe más artículos como este

Recibirás un email por cada nuevo artículo.. Acepto los términos legales

9 comentarios

  1. Juanma Alfonso dice:

    Muy chulo equipo! Es difícil encontrar la solución para no tener que tener tareas en el tablón y en alguna herramienta pero de esta forma parece posible!

  2. Manuel Zaforas dice:

    ¡Gracias Juanma! nosotros lo hemos conseguido, espero que la idea pueda valer a más equipos.

  3. Enrique dice:

    Hola Manuel,

    Buen artículo. Nosotros utilizamos una vista que tiene como filtros los nombres de cada miembro del equipo. Cuando un filtro es seleccionada se ven las tareas de esa persona en el sprint actual.

    • Manuel Zaforas dice:

      Gracias Enrique.
      Los filtros de Jira son muy potentes y una buena alternativa, lo que no nos convencía a nosotros es la visualización en forma de lista ya que buscábamos algo más sencillo y visual que se viese bien en una pantalla.

  4. Manuel Prida dice:

    Muy interesante Manuel, enhorabuena!

  5. Carlota dice:

    Muy interesante el artículo y la propuesta. Yo estoy intentando instaurar un sistema similar en mi equipo por que le veo un gran potencial.
    Un saludo

  6. Juan dice:

    Manuel muy interesante tu post y útil, sobre todo cuando mencionas los temas de motivación desde el propio equipo y la búsqueda de mejora.

  7. Hola! Muy buen post.. justo lo vi en Twitter.. mira te cuento a ver si por ahí me apoyas.. en la empresa nosotros usamos scrum para proyectos nuevos y kanban para los que ya mantenemos… pero se me hizo complicado usar los daily ( 15 min máximo diario) ya q la reunión siempre se extendía hasta mas de 30 min y perdíamos nucho tiempo.. la metodología era q la noche anterior la gente documentaba en confluence su daily del día siguiente.. (q hizo ayer, q errores tuvo, q ver a trabajar / mejorar hoy ).. y al día siguiente cada uno exponía todos sus tickets… pero nos tomaba mucho tiempo… alguna idea de como hacer más productivo los daily ? Me serviría de mucho.. muchas gracias de antemano

    • Manuel Zaforas dice:

      Hola Hugo, muchas gracias por tu comentario. Si vuestra daily se convierte en un reporting basado en confluence quizá deberíais de cambiar el enfoque, hay que recordar que la daily es una reunión de sincronización y no de reporte.

      Tener a mano la lista de tickets o tareas puede ayudar pero lo importante es que cada miembro del equipo comente que hizo para alcanzar el objetivo del sprint, que pretende hacer hoy y que impedimentos tiene para alcanzar este objetivo. Todo lo que no esté directamente relacionado con alcanzar el objetivo es superfluo y no debería comentarse aquí.

      Por otro lado puedes probar a usar técnicas como usar un cronómetro y definir un tiempo máximo, o alguna forma divertida de limitar el tiempo, como un reloj de arena. También existen otras dinámicas como ir pasando una pelota o “totem” de manera que sólo puede hablar el que lo tenga e ir lanzándolo unos a otros.

      Espero que alguna de las ideas os valga.

      Un saludo.

Escribe un comentario