¿Qué debemos hacer para las historias de usuarios de deuda técnica en Pivotal Tracker? ¿Deberíamos considerar esto como características (dar puntos) o tareas (no dar puntos, por lo tanto, reducir la velocidad)?
Estoy confundido sobre lo que debería considerarse una tarea:
Duplicación de código: está claro que si hemos colocado el mismo código en varios lugares, eso es realmente una mala práctica de código e indica que los desarrolladores del equipo deberían pensar más en hacer que el software sea mantenible, refactorizarlo y el equipo debería dedicar tiempo a las revisiones del código. Como todo esto requeriría madurez, tiempo y experiencia a nivel de código, es mejor entregar menos puntos para que la calidad del código no se vea comprometida. Entonces, tales errores deberían ser penalizados y la velocidad debería reducirse al no dar puntos a la tarea.
Actualización de tecnología: como pasar a modular JS, HTTP2, React, MVC o cualquier otra tecnología nueva / mejor. Estos pasos mejorarán el rendimiento y el mantenimiento del código. ¿Pero debería ser esto una tarea o una característica? Creo que así es el mundo de la tecnología, las nuevas tecnologías vienen de vez en cuando y hay que migrar a él. Entonces, no veo ningún punto en penalizar la velocidad del equipo para tal trabajo. Sugerencias?
Duplicación / Código de subestándar en código heredado: pocos códigos permanecen intactos desde hace mucho tiempo O cuando se forma un nuevo equipo pero la base de código es un poco vieja, nos enfrentamos a este desafío. El equipo dice que no han codificado esta sección, entonces, ¿por qué debería penalizarse su velocidad al elegir deudas técnicas como nunca crearon esas deudas?
Código subestándar debido a la urgencia empresarial: a veces, los desarrolladores se ven obligados a implementar características lo antes posible en vivo debido a la presión de los competidores / objetivos / negocios / usuarios. ¿Debería considerarse la limpieza de un código tan malo como una tarea (sin dar puntos) también? Esta vez, el equipo de desarrollo no tiene la culpa, entonces, ¿por qué debería reducirse su velocidad, cuando en realidad dedican más horas en tales casos?
Creo que todos los tipos de tareas mencionadas anteriormente, si se hacen con prudencia, deberían mejorar la velocidad del equipo en el futuro. Pero, ¿cómo debemos mantener el equilibrio b / w manteniendo la velocidad del equipo y penalizando los errores técnicos que el equipo está cometiendo al tomar malas decisiones?
La pregunta es similar a: ¿Debería programarse la deuda técnica como una característica o una tarea (o un error)? , pero no encontré respuestas convincentes que cubran los 4 puntos, así que lo vuelvo a publicar de una manera diferente.
fuente
Respuestas:
Respuesta corta: pagar la deuda técnica es una tarea difícil. No está ofreciendo una nueva funcionalidad para los usuarios finales, por lo que no se señala.
Respuesta oficial:
Es por eso que las historias clasificadas como errores y tareas no pueden tener estimaciones asignadas con la configuración predeterminada de PT, pero creo que también explica por qué no debe contar estas tareas como características solo para obtener puntos para ellas.
En primer lugar, no creo que debas considerar una caída en la velocidad como una penalización: es solo información. Tal vez fue algo natural, como una nueva persona uniéndose a la que tuviste que pasar más tiempo entrenando. Tal vez fue algo inesperado que redujo su capacidad (p. Ej., Enfermedad) o consumió más (p. Ej., Error "detener el mundo"). Tal vez simplemente no había estimado bien las características, por cualquier razón; Esto es algo de lo que puedes aprender. O tal vez fue porque decidió, como equipo, priorizar el pago de una deuda técnica sobre la entrega de nuevas características (y tal vez incurrir en más deuda).
En segundo lugar, no es necesariamente un error incurrir en deuda técnica. No es ideal incurrir en él accidentalmente , pero si decide, por ejemplo, construir la cosa "rápida y sucia" ahora sabiendo que tendrá que arreglarlo más tarde, por ejemplo, para que pueda obtener más comentarios de los usuarios o cumplir con un duro fecha límite, esa es una elección deliberada que has hecho como equipo y está bien.
En cuanto a si algo debería ser una característica, una regla general simple es: ¿les importa a los usuarios finales? Mencionas mejorar el SEO: ¿es algo en lo que están interesados? Es posible que les interese el rendimiento, pero por otro lado tal vez prefieran tener alguna característica nueva que las mismas cosas con unos cientos de milisegundos de tiempo de carga. Investigue un poco: vaya y pregúnteles qué quieren. Permita que lo ayuden a priorizar en qué es mejor pasar el tiempo del equipo.
Puede decidir que sus opciones tecnológicas actuales le impiden entregar ciertas funciones de la manera más eficiente que desee, en cuyo caso es perfectamente razonable (una vez más, deliberadamente) pasar tiempo migrando toda o parte de la aplicación a algo nuevo.
Aquí estoy absolutamente de acuerdo con usted, pero ¿no está obteniendo puntos por estos quehaceres? Si está haciendo el trabajo para poder ofrecer más funciones más adelante, entonces debería ver la mayor velocidad después de haberlo hecho, no mientras lo hace.
Además, cosas como las revisiones de código y la refactorización básica en el proceso de entrega (por ejemplo, la parte "refactor" del ciclo TDD) ya deberían ser parte de su trabajo continuo y, por lo tanto, ya deberían estar incluidas como parte de la velocidad general del equipo.
Divulgación : Soy un Pivot, trabajo para Pivotal Labs en Londres, pero no en el equipo Tracker.
fuente
Solo para ser contrario, manejamos errores y deudas técnicas como cualquier otro PBI. De hecho, ni siquiera tenemos un tipo de "error". Todo es un PBI. Nuestra cartera de pedidos está ordenada por el valor comercial asignado al PBI. Como resultado, se le asignará un alto valor comercial a un error importante del usuario que está causando problemas, ya que corre el riesgo de perder dinero con algo así, y es probable que sea una de las primeras cosas que se haga. Por otro lado, un error que realmente no tiene mucho impacto y no está afectando el resultado final tendrá un valor comercial relativamente bajo y es posible que no se solucione por un tiempo. Esa es una pared mental importante que debe derribarse: no todos los errores deben repararse. Suena como un sacrilegio, lo sé, pero si el esfuerzo involucrado en la reparación del error es más que el valor comercial que lo arreglará, entonces el ROI es negativo. Tratar todo como un PBI le da la libertad de tomar este tipo de decisiones empíricas sin distraerse solo porque es un "error".
Del mismo modo, con la deuda técnica, todavía queda mucho valor comercial en juego. Algunas deudas técnicas pueden incurrir con un costo muy bajo y pueden permanecer a largo plazo, pero algunas deudas técnicas matarán su negocio con el tiempo y, por lo tanto, tienen un valor comercial muy alto. La clave nuevamente es darse cuenta de que todo es solo un PBI. Todo entra en la cartera de pedidos y usted trabaja en los elementos de esa cartera de pedidos en función del valor que agregan a la empresa. Ya sea una característica, un error o una deuda técnica, realmente no viene al caso.
Esto también tiene el beneficio de eludir su pregunta por completo. Como todo es un PBI, todo contribuye a la velocidad. La idea de hacer un trabajo que en realidad no está dimensionado y contado en su velocidad es algo loco para mí. Básicamente, estás creando un gran agujero negro en tus datos empíricos. La velocidad ya es una métrica bastante aproximada, es una estimación basada en una estimación basada en aún más estimaciones. Agregue un montón de cantidad variable de trabajo que no se rastrea, y ahora el número no tiene sentido. Todo lo que hace tu equipo en un sprint es parte de tu velocidad.
fuente