Estoy en un equipo de proyecto de 4 desarrolladores, incluido yo mismo. Hemos tenido una larga discusión sobre cómo manejar el trabajo extra que surge en el curso de un solo elemento de trabajo.
Este trabajo adicional suele ser algo que está ligeramente relacionado con la tarea, pero no siempre es necesario para lograr el objetivo del elemento (puede ser una opinión). Los ejemplos incluyen, pero no se limitan a:
- refactorización del código modificado por el elemento de trabajo
- código de refactorización adyacente al código cambiado por el artículo
- rediseñando el área de código más grande alrededor del ticket. Por ejemplo, si un elemento hace que cambie una sola función, se da cuenta de que toda la clase ahora podría rehacerse para acomodar mejor este cambio.
- mejorar la interfaz de usuario en un formulario que acaba de modificar
Cuando este trabajo extra es pequeño, no nos importa. El problema es cuando este trabajo adicional causa una extensión sustancial del elemento más allá de la estimación original del punto característico. A veces, un elemento de 5 puntos llevará 13 puntos de tiempo. En un caso, teníamos un elemento de 13 puntos que, en retrospectiva, podría haber sido 80 puntos o más.
Hay dos opciones en nuestra discusión sobre cómo manejar esto.
Podemos aceptar el trabajo extra en el mismo elemento de trabajo y descartarlo como una estimación errónea. Los argumentos para esto han incluido:
- Planeamos "rellenar" al final del sprint para dar cuenta de este tipo de cosas.
- Siempre deje el código en mejor forma de lo que lo encontró. No verifique el trabajo a medias.
- Si dejamos la refactorización para más adelante, es difícil programarla y es posible que nunca se realice.
- Estás en el mejor "contexto" mental para manejar este trabajo ahora, ya que estás en la cintura en el código. Es mejor sacarlo del camino ahora y ser más eficiente que perder ese contexto cuando vuelvas más tarde.
Trazamos una línea para el elemento de trabajo actual y decimos que el trabajo adicional va a un ticket separado. Los argumentos incluyen:
- Tener un boleto separado permite una nueva estimación, por lo que no nos estamos mintiendo sobre cuántos puntos son realmente las cosas, o tener que admitir que todas nuestras estimaciones son terribles.
- El "relleno" del sprint está destinado a desafíos técnicos inesperados que son barreras directas para completar los requisitos del boleto. No está destinado a elementos secundarios que son simplemente "agradables".
- Si desea programar la refactorización, simplemente colóquelo en la parte superior de la cartera de pedidos.
- No hay forma de que podamos explicar adecuadamente estas cosas en una estimación, ya que parece algo arbitrario cuando surge. Un revisor de código podría decir "esos controles de la interfaz de usuario (que en realidad no modificó en este elemento de trabajo) son un poco confusos, ¿puede arreglar eso también?" que es como una hora, pero podrían decir "Bueno, si este control ahora hereda de la misma clase base que los otros, ¿por qué no mueve todo este código (cientos de líneas de) a la base y vuelve a conectar todo esto? , los cambios en cascada, etc.? " Y eso lleva una semana.
- "Contamina la escena del crimen" al agregar trabajo no relacionado al boleto, lo que hace que nuestras estimaciones originales no tengan sentido.
- En algunos casos, el trabajo adicional pospone un registro, lo que provoca el bloqueo entre los desarrolladores.
Algunos de nosotros ahora estamos diciendo que deberíamos decidir un corte, como si las cosas adicionales son menos de 2 FP, va en el mismo boleto, si es más, conviértalo en un boleto nuevo.
Dado que solo estamos unos meses en usar Agile, ¿cuál es la opinión de todos los veteranos Agile más experimentados sobre cómo manejar esto?
fuente
Los puntos de historia son una estimación de la complejidad relativa de una historia de usuario dada. Parece que estás usando puntos de historia para decir que esto tomará X hombre días / horas. En cambio, lucha por dos objetivos
Con el tiempo, esto le dará una línea de base para la velocidad. Cada historia de 5 puntos no tomará la misma cantidad de tiempo que las otras, pero la velocidad promedio por sprint (cuántos puntos de historia puede completar el equipo) será consistente.
Preocuparse por cuánto tiempo llevará una historia específica es contraproducente. Las estimaciones solo promedian el volumen de las historias de tamaño consistente (es decir, un puntero de 5 puede demorar un poco más debido a la refactorización, pero usted obtiene el beneficio de ese esfuerzo en uno relacionado).
fuente
Debe haber un límite relativo de cuánto hay dentro del elemento de trabajo original y cuánto es otra cosa. Las historias de usuarios son puntos de partida para las discusiones y, por lo tanto, puede haber todo tipo de elementos de alcance para concretar durante un sprint mientras se trabaja en una historia.
Puede haber ocasiones en las que, en una planificación de sprint, una historia puede agregar criterios adicionales en un esfuerzo por evitar el "arrastre de alcance" que puede suceder cuando un usuario desea un nuevo formulario y luego 101 cambios a ese formulario que no es realista para Hazlo en un sprint de 2 semanas a veces.
Una otra cara a tener en cuenta es cuánto valor se obtiene de este trabajo adicional. Puede haber toneladas de posibles refactorizaciones que podrían hacerse, pero ¿cuánto beneficio hay para alguien por todo ese trabajo? Aquí es donde debe haber algunas pautas para ayudar a que el equipo funcione bien pero no perderse al tratar de hacer que el código sea perfecto.
fuente