En Mi Local Funciona

Technical thoughts, stories and ideas

Priorizando el backlog con WSJF

Publicado por William Guevara el

AgilepriorizaciónWSJF

WSJF, Weighted Shortest Job First (primero el trabajo ponderado más corto) es un modelo de priorización utilizado para secuenciar trabajos para producir el máximo beneficio económico.

Su estimación se calcula como el coste del retraso (CoD-Cost of Delay) dividido por el tamaño del trabajo.

Los trabajos que pueden ofrecer el mayor valor (o CoD) en la menor duración se seleccionan ­ primero para la implementación.

La simplicidad y al mismo tiempo potencia de este método lo hace ideal para ser utilizado en la priorización del product backlog en cualquier desarrollo de producto basado en los principios de agilidad.

Ahora bien, veamos cómo se calcula cada componente de la formula, tanto el numerador como el denominador. Y posteriormente, interpretaremos el significado.

Cálculo del coste del retraso (CoD)

Para calcular el coste del retraso (CoD); será necesario sumar los tres sumandos que describiremos a continuación:

En el cual tendremos que considerar lo siguiente:

  1. Valor de negocio: principalmente hace referencia al aporte que, desde el punto de vista de negocio, la solución - que estamos valorando para luego priorizar - aporta desde el punto de vista estratégico, económico, táctico, etc. Para determinarlo bastará con preguntarnos las siguientes cuestiones:
    1. ¿Cuál es el valor relativo para el cliente o empresa?
    2. ¿Nuestros usuarios prefieren esto sobre eso?
    3. ¿Cuál es el impacto de los ingresos en nuestro negocio?
    4. ¿Existe una posible penalización u otro impacto negativo si nos demoramos?
  2. Criticidad: está relacionada con el timing de la solución - que estamos valorando para luego priorizar – con respecto a su puesta en producción y/o disposición del cliente final. Para determinarlo bastará con preguntarnos las siguientes cuestiones:
    1. ¿Cómo decae el valor del usuario / negocio con el tiempo?
    2. ¿Hay una fecha límite fija?
    3. ¿Nos esperarán o pasarán a otra solución?
    4. ¿Hay hitos en la ruta crítica impactada por esto?
    5. ¿Cuál es el efecto actual en la satisfacción del cliente?
    6. ¿Puede el cliente esperar un retraso y mantener el valor de negocio?
  3. Habilitación de oportunidades de reducción de riesgos: está relacionada con el poder desencadenante/bloqueante de la solución - que estamos valorando para luego priorizar – con respecto a ampliar el beneficio potencial en el cliente. Para determinarlo bastará con preguntarnos las siguientes cuestiones:
    1. ¿Qué más hace esto para nuestro negocio?
    2. ¿Reduce el riesgo de esta o una entrega futura?
    3. ¿Hay valor en la información que recibiremos?
    4. ¿Esta característica permitirá nuevas oportunidades de negocio?

Una vez comprendido lo que significa cada sumando del numerador, procederíamos a estimar cada uno de ellos por separado utilizando la secuencia de Fibonacci (1,2,3,5,8,13,21…) .

Lo ilustramos a continuación:

Empezaríamos estimando para todas las historias de usuarios del product backlog el valor de negocio utilizando la secuencia de Fibonacci. Para ello, identificaríamos la historia de usuario que menor valor genera y le asociaríamos el numero 1 , luego identificaríamos las siguientes historias de usuarios y, por estimación / comparación relativa, le asignaríamos el numero de la secuencia de Fibonacci que mejor se adapte. Por ejemplo, si la siguiente historia de usuario proporciona un valor de negocio aparentemente el triple de valiosa, se asignaríamos el número 3.

Después, repetiríamos el procedimiento para el siguiente sumando del numerador, es decir, para la criticidad. Por tanto, estimaríamos utilizando para todas las historias de usuarios del product backlog la criticidad la secuencia de Fibonacci.

Finalmente, repetiríamos el mismo procedimiento, es decir, estimar para todas las historias de usuarios del product backlog la capacidad de habilitar oportunidades de reducción de riesgos utilizando la secuencia de Fibonacci.

Es importante mencionar que debe haber al menos una historia de usuario con el valor 1 para cada sumando del numerador.

De esta forma, solo quedaría sumar para obtener el coste del retraso (CoD).

Cálculo de la duración del trabajo

En el cálculo de la duración del trabajo tenemos que tener presente que esto puede ser bastante difícil de determinar, especialmente al principio cuando no sabemos quién va a hacer el trabajo o la asignación de capacidad para los equipos. Afortunadamente, tenemos un proxy disponible: tamaño del trabajo.

Al igual que con la estimación de historias de usuarios, aplicamos una secuencia de Fibonacci modificada a nuestras estimaciones, ya que refleja mejor el rango de incertidumbre en las estimaciones a medida que el tamaño aumenta.

Tal como vemos en la imagen anterior, al estimar cada columna por separado y aplicar los cálculos de las formulas obtendremos el valor relativo del peso del trabajo ponderado más corto (WSJF).

Luego el trabajo con el WSJF más alto es el siguiente trabajo más importante que hacer como parte de nuestro product backlog.

De esta forma en nuestro ejemplo, la historia de usuario 1 con un WSJF de 35 seria la primera en prioridad para ser implementada.

Interpretando los resultados

Por último, como dijimos al principio de este articulo, WSJF es un modelo de priorización utilizado para secuenciar trabajo con el objetivo de obtener el máximo beneficio económico.

Para ilustrar la base del método, tomemos como ejemplo un caso en el cual tenemos 3 historias de usuarios: A, B, y C. con sus respectivos valores para priorizar:

Según lo comentado anteriormente, la primera a ser implementada debería ser la A (con el mayor WSJF de 10), seguida de la B (con el siguiente mayor WSJF de 1) y finalmente la C (con el menos WSJF de 0,1).

Pero, ¿y dónde está la relación con el beneficio económico?

Veamos, si el área del coste del retraso (CoD) lo representamos en naranja tendremos que, si empezamos desarrollando tal cual como nos sugiere el método, obtendríamos:

Lo cual significa que mientras empezamos a desarrollar A, tanto B como C tendrían que esperar, es decir, estaríamos incurriendo en el coste del retraso que en la figura anterior correspondería al área naranja.

Por otra parte, si hacemos caso omiso de lo que nos dice el método, y empezamos a desarrollar por C, luego B y finalmente A.

El resultado sería diferente, ya que, mientras empezamos a desarrollar C, tanto B como A tendrían que esperar, es decir, estaríamos incurriendo en el coste del retraso representado en el área naranja que este caso sería mayor al anterior.

Es por ello por lo que decimos que este método ofrece la mejor economía posible.

Si te ha gustado, ¡síguenos en Twitter para estar al día de nuevas entregas!

William Guevara
Autor

William Guevara

Nací en Venezuela, crecí con diversidad de pensamiento, habilidades y perspectivas Después de casi dos décadas en consultoría, actualmente estoy como Head of Agile en Digital Wolves by atSistemas