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 Big Data, AI, Data Science, Machine Learning, Deep Learning, HPC, IoT, Cloud, NoSQL, NewSQL, Python y Agile. Actualmente trabaja en Paradigma como Scrum Master y Arquitecto Software dentro del área de AI & Big Data, ayudando a diferentes compañías a llevar a cabo sus procesos de transformación digital gracias al cambio cultural y a la implantación de la tecnología más innovadora.

Ver toda la actividad de Manuel Zaforas