ENTRADAS

3 jul 2017

DJANBAN. MIDIENDO RENDIMIENTO DEL KANBAN

//
Comentarios0
/

En esta entrada vamos a analizar una herramienta de software libre que permite evaluar el rendimiento de un equipo de desarrollo que haga uso de las metodologías ágiles de software.

Djanban - Kanban

Un proyecto necesitaba un logo y Mark Maker es una herramienta sencilla para hacerlo.

El contexto

Las metodologías ágiles de desarrollo de software gozan actualmente de bastante popularidad, bien sea porque funcionan o simplemente porque se han “puesto de moda”, muchas organizaciones se están embarcando en la implantación de estas formas de gestionar proyectos en la que lo importante no es tanto el proceso como el producto, el cliente es un miembro del equipo y los cambios se ven como algo normal.

Como ingeniero que soy, cuando conocí estos marcos de trabajo, lo primero que me llamó la atención es la poca base científica que tenían. Los defensores de éstas muchas veces no daban demasiados argumentos más allá de un par de experiencias de proyectos de software con dicho método.

Sólo, determinados autores trataban de darle una base formal a estos marcos de trabajo, principalmente me basé en los siguientes libros:

Los orígenes

Este proyecto surgió como mi trabajo fin de máster del máster en dirección y gestión de proyectos software. Quería implantar Kanban en mi lugar de trabajo, ya que veía una necesidad imperiosa de tener alguna organización a la hora de comenzar tareas que podía provenir de muchos (y diversos) frentes.

Pero ¿qué novedad tiene implantar Kanban en un pequeño equipo de desarrolladores? Siendo sinceros, ninguna. Ahora bien, implantarlo y medir el rendimiento, aunque fuera de forma somera, sí que era novedoso y tenía valor.

De esta forma, lo concebí como una herramienta muy sencilla que permitía extraer estadísticas y gráficas de la herramienta software que usábamos como tablero de tareas (Trello). Pero era poco usable para otros usuarios más allá del jefe de equipo (yo, en este caso).

Djanban Kanban

Este gráfico muestra el tiempo medio que pasan las tareas en cada una de los estados de un proyecto.

Djanban nace

Por estas limitaciones en cuanto a usabilidad, decidí crear una aplicación completa que pudiera tener conexión con distintos sistemas de tableros de tareas (por ahora sólo con Trello) y que permitiese a distintos tipos de usuarios interactuar con ella.

Djanban es una herramienta que permite gestionar equipos de trabajo que hagan uso de Kanban.

Si bien es cierto que esta herramienta está orientada al desarrollo de software, en principio cualquier jefe de proyecto la puede usar para gestionar proyectos cuyo marco de trabajo sea Kanban.

Tareas

Una tarea es un trabajo que hay que realizar que suele tener menos de 1 día de duración, puede estar clasificado en función de su naturaleza, tiene un nombre, una descripción y comentarios.

La tarea se asigna a determinadas personas y ésta va avanzando en el tablero conforme vaya cambiando de estado.

Cada tarea puede volver atrás ya que, en el mundo real, puede que en un momento determinado se detecte que una tarea no está en el estado adecuado.

Djanban - kanban

Vista del tablero de tareas de Djanban

Historias épicas

Recordemos que en el mundo del desarrollo ágil de software, las historias épicas son los requisitos del cliente. Estas historias épicas se suelen definir en una fase previa o en el agile roadmap.

Djanban permite la definición de requisitos y asociarlas a tareas, de manera que se puede conocer en cada momento el porcentaje de avance real del proyecto de forma sencilla.

Djanban - Kanban

Grado de avance de las tareas

Cálculo de horas

Una de las cosas que más me sorprende es la “batalla” que tienen los defensores del desarrollo ágil de software con calcular las horas reales de desarrollo de los proyectos. Ellos defienden (y con cierta razón) que una tarea intelectual no puede cobrarse por el tiempo que se tarda en hacerlo, sino por el conocimiento y habilidades de los que la realicen.

Por lo tanto, los agilistas, son muy dados a estimar en “puntos de historia” o “sprints” los proyectos, mientras que el cliente quiere saber simplemente cuál va a ser el coste del proyecto.

Si bien es cierto que comulgo 100% con esa idea, es impracticable decirle a un cliente (o dueño de producto) que no se puede hacer un presupuesto del proyecto o funcionalidad porque no está completamente definido (en el desarrollo ágil de software no lo está nunca).

De esta forma, mi idea era almacenar las tareas y el coste temporal de cada una de ellas por cada desarrollador implicado, de manera que en el presente supiera el coste exacto del proyecto para la organización y en un futuro, pudiera establecer predicciones con toda esta información.

El sistema lee los comentarios en los que se almacenan los tiempos (o estimaciones) de desarrollo y a partir de ahí muestra los datos como un listado. A continuación muestro la interfaz:

Djanban - Kanban

Listado de tiempos de las tareas de un mes determinado.

Gráficos

Una forma muy sencilla tanto de ver el estado de un proyecto como su evolución es mediante una gráfica. Este proyecto proporciona multitud de gráficas que encapsulan el estado del arte del proyecto y del equipo. A continuación mostramos un ejemplo:

Djanban - Kanban

Dos formas de ver la evolución de las tareas en los proyectos: el flujo acumulado y el número de tareas creadas vs. el número de tareas terminadas.

Predicción

Una de las últimas funcionalidades que he desarrollado es un módulo de predicción del tiempo de desarrollo de una tarea. En función de una serie de parámetros como son:

– El tiempo de vida de ésta.

– A qué personal tiene asignado.

– Número y tamaño de los comentarios.

– Etiquetas asociadas a cada tarea.

– Tamaño de la descripción.

Etc.

Obtiene un modelo de regresión que luego se puede aplicar a cada una de las tareas y obtener una aproximación del tiempo de desarrollo de éstas.

El error depende de si el proyecto es similar del que hemos extraído el modelo, o si se han tomado los datos correctamente, claro, pero nos puede servir como punto de partida para tareas similares a las que ya se han realizado anteriormente.

Djanban - Kanban

Esta interfaz permite la gestión fácil de modelos de regresión lineal

¿Cómo funciona?

Djanban es una aplicación web desarrollada en el framework de Python, Django y en el framework javascript Angular.

Los sistemas de predicción mediante regresiones hacen uso de la librería statsmodels, aunque espero poder incluir otros modelos de aprendizaje mucho más adaptables y útiles.

¿Y ahora qué?

Djanban puede seguir creciendo y espero que lo haga. La arquitectura ya está completa, pero hay mucha funcionalidad que se puede añadir:

– Predicciones con otro tipo de modelos.

– Uso de websockets para la actualización automática del tablero de tareas.

– Integración con repositorios git para conectar tareas con ramas de código.

– Integración con otros sistemas de trabajo en equipo como Redmine o JIRA.

Si estás interesado en colaborar, puedes contactar aquí con el desarrollador de esta herramienta.

Conclusión

Desarrollo ágil de software no implica caos o desorden, hay que aportar soluciones reales a los problemas, por lo que hay que adaptarse a los clientes y usuarios y no intentar adaptarlos a ellos al proceso.

Hay que seguir muy de cerca el proceso para saber el estado del proyecto y no confiar en que “la sabiduría de las multitudes” consiga resolver los problemas que vayan apareciendo.

Recoger los datos necesarios para hacerlo es lento y consume mucho tiempo, por lo que el uso de una herramienta software es crucial.

Más sobre Djanban aquí

 

Autor: DIEGO J. ROMERO LÓPEZ

Ver más entradas del mismo autor

Si quieres participar en el blog como colaborador en alguna de las secciones o realizar alguna pregunta para que un especialista te responda, envíanos un email a info@fdet.es

Grupo FdeT

Compartir:
Facebooktwittergoogle_pluslinkedin

Leave a Reply

A %d blogueros les gusta esto: