Recientemente tuve una conversación con un compañero desarrollador sobre desarrollo ágil de software. Si bien entiendo el principio, parece que los requisitos continuamente cambiantes crean el potencial para que el proyecto continúe para siempre. Pero, al menos donde trabajo, los proyectos deben completarse porque es un contrato.
Es decir, la primera iteración podría llevar meses, porque para algunos proyectos el cliente no puede usar una aplicación incompleta. Para algunos proyectos, creo que primero debe definir terminado, luego puede dividirlo en iteraciones y refinar su definición después de cada iteración. Pero siempre debes tener esta definición.
Si Agile Software Development abarca los requisitos cambiantes, ¿cómo sabe dónde termina? ¿Cómo puede presupuestar un proyecto cuando el resultado final siempre está cambiando?
¿El desarrollo de software ágil se trata más de un proceso ágil que de un producto ágil?
Respuestas:
Según los comentarios del OP, parece que él, como yo, trabaja para una tienda de consultoría, donde brindamos servicios de desarrollo para nuestros clientes ... Creo que en este marco mental que está causando su confusión ... Así que voy a Indique un hecho bien conocido pero nunca declarado.
Agile es incompatible con el desarrollo de software definido por un contrato.
Muchas tiendas de consultoría afirman que Agile está mintiendo. Simplemente dicen eso porque Agile ha alcanzado el estado de palabra de moda.
Agile funciona mejor para el desarrollo interno, donde los programadores trabajan a tiempo completo y se habla poco de presupuestos. Solo marcos de tiempo y características.
fuente
Si te estás centrando en hacer (lo que crees que es) lo más importante primero, entonces el proyecto terminará cuando:
fuente
Se detiene cuando la empresa decide que no desea hacer más iteraciones. Es de esperar que esto ocurra después de que se haya entregado una cantidad significativa de valor, pero antes de llegar demasiado lejos en el ámbito de los rendimientos decrecientes.
Siempre debe ser impulsado por "el negocio", sea lo que sea que eso signifique en su circunstancia. Podría ser la alta gerencia de una tienda de desarrollo de software o los patrocinadores comerciales reales en un entorno de desarrollo interno. Decidirán cuándo el costo de la próxima iteración supera el beneficio de las características que serán entregables en la próxima iteración.
fuente
Nunca, y esa es la belleza de esto.
El proyecto nunca está terminado . Alcanzaste otro lanzamiento, otro hito, pero mientras el dinero fluya, siempre hay una característica más para agregar, una pieza más para mejorar, un error más para corregir. El proyecto morirá cuando ya no sea necesario, pero nunca terminará. A diferencia del modelo Waterfall con requisito-> proyecto-> producto-> final, este es un ciclo que puede girar para siempre, siempre y cuando le paguen.
No es una característica comercial mencionada con frecuencia de esta tecnología, ¿verdad?
fuente
Aquí hay una idea errónea: Agile no alienta los cambios del proyecto. En cambio, permite el cambio sin desperdiciar trabajo o sacrificar áreas importantes de desarrollo.
Hay cuatro restricciones fundamentales para cualquier proyecto de ingeniería; Alcance, costo, tiempo y calidad. Cascada supone que estos serán estáticos. Esa es una suposición incorrecta; uno o más de estos SIEMPRE cambian. El desplazamiento del alcance, los presupuestos reducidos y otras "incógnitas desconocidas" SIEMPRE interfieren con un proyecto, cambiando las restricciones. Waterfall no anticipa esto, por lo que cuando sucede, el proyecto cambia de manera indeseable; las características importantes que aún no se han agregado desaparecen, o se hacen rápidamente, o el lanzamiento tiene que ser retrasado, o cuesta globos a medida que el primer ministro lanza dinero a los nuevos desarrolladores para que entren y ayuden a hacerlo bien.
Agile, por el contrario, permite que las restricciones cambien, y en realidad lo espera. Lo hace trabajando en pequeños trozos utilizables, de acuerdo con las prioridades del propietario, y, por lo tanto, los trozos son idealmente útiles de inmediato para el propietario del proyecto. Por lo tanto, reduce la exposición a lo desconocido al no hacer grandes planes en un marco de tiempo donde las incógnitas son grandes. Si la línea de tiempo cambia, se pueden agregar equipos, o se pueden "descartar" características menos importantes, y el sistema que el equipo ya ha construido no se ve afectado.
También proporciona mejores estimaciones del tiempo y el costo necesarios para producir el alcance dado con la calidad requerida. Las personas son notoriamente malas para estimar grandes trabajos; Se necesita MUCHA experiencia y MUCHO más cálculo inicial para hacerlo correctamente. Por el contrario, las personas generalmente son buenas jueces de lo que pueden hacer en un día, o una semana o dos. Eso produce rápidamente un estado estable donde puede extrapolar el tiempo y el costo del trabajo que queda por hacer en función de su ritmo histórico, con una buena cantidad de precisión.
En cuanto a la definición de puntos finales, tienes razón; Un proyecto ágil PUEDE continuar para siempre. Sin embargo, también puede hacerlo el SLDC tradicional; el cliente a menudo regresa con más dinero y una lista de deseos de actualizaciones. La diferencia es que no hay una línea clara entre "análisis", "diseño", "desarrollo" y "mantenimiento" cuando se observa el proyecto como un todo; todo sucede ladrillo por ladrillo, sprint por sprint. Si en algún momento el propietario quiere llamar al proyecto "hecho", puede hacerlo, y tendrá la suma total de "ladrillos" que ha pagado en un "muro" sólido; Puede que no sea tan alto o extendido hasta donde se planearon originalmente, pero está firmemente en su lugar, hace el trabajo y se puede agregar en una fecha posterior con un mínimo de derribo.
fuente
Termina una vez que se implementan todas las características y se corrigen todos los errores.
Si la fecha límite es fija y los requisitos también lo son. Entonces esto no será un problema. Pero si la fecha límite es fija, pero los requisitos están cambiando, entonces hay algo que debe hacer para continuar el proyecto con éxito.
Precio fijo parte 1, ¿qué tiene de malo?
Precio fijo parte 2, ¡arréglalo con agile!
fuente
La gran suposición detrás del desarrollo ágil es que los requisitos siempre cambian, sin importar la metodología que utilice. Ahora, por supuesto, podría crear un documento de requisitos, crear un plan para ejecutarlo y entregarlo al final, y puede parecer que sus requisitos no cambiaron. Es posible que no hayan cambiado en su plan, pero con los cambios del mercado y su mejor comprensión del producto por parte de usted y de su cliente, los requisitos en términos de lo que el cliente quiere van a cambiar. Agile entra y sugiere un proceso que no oculta estos cambios a través de un horario fijo, sino que responde a los cambios inevitables en el proceso.
Cuando haya terminado, ahora pasa de terminar un horario fijo a cuando su producto está en un lugar donde puede ofrecer suficiente valor comercial donde su cliente puede enviar y comercializar el software en su estado actual. Estar hecho está mucho más vinculado a la cantidad de valor que está entregando en lugar de cómo se adhirió a un cronograma.
fuente