¿Por qué Pivotal Tracker desalienta la estimación de puntos por errores y tareas?

Pivotal Tracker "desaconseja encarecidamente" la estimación de puntos de velocidad para errores y tareas: debe cambiar una configuración y aceptar una advertencia para poder hacerlo.

Explican por qué aquí , pero simplemente no lo entiendo. Aquí hay un extracto:

Al medir la velocidad solo en términos de características, Tracker puede estimar cuánto trabajo real y valioso para el negocio se puede completar en una iteración futura, lo que le permite predecir cuándo se pueden lograr los hitos del proyecto.

Las tareas y los errores toman tiempo. ¿Cómo puede ignorar esto ayudarlo a predecir cuándo se alcanzará un hito?

Digamos que necesita completar tres funciones más para llegar al siguiente hito, y también necesita completar una tarea (porque una de las funciones no se puede iniciar hasta que se termine esa tarea)... ¿Cómo podría descontar el tiempo necesario para la tarea le ayuda a estimar cuándo se alcanzará el hito?

Creo que es similar al comentario de Joel Spolsky sobre la estimación de la productividad: joelonsoftware.com/items/2007/10/26.html La idea es que puede medir su productividad con éxito incluso cuando no tiene en cuenta errores/tareas (o interrupciones/ llamadas telefónicas) porque puede esperar que ocurran aproximadamente a la misma velocidad durante un tiempo prolongado.

Respuestas (4)

Sé que este hilo es un poco viejo ahora, pero como desarrollador de Pivotal, no estoy completamente de acuerdo con ninguna de las respuestas existentes.

La filosofía detrás de no estimar los errores no es que la reparación de errores no genere valor comercial, es que introducir un defecto en la aplicación y luego corregirlo no representa un impulso neto hacia adelante.

Por ejemplo, imaginemos que dos equipos están implementando el mismo conjunto de funciones en iOS y Android. El equipo de iOS tiene desactivada la estimación de errores/tareas, mientras que el equipo de Android la tiene activada.

Los equipos de iOS y Android estiman la misma historia en 2 puntos. Ambos terminan la historia en la misma cantidad de tiempo, pero en la siguiente iteración, resulta que los dos equipos introdujeron errores con su implementación.

El equipo de iOS solo ha introducido un error. Lo arreglan en una hora.

El equipo de Android ha introducido tres errores y les asigna un punto a cada uno. Tardan un día y medio en arreglarlos.

El equipo de iOS se está moviendo más rápido que el equipo de Android, pero la velocidad de Android ahora es mayor. Esto desbarata la planificación de iteraciones futuras, lo que hace que parezca que el equipo de Android se está moviendo más rápidamente hacia una versión viable, cuando en realidad pueden estar introduciendo errores en su implementación a un ritmo más rápido que el equipo de iOS y, por lo tanto, logrando su objetivo. metas más lentamente.

A veces, sin embargo, hay defectos que no fueron introducidos por su equipo. Tal vez sea una base de código heredada, y el defecto es tan antiguo como las colinas. En este caso, no tiene sentido que esta historia reduzca su velocidad, y probablemente debería registrarla en Tracker como una nueva característica, en lugar de un error.

Por supuesto, depende en última instancia de usted cómo quiere hacer la estimación de la historia. He trabajado con algunos equipos que tenían activada la estimación de errores/tareas, aunque personalmente prefiero tenerla desactivada. ¡El rastreador no te juzgará!

Si el equipo de Android solucionó esos tres errores, así como todas las demás tareas programadas para el sprint, ¿no es preciso el aumento de la velocidad? Después de todo, pudieron completar el equivalente a una estimación más alta de esfuerzo/complejidad, y ese número más alto debería ser aplicable al decidir cuánto trabajo asumir en futuros sprints.
Por otro lado, si se encargan de los errores en el mismo sprint y no completan todas las demás tareas, la estimación de los errores sirve para establecer el "alcance progresivo" durante el sprint activo, y las historias que no se completaron son 'falló' con precisión en ese sprint y pasó al siguiente, y el número de sprints restantes para vaciar la acumulación aumenta. Todo esto es exacto y mantiene visible la verdad de las cosas.
El error fundamental aquí es que los puntos de la historia (y, por lo tanto, la velocidad) no se pueden medir con precisión entre los equipos. Algunos marcos como SAFe intentan estandarizar la definición de un punto de la historia en todos los equipos, pero hay muchos profesionales que piensan que esta es una idea sorprendentemente mala. Crea una equivalencia falsa y hace un mal uso de una métrica de capacidad como métrica de productividad . La velocidad no es, y nunca tuvo la intención de ser, una medida de productividad.
¡De hecho, estoy totalmente de acuerdo con todo eso, CodeGnome! La única razón por la que usé dos equipos trabajando en paralelo en mi experimento mental un tanto idealizado fue para comparar los efectos relativos de la estimación de errores/tareas en cada equipo. En la práctica, comparar la velocidad entre equipos como una medida de "productividad" es una muy mala idea y probablemente sea más importante que estimar o no errores y tareas.
Oye, @RyanMcLeod, ¿se aplica la misma lógica a las tareas del hogar? Es decir, ¿debe convertirse una tarea en una función cuando se basa en un nuevo trabajo que proviene de fuera del alcance del proyecto?
La lógica aquí no se cumple (no solo porque asume que los equipos separados comparten una definición estándar de "punto de la historia") porque el objetivo central de la planificación del póquer es medir la complejidad . Con el tiempo, los puntos de la historia se convierten en una excelente manera de promediar la noción interna, instintiva pero compartida de "complejidad" de un equipo para que el equipo pueda decir "Bueno, en los últimos 3 meses, todos los boletos de 8 puntos en los que hemos estado entregados en promedio". 7 días" - ni más, ni menos. No hay absolutamente ninguna razón, por lo que puedo ver, por la que un equipo no quiera poder hacer eso para diferentes tipos de trabajo (es decir, tareas y errores).

"Velocidad de funciones" frente a programación basada en la capacidad

Pivotal Labs está tomando una decisión de marketing con esta elección de diseño. Al abordar el "valor de negocio" como la métrica clave, desestiman implícitamente la importancia del seguimiento de la capacidad del equipo o la programación del proyecto en un sentido más amplio.

Otra forma de ver esto es que están tratando de vender un tablero para los objetivos de gestión en lugar de la planificación de iteraciones. Las preguntas frecuentes de Pivotal Tracker dicen (énfasis mío):

Al medir la velocidad solo en términos de características, Tracker puede estimar cuánto trabajo real y valioso para el negocio se puede completar en una iteración futura, lo que le permite predecir cuándo se pueden lograr los hitos del proyecto [.]

Entonces, su idea es que los errores y las tareas no son trabajo "real" y no agregan valor. No estoy de acuerdo, pero ese es el punto que eligen hacer con su público objetivo. También parecen descartar la idea de que los errores y las tareas consumen la capacidad del equipo, y asumen que el costo de estas tareas no valiosas se puede amortizar con el tiempo, lo que deja a la gerencia libre para concentrarse en establecer objetivos para hitos.

También dicen:

A diferencia de las funciones, los errores y las tareas tienden a surgir con el tiempo y, si bien son una parte necesaria de su proyecto, se pueden considerar como un lastre constante para el resultado de valor comercial: un costo continuo de hacer negocios.

En otras palabras, en lugar de hacer que el costo de los errores y las tareas sean explícitamente visibles para el proyecto, los descuentan para proporcionar un panel de administración que se centre más en la entrega de funciones que en la programación basada en la capacidad. En mi opinión, esto impide el control adecuado del presupuesto del proyecto y las limitaciones de recursos del equipo, pero claramente hay personas que no están de acuerdo.

Habilitación de puntos para errores/tareas

Para ser justos con Pivotal Labs, le permiten desactivar esta característica incorrecta. Puede asignar puntos a errores y tareas, con la advertencia (¿advertencia grave?) de que es una decisión irreversible para el proyecto.

Si bien no se recomienda, es posible habilitar la estimación de errores y tareas en la configuración del proyecto. Sin embargo, no es posible revertir esa configuración una vez que su proyecto tiene errores o tareas estimadas.

Personalmente, generalmente recomiendo que todas las tareas imputables al presupuesto de un proyecto o que consuman la capacidad del equipo sean muy visibles y debidamente contabilizadas. Con Pivotal Tracker, la elección es suya.

Ver también

En lugar de invalidar las citas precisas y los enlaces anteriores (probablemente aún pueda encontrar el original en varios archivos de Internet), aquí están los enlaces actualizados de Pivotal Tracker que contienen más o menos los mismos conceptos pero con una redacción diferente e instrucciones actualizadas para cambiar cómo funciona el sistema. se comporta desde sus valores predeterminados.

Como gerente de producto, creo que tienen razón. Mi equipo estima errores y va hacia la velocidad del equipo. Cuando estamos en la recta final hacia un lanzamiento, y también se han estimado los errores críticos, podemos determinar con mayor precisión cuánto trabajo queda. Por otro lado, parece que el equipo todavía está "produciendo" al mismo ritmo, cuando en realidad están implementando menos funciones y más correcciones de errores. Esto es inevitable, pero puedo ver el argumento a favor de la velocidad que muestra esta disminución de la producción. Podría hacer que los efectos del código con errores sean aún más claros para el equipo y la gerencia.
@Holly Eso es interesante... Pero PT dice que los puntos representan esfuerzo, no valor. En cuyo caso, sería incorrecto leer el número de velocidad como "cuánto valor comercial está produciendo actualmente el equipo", porque una característica de bajo esfuerzo podría proporcionar mucho valor, y viceversa.
@callum Realmente estaba pontificando sobre el valor de las correcciones de errores solamente, lo mismo no se aplicaría a las características. Los puntos no pueden ser "cuánto valor comercial", solo digo que si estimó una historia en 5 puntos y luego, después de cerrarla, encontró 2 errores, cada uno de los cuales se estima en un punto para corregir, pero si Si los hubiera encontrado durante el sprint, los habría arreglado, podría haber algún valor en ese lado para no contar esos 2 puntos de trabajo de corrección de errores tardíos como parte de la velocidad. Por cierto, no sé si yo mismo abogaría por esto, solo estoy pensando en ello.

Debe estimar errores y requisitos no funcionales

No estoy familiarizado con Pivotal Tracker. Sin embargo, parece que tu pregunta es más general:

  • ¿No debería estar estimando errores?
  • ¿No debería estar estimando deuda técnica o requerimientos no funcionales? Creo que esto es a lo que te refieres como "tarea".

En mi opinión, deberías estimar estos. Pivotal Tracker parece estar considerando que solo las "características" brindan valor a los clientes. Yo diría que corregir errores en producción mejora la experiencia del usuario y ofrece valor. Ver aquí para más. La excepción a esto es que si se encuentran errores en las historias completadas en las pruebas funcionales/de regresión o incluso en las etapas posteriores al lanzamiento, los desarrolladores que los introdujeron deben corregirlos, sin obtener ningún punto de crédito por los mismos.

Del mismo modo, si mejora el rendimiento, la estabilidad o la seguridad, eso también mejora la experiencia del usuario y genera valor. Ver aquí para más.

Al no estimarlos, los barre debajo de la alfombra y corre el riesgo de acumular errores y deudas técnicas.

+1 Los errores y las tareas requieren recursos como tiempo, dinero o mano de obra y, por lo tanto, deberían ser un costo visible para el proyecto.

Otro punto interesante es que para estimar un error, debe comprender por qué no funciona, y eso suele ser lo más largo del trabajo.

Por lo tanto, puede tomar mucho tiempo y especulación para la estimación.

Lo que hacíamos sin Pivotal Tracker era calcular un "valor medio" (basado en el tiempo que tardaba en corregir el error, transformado en puntos), por lo que siempre le daríamos este valor a los errores (y a veces tiene grandes diferencias con la realidad, pero se compensan con el tiempo, ya que reajustamos el valor del error en cada sprint.

Creo que esta respuesta está fuera de lugar. La estimación de errores es una función de su deuda técnica: si tiene buenas pruebas unitarias y CI, o incluso un código bien escrito, debería poder estimar el nivel de esfuerzo requerido para al menos buscar la fuente de un error con algunos precisión. En otras palabras, es solo una caja de tiempo inicial. Todas las estimaciones pueden estar equivocadas, eso se puede ajustar, pero si el equipo carece de suficiente visibilidad o conocimiento para asimilar el tamaño relativo de un problema... bueno, en mi humilde opinión, ese es un problema bastante grande de informe de errores o proceso del equipo de desarrollo. .