¿Qué es el WSJF? y ¿cómo te ayuda a priorizar y limitar el WIP?

La técnica Weighted Shortest Job First (WSJF), traducido algo así como “el trabajo más corto ponderado primero”, es un modelo de priorización y programación del trabajo Agile, en un ambiente en el que el coste de la demora y la duración de los elementos de trabajo cambian o pueden cambiar. Su objetivo, en esencia, es producir el máximo beneficio económico para una organización al aportar el máximo valor.

El creador del Weighted Shortest Job First es Don Reinertsen (2009). La técnica apareció en el libro de Reinertsen titulado The Principles Of Product Development Flow: Second Generation Lean Product Development. Pero tomó auge estos últimos años debido al marco ágil SAFe, pues en este framework se usa como principal técnica de priorización y a mi me parece interesante para algunos casos maduros para priorizar.

En SAFe, el WSJF se estima como el Coste de Demora (CoD) dividido por el tamaño del trabajo. Tan solo con esa simple ecuación se pueden obtener grandes resultados que ayudarán a cualquiera a priorizar las actividades en algún proyecto.

Los Agile Release Trains (ARTs) generan un flujo de trabajo continuo que conforma el esfuerzo de desarrollo incremental de la empresa. Además, evitan los gastos generales y los demoras que son causas por la naturaleza del: inicio-detención-inicio de los proyectos tradicionales, en los cuales las autorizaciones y los cambios de fase son las que controlan el programa y su economía.

Aunque este modelo de flujo continuo acelera la entrega de valor y mantiene el sistema Lean, las prioridades deben actualizarse de forma continuada para seguir proporcionando los mejores resultados.

Con este objetivo, la técnica WSJF se usa con el fin de priorizar los trabajos pendientes (Work in Progress o WIP) calculando la CoD relativa y el tamaño del trabajo (un proxy para la duración). El uso de la técnica Weighted Shortest Job First en los límites de Incremento del Programa actualiza de forma automática las prioridades de la cartera de pedidos en función del valor del usuario y del negocio; además de los factores de tiempo, el riesgo, la posibilidad de oportunidades y el esfuerzo.

¿Cuál es el objetivo principal de la técnica WSJF?

El objetivo principal de la técnica WSJF es disminuir costes de demora y optimizar el valor añadido al final de cada iteración. Al encontrarse con dos características o funciones (features) equivalentes, el WSJF es particularmente útil porque ayuda al dueño del producto a decidir (en cuanto a valor y tiempo de desarrollo), cuál debería desarrollarse primero.

Si ambas tienen el mismo valor pero una de ellas tomará menos tiempo en desarrollarse, entonces la estrategia es bastante simple: es esta última a la que se le debe dar la máxima prioridad.

Uno de los roles que tiene un Product Owner es precisamente priorizar en el Product Backlog las funcionalidades o características (features) que el equipo técnico tendrá que desarrollar.

¿Cómo se calcula el WSFJ?

La priorización de WSJF se calculará para cada característica que aparezca en el Product backlog. Cuanto mayor sea el valor WSJF de una característica concreta, mayor será su prioridad en el orden de ejecución.

Al finalizarse el cálculo de WSFJ, las características a realizar se mostrarán en el siguiente orden.

  • Características no complejas, pero que tienen un valor añadido alto.
  • Características complejas con un alto valor añadido.
  • Características no complejas con un valor añadido menor.
  • Características complejas con un valor añadido menor.

Para poder calcular el WSJF de una característica se tienen que tener en cuenta cuatro puntos. Cada uno de ellos se examina sobre una escala creciente, no lineal, según la serie de Fibonacci.

Estos son esos cuatro criterios:

  • Valor del Negocio para el usuario: Se puede definir como el valor que da la empresa o el usuario a una característica. En este apartado también hay que incluir los costes de penalización -si los hubiera- así como los ingresos.
  • Criticidad en el tiempo: En esta medida, lo que se intenta estimar es la necesidad y pertinencia de un plan B por si algo sale mal. Algo “malo” puede ser: la pérdida de contratos, clientes o ingresos.
  • Reducción de riesgo y valor de oportunidad: En esta parte se le da un valor a la necesidad de la empresa u organización de reducir riesgos o el potencial de las nuevas oportunidades de negocios que podrían aparecer del trabajo actual.
  • Duración del trabajo: Esta es la estimación del tiempo que será necesario para poner una nueva característica o función del producto en producción.

Para darle un valor se puede escoger una escala de tipo 1,2,3,5,8,13, 21, … siendo 1 lo más bajo. ¿Cómo hacer esto en un equipo? Un planning poker por ejemplo.

El resultado que dé la fórmula anterior con todos los datos hará que el WSFJ priorice las tareas, pasando a ejecutar primero las que tengan un valor más alto.

Esta técnica, Weighted Shortest Job First, no es inmutable, es 100% evolutiva. Una vez hecha la estimación, el resultado puede variar con el tiempo. En este caso, el producto owner actualizará el Product backlog regularmente (refinamiento del backlog) y esto puede hacer que todos los criterios cambien. El WSJF se deberá, entonces, recalcular y por ende la priorización podría modificarse.

No siempre es necesario recurrir al cálculo de WSJF. En algunas ocasiones, la priorización de las tareas es obvia y no necesita ser evaluada. Sin embargo, cuando es más difícil determinar qué funcionalidad se debe llevar a cabo primero, el análisis de los criterios y el cálculo de WSJF facilitará obtener una lista de prioridades. Los criterios utilizados para calcular el WSJF se evalúan en una reunión entre el Product Owner, Scrum master y el equipo de desarrollo.

He conocido esta técnica de WSJF en una formación de SAFe y me ha parecido una herramienta muy útil y eficaz que permite al producto owner determinar la priorización de la implementación de las características (features) presentes en el Product backlog.