Recientemente he visto muchas publicaciones que dicen que una de las principales razones por las que se usa Agile es porque los clientes a menudo cambian los requisitos.
Sin embargo, digamos que los clientes no cambian los requisitos con frecuencia . De hecho, los clientes tienen requisitos firmes, aunque pueden ser un poco vagos (pero nada irrazonablemente vagos), pero uso Agile de todos modos.
La razón por la que uso Agile es porque el software es lo suficientemente complejo como para que haya detalles, problemas que no reconocería hasta que realmente los enfrentara. Podría hacer un enfoque de planificación pesada a gran escala como una cascada, pero luego tomaría unos meses finalizar todo el diseño de alto nivel y las firmas de codificación de bajo nivel. Sin embargo, hay un diseño arquitectónico fijo muy específico para el sistema.
Mi pregunta es: ¿se consideraría esto malo, codificación de vaquero, antipatrón, etc.? ¿Debemos emplear la cascada y planificar tanto como sea posible con gran detalle antes de comenzar a codificar cuando los requisitos son estables en lugar de esta mentalidad de 'hagámoslo' en Agile?
EDITAR: El punto principal aquí es que: NO PODEMOS culpar a los clientes por los requisitos cambiantes. Suponga que los clientes nos señalaron un problema muy concreto, denos una lista de deseos con detalles muy razonables y déjenos solos (es decir, los clientes tienen sus propias cosas productivas que hacer, no los molesten más. Solo demuéstrales cerca del termina cuando tienes un prototipo de trabajo mínimo). ¿Sería un error usar Agile en este escenario?
fuente
Respuestas:
Respuesta corta: no. Hacer "ágilmente" correctamente no significa "no planificar", significa no analizar demasiado las cosas.
Esa es una declaración demasiado simplificadora. "Cambiar los requisitos" también se trata de cómo cambia la comprensión del equipo de los requisitos. Y se trata de cómo cambian las prioridades del cliente sobre el requisito cuando realmente ve algunas versiones del software.
De hecho, "ágil" funciona en mi humilde opinión exactamente en la situación que usted describe : el cliente tiene un buen conocimiento de sus requisitos generales, puede escribir un plan general a partir de él, llenar su cartera de pedidos con muchas "historias de usuarios", y ya tiene suficiente información para elegir la arquitectura correcta del sistema. Las breves iteraciones de una estrategia de desarrollo ágil ayudarán a hacer que los "requisitos vagos" sean más precisos, con muchos comentarios si todavía está yendo en la dirección correcta. También le dará una respuesta temprana sobre el esfuerzo real y los costos (que es algo que aún puede fallar en un enfoque en cascada, incluso si conoce cada detalle en detalle).
fuente
Usar ágil en esta situación sigue siendo una muy buena idea. Agile tiene muchos beneficios, uno de los cuales es la retroalimentación periódica del cliente y la capacidad de responder a los requisitos cambiantes como usted menciona.
Una de las principales razones por las que los proyectos en cascada son notorios por el fracaso es el problema 'casi terminado': las pruebas produjeron montones de errores al final, dejando un producto indescifrable y sin idea de si necesita otros dos días o dos años para solucionar los errores pendientes. Ágil elimina este riesgo por completo. Si un proyecto ágil se está ejecutando en exceso, aún puede entregar una versión funcional que:
A) Demuestra al cliente que realmente está allí a través de las demostraciones ("Todas estas historias están hechas, podemos hacer las últimas si lo desea") y un poco más de tiempo obtendrá exactamente lo que quiere.
B) Potencialmente es lo suficientemente bueno para que sean felices de todos modos y se liberen.
Para mí, eliminar este riesgo de fracaso total es una razón suficiente para que una empresa se mueva a un proceso de desarrollo ágil, la capacidad de construir un mejor software de lo planeado inicialmente es la guinda del pastel. Como se menciona en otras respuestas, esos requisitos "concretos" a menudo siguen siendo sorprendentemente maleables.
fuente
Agile es ideal si necesita un ciclo de retroalimentación frecuente con el cliente. Esto puede deberse a que los requisitos cambian con frecuencia, pero también podría ser por otros motivos.
Por otro lado, Agile puede funcionar igualmente bien si los requisitos son completamente estables y el cliente espera solo una entrega de big bang, pero es posible que deba adaptar un poco las cosas para la cantidad de participación que el cliente espera tener durante el proyecto. Esto significa que el rol de Propietario del producto debe desempeñarse desde su propia organización y esa persona debe tener suficiente mandato del cliente para tomar decisiones.
fuente
Siempre puede dividir la versión grande en versiones más pequeñas (sprints) y pedirle comentarios a su cliente. De esta manera, está seguro de que está haciendo lo correcto y el cliente puede realizar un seguimiento de su progreso.
Si hay algo mal, puede ofrecer a su cliente la oportunidad de corregirlo antes, lo cual es muy bueno. Es mejor corregir sus errores lo antes posible, en lugar de mostrarle una mierda al final e intentar arreglarlo cuando ni siquiera sabe por dónde empezar.
fuente