Requisitos descubiertos recientemente en Scrum

Si se descubre un requisito en medio de un proyecto o incluso más tarde, el costo de implementación de este requisito puede ser muy alto.

El Scrum sugiere que solo debemos refinar los principales PBI del Product Backlog. Los otros PBI no están refinados, por lo que los requisitos relacionados con estos PBI se descubrirán más tarde en la ejecución del proyecto.

¿Cuál es el enfoque de Scrum para esto?

"Si se descubre un requisito en medio de un proyecto o incluso más tarde, el costo de implementación de este requisito es muy alto". - cita necesaria.
¿Tiene algún ejemplo del tipo de requisito que descubre tarde y que resulta muy caro? Por lo general, si es importante, está en el radar, si es costoso/complejo, está cerca de la parte superior de la cartera de pedidos y si es importante, complejo y previamente desconocido, es un cambio externo que un plan prefabricado tampoco habría tenido en cuenta. Su experiencia puede variar, pero creo que esto se respondería mejor con ejemplos más claros.
Un cambio que invalida todo el trabajo anterior puede representar un costo irrecuperable, pero no más con Scrum que en un proyecto basado en una gran planificación inicial. La planificación iterativa y JIT evita (o al menos limita) los grandes costos irrecuperables, por lo que creo que su pregunta se basa en una premisa falsa.
@Erik ¿No es ese el objetivo de Scrum? Habrá cambios externos que se desconocen. El plan prefabricado obviamente no los tomaría en cuenta. Dado que Scrum no tiene un plan prefabricado o un alcance + tiempo fijo, simplemente inserte el nuevo requisito en el trabajo pendiente en orden de prioridad. Siempre que decidas que tienes suficiente para liberar, liberas. Si finalizó el nuevo requisito antes de esa fecha, es probable que otras cosas de menor prioridad no se terminaron... no hay problema, era de menor prioridad y resultó que no era necesario publicarlo.
... En particular, si comienza con un gran plan inicial, entonces podría ser tentador colocar elementos costosos/complejos cerca de la parte superior de la cartera de pedidos, en lugar de simplemente ordenarlos por orden de prioridad. Pero tal vez pasaste mucho tiempo trabajando en este artículo costoso/complejo y resulta que tenía una prioridad más baja que otros 10 artículos fáciles. Si hizo los 10 elementos fáciles + importantes y luego dijo cuánto tiempo tomaría el elemento costoso, tal vez el propietario del producto miraría el producto y decidiría que ya era lo suficientemente bueno, al menos para el lanzamiento inicial.
@Erik Un ejemplo podría ser descubrir que tiene que usar la base de datos Oracle en lugar de MSSQL ya que el cliente interno (importante) olvidó decírselo.
@lalala eso definitivamente no debería aparecer más tarde de la primera revisión de sprint.
@Erik y si lo hace? O digamos que la alta gerencia firmó un nuevo contrato marco con O mientras que el MS no se extendió.
Ese no es un requisito "descubierto" según la pregunta, sino más bien impuesto. Es una pregunta diferente y la respuesta es básicamente "esa será una opción tan costosa como cabría esperar en cualquier sistema".

Respuestas (4)

Si se descubre un requisito en medio de un proyecto o incluso más tarde, el costo de implementación de este requisito puede ser muy alto.

En esta declaración, está diciendo que el costo del cambio es alto (particularmente al final de un proyecto).

El enfoque ágil reconoce que el cambio sucede y, por lo tanto, se esfuerza por reducir el costo del cambio .

Esta es la diferencia fundamental entre el enfoque ágil y el desarrollo tradicional:

Desarrollo tradicional : seamos realmente buenos para predecir lo que sucederá (planificar bien)

Desarrollo ágil : seamos realmente buenos respondiendo al cambio (responder bien)

"Planificar bien" vs "responder bien". En efecto. Vale la pena agregar que la naturaleza del desarrollo de software generalmente no funciona bien con un enfoque basado en un plan, sin importar qué tan bien planee.

La priorización, la entrega continua y la revisión son la forma de controlar el riesgo de entrega para cualquier desarrollo de software, no solo cuando se usa Scrum. Sin embargo, no puedo estar de acuerdo con la primera oración de su pregunta. Si el trabajo se ordena sabiamente, el trabajo más importante y más riesgoso o costoso generalmente viene primero, por lo que el costo del trabajo inesperado debería tender a reducirse a medida que pasa el tiempo en lugar de aumentar. Un equipo experimentado también intentará identificar para un refinamiento temprano cualquier elemento que tenga un impacto arquitectónico amplio o que tenga muchas dependencias.

Ningún método proporciona una garantía contra imprevistos, pero la entrega continua ayuda a evitar sorpresas desagradables al probar el producto temprano y con frecuencia. Por lo general, ese es un método mucho más confiable que confiar solo en el análisis inicial para identificar problemas.

El problema es que si el PBI no se refina, es difícil decir si es arriesgado o no, si requiere un impacto arquitectónico o no.
Tiene razón en que existe el riesgo de hacer muy poco análisis por adelantado. También existe el riesgo de realizar demasiados análisis si se retrasan indebidamente las pruebas y la entrega. Su equipo está en la mejor posición para juzgar dónde lograr el equilibrio adecuado.

Tu dices:

Si se descubre un requisito en medio de un proyecto o incluso más tarde, el costo de implementación de este requisito puede ser muy alto.

Esto puede ser cierto o puede ser falso. Depende del tipo de cambio al que te refieras . Estoy asumiendo un gran cambio, o algo que falta de manera importante, o algo que se desvía de alguna manera de lo que has construido hasta ese momento. Si este es el caso, entonces sí, el cambio puede ser costoso. Si es solo un requisito como otros similares, entonces la implementación probablemente no sea tan alta.

La forma en que expresó esa primera oración y el resto de la pregunta implica que está utilizando un enfoque predictivo, o un enfoque tradicional en el que reúne los requisitos al principio y luego crea un plan para luego implementarlo. Solo así se puede hablar de "la mitad del proyecto".

Si está creando el producto de una manera ágil, por ejemplo, no sabrá que está en medio del proyecto porque se está enfocando en entregar valor, no en los plazos que le indican dónde se encuentra en el proyecto. Sin embargo, esto no significa que el uso de Agile o Scrum garantizará que un requisito que se encuentre en una etapa avanzada del desarrollo sea económico de implementar. Si está construyendo un avión blanco y en algún momento descubre que necesita un submarino, no puede simplemente cortarle las alas, pintarlo de negro y llamarlo listo. Este tipo de cambio estropeará su implementación sin importar si está utilizando un enfoque tradicional o Agile.

Sin embargo, lo que hace Agile es que le permite darse cuenta antes de que necesita un submarino en lugar de un avión , porque está construyendo cosas de manera incremental e iterativa sobre las que puede recopilar comentarios y aprender lo que se necesita, en lugar de asumir que usted sepa todo desde el principio y puede especificarlo en requisitos que no cambiarán o no faltarán de alguna manera. Como ya se mencionó en las otras respuestas, el enfoque Agile es diferente y reduce las posibilidades de descubrir algo que realmente puede ser muy costoso de implementar en algún momento del camino.

Desde una perspectiva secuencial, la idea de que un requisito que se descubre más adelante en el proyecto probablemente sea más costoso de abordar. Del mismo modo, es probable que un defecto encontrado tarde después de la originación también sea más costoso. Esto se debe a la cantidad de trabajo que se realiza. Considere que en los esfuerzos que se ejecutan utilizando métodos secuenciales, intenta obtener todos los requisitos de manera temprana. Luego, crea una arquitectura y un diseño que aborda todos esos requisitos. Luego implementa el diseño seleccionado. Un cambio, especialmente un requisito nuevo o una modificación a un requisito existente, requiere analizar el conjunto completo de requisitos en busca de problemas y conflictos, luego analizar y actualizar la arquitectura y el diseño, luego actualizar la implementación y luego las pruebas. Los cambios se propagan a lo largo de cada fase del ciclo de vida y todos los artefactos asociados.

Scrum, y la mayoría de los otros métodos ágiles, adoptan un enfoque diferente. Hay suficiente arquitectura y diseño para soportar los requisitos conocidos. El sistema evoluciona con el tiempo para adaptarse a requisitos nuevos o modificados. Eso no significa que un requisito radicalmente diferente no cause una gran cantidad de reelaboración, pero el riesgo se reduce. Al construir gradualmente y obtener retroalimentación para construir lo que se percibe como lo más importante a continuación, se reducirán las posibilidades de algo que es muy importante pero también muy difícil de implementar. Cualquier reelaboración se limitará a las partes del sistema ya construidas, en lugar de pasar por muchas fases de desarrollo.

También agregaría que a medida que aumenta la complejidad, el costo de cambiar la funcionalidad del sistema se vuelve más costoso. Sin embargo, usar un diseño incremental, mantener el diseño simple (piense en principios como KISS y YAGNI ) y pagar la deuda técnica antes de tiempo puede hacer que los cambios futuros sean menos costosos. La complejidad que existe debería cambiar más hacia la complejidad esencial en oposición a la complejidad accidental.