¿Cómo aprovechar los beneficios del desarrollo ágil en un proyecto de costo fijo?

Recientemente me uní a una empresa que ha comenzado a moverse hacia un desarrollo "más ágil". Ya he sido propietario del producto para un proyecto de software interno y funcionó razonablemente bien hasta donde sé (también soy nuevo en el puesto y no soy desarrollador).

Sin embargo, pronto seré Product Owner de un proyecto de software de costo fijo. Nos han dado requisitos con suficiente detalle para que se pueda proponer una oferta.

La idea es tener una reunión inicial con el cliente para obtener especificaciones de diseño funcional "aproximadas". Una mirada al contrato revela que, al menos según lo escrito allí, esto no será tan duro después de todo.

Veo muchos problemas en mi camino. Me preocupa un poco que, al final, mi empresa espere que trabaje en el backlog de manera que la funcionalidad entregada no sea más que la establecida en la especificación "aproximada", mientras que el cliente no verá ninguna razón para dejar de trabajar hasta que resuelto perfectamente.

Tengo muy poca experiencia como Product Owner y tengo muchas ganas de que este proyecto salga bien porque me gusta lo que el cliente quiere conseguir con el proyecto.

¿Cómo puedo aprovechar los beneficios que ofrece el desarrollo ágil, en estas circunstancias?

SPOILER (después de un par de meses en el proyecto): como predijeron muchos en este hilo (y algo que yo esperaba), no funciona tan bien. Los problemas que esperaba que surgieran en mi camino llegaron... Afortunadamente, este será probablemente el primer y último proyecto que se "gestionó" de esta manera. Si te encuentras en una situación similar: protesta, mantén todo transparente para que nadie te culpe, protesta, ...

Un consejo general es tener muy en cuenta el triángulo del administrador de proyectos: en.wikipedia.org/wiki/Project_management_triangle Personalmente, me ha ayudado a explicar que simplemente no es posible hacer todo lo que todos quieren y aún así lanzar un producto de calidad a tiempo sin necesidad adicional. presupuesto y sin recortar ninguna funcionalidad.
¿Su proyecto tiene un cronograma fijo? ¿Hay una fecha de entrega fija en la que debe cumplir con las obligaciones contractuales? ¿Cuánto contacto tendrá con el cliente y con qué rapidez podrán responder a las preguntas? ¿Cuánto conocimiento del dominio tiene con respecto a cómo el cliente pretende usar el software?
Thomas, más o menos, pero no tanto; lo que es más importante, la cantidad de días de desarrollador es fija. Creo que estaré en contacto regularmente y confío en que responderán las preguntas que tenga entre las reuniones programadas. Tengo un conocimiento de dominio de bueno a muy bueno. Conozco su negocio en un nivel más abstracto, así como la mayoría de los detalles de los procesos que utilizan.
Regla #1: NUNCA trabaje con especificaciones aproximadas. El trabajo solo se realiza en especificaciones aprobadas tanto por el cliente como por la persona de su empresa con la autoridad pertinente.
De acuerdo, Danny, pero la realidad es que ([casi seguro] ( en.wikipedia.org/wiki/Almost_surely )) NUNCA sabrás los requisitos precisos antes de comenzar a trabajar, por lo que crear los documentos con gran detalle es realmente un desperdicio. ¿de tiempo? La funcionalidad de alto nivel ya está descrita en el contrato.
@DannySchoemann: el contexto lo es todo, y "nunca" ignora el contexto. :)
@BootstrapBill: cuanto más detallada sea la especificación, más rápida será la codificación y menos cambios. Esto puede sorprenderlo, pero en algunas empresas, las especificaciones tienden a declararse completas y cualquier cambio tiene un costo como una solicitud de cambio . Mientras tanto, disfruta disparando a un objetivo en movimiento.

Respuestas (4)

Scrum es un marco ágil que se enfoca en adaptarse al cambio y brindar valor comercial. Fomenta la retroalimentación y busca entregar lo que se necesita, que a menudo no es lo mismo que se planeó originalmente.

Combinar Scrum con un precio fijo, contrato de alcance fijo es un desafío. A menudo, puede dar lugar a discusiones entre el cliente y el proveedor sobre qué es un cambio válido y qué debe pagarse como funcionalidad 'nueva'.

Esto es particularmente difícil para usted, ya que parece que no está en un rol genuino de propietario del producto, ya que no puede tomar decisiones sobre el alcance.

Mi recomendación sería utilizar un enfoque muy transparente para su trabajo. Asegúrese de que todas las decisiones sobre la funcionalidad se describan claramente y que también se aclaren las implicaciones del cambio.

Valdría la pena hacer una planificación de lanzamiento frecuente. Aquí es donde observa la velocidad del equipo y ve cuánto tiempo les llevará completar el trabajo que queda por hacer. Puede encontrar que si el cliente realiza cambios y si el equipo encuentra problemas técnicos, la fecha límite del proyecto (y el costo del proyecto) también cambia. El mejor enfoque es hacer que estos cambios y su impacto sean lo más públicos posible, de modo que sean discutidos tanto por su cliente como por el equipo de gestión de su organización.

Algunas partes de Scrum pueden ayudarlo a hacer que las cosas sean transparentes. Asegúrese de que el trabajo pendiente sea público y que el progreso se muestre claramente. Hable con frecuencia con sus partes interesadas y asegúrese de que estén completamente comprometidos con el proyecto.

La metodología ágil y los proyectos de precio fijo no van bien juntos, ya que al hacer una entrega de precio fijo no podrá obtener los mejores beneficios de hacer un proyecto de manera ágil. Para citar un ejemplo, es difícil incorporar cambios de demostración y cambios comerciales cuando se ejecuta dentro de límites fijos.

Habiendo dicho eso, aún puede hacerlo en sprints/de manera ágil con los siguientes pasos/preparaciones realizadas.

  1. Asegúrese de comprender las especificaciones y la funcionalidad claramente definidas antes de comprometerse con la oferta fija.
  2. No omita elementos abiertos/elementos ambiguos; o los incluye en su entrega de precio fijo después de considerar los factores de riesgo o los deja fuera.
  3. Planifique sus iteraciones y objetivos de sprint. El sprint cero es una buena fase para hacer esto, ya que puede agrupar elementos en sprints que pueden reducir el esfuerzo. (Tenga en cuenta que esto va en contra de los principios ágiles de hacer una planificación "suficiente").
  4. Haga una lista de elementos/funciones excluidas de esta fase de entrega (si es posible, agregue estimaciones aproximadas).
  5. Realice un seguimiento de su progreso y sea transparente acerca de los retrasos y los problemas inesperados.
  6. Comprometerse con las partes interesadas tanto como sea posible para que pueda gestionar las expectativas de manera eficaz.
  7. Manténgase cerca del equipo y asegúrese de que comprendan y sigan los requisitos correctamente. Podría suceder que se alejen y creen código/datos de prueba innecesarios, lo que significa que perderá tiempo.
  8. Realizar demostraciones en este viaje predefinido es un desafío. Probablemente tendría que agregar las sugerencias/cambios a la cartera de pedidos con miras a abordarlos en la siguiente fase en lugar de implementarlos en el próximo sprint. Si por algún motivo (por ejemplo, el valor comercial) se le pide que implemente alguno, asegúrese de intercambiar un artículo de igual peso.
  9. Aconseje al equipo que trabaje de manera muy colaborativa para que los escenarios sean claros y esto reducirá los errores y también hará que las correcciones sean fáciles y rápidas.
  10. Sobre todo, es importante que discuta el enfoque y las limitaciones con el equipo y el propietario del producto/negocio y otras partes interesadas y obtenga su aceptación antes de comenzar.

Se parece mucho a una cascada y es menos satisfactorio, ¡pero puede planear generar valor comercial en cada sprint y continuar!

¡Esto (al igual que la respuesta de Barnaby) es muy útil! Así que acepto su respuesta como "oficial" y me gustaría agradecerle personalmente :)

Fijar el alcance, luego fijar el precio. Actualiza constantemente a medida que avanzas.

Intente estimar el proyecto en un rango de acuerdo con los aspectos aproximados que tenga. Debido a que son 'aproximados', los rangos estimados de costo y tiempo pueden estar relativamente separados. 10k - 20k o 3T - 4T de 2016.

Usar iteraciones para el desarrollo. Después de cada iteración, obtendrá más conocimiento sobre el proyecto y las especificaciones. Cualquier conocimiento nuevo que pueda afectar el costo debe comunicarse adecuadamente. Trabaje con el equipo y actualice las estimaciones en consecuencia.

Analizar el progreso y el trabajo que queda. Determine qué es más importante: entregar el producto o no sobrepasar el presupuesto. Sobre la base de ese equilibrio, el proyecto entregará los resultados necesarios.

Deben suceder dos cosas durante el proyecto, mientras adquiere más conocimiento y disminuye la incertidumbre sobre los requisitos:

  1. Se da cuenta de que no es posible entregar este Alcance a este Costo. En cuyo caso solicita aumento de presupuesto y lo obtiene

o

  1. El costo sigue siendo el mismo, pero usted equilibra el Alcance para que se ajuste al presupuesto.

Las mejores prácticas ágiles que puede utilizar: - Enfoque iterativo (trabajo en Sprints); - Planificación de Sprint/Lanzamiento; - Refinamiento del Backlog (volver a priorizar el trabajo antes de cada Sprint, según la situación del proyecto). Puede utilizar la relación Riesgo - Valor para priorizarlo mejor; - Estimaciones de puntos de historia que, con el tiempo, le traerán velocidad. Con eso, puede calcular y predecir el costo de los artículos futuros en los que trabajará a partir de la acumulación. Esto lo ayudará a administrar el presupuesto; - Realice un seguimiento de los cambios, calcule su impacto en el cronograma de costos; - Hacer que el proyecto sea lo más transparente posible para los Stakeholders. Debe administrarlo de manera que entiendan "POR QUÉ" el proyecto costará más o tomará más tiempo, si este fuera el caso.

No estoy seguro de qué tiene que ver Agile (o cualquier otra metodología) con esta pregunta.

Sin una especificación aprobada, está disparando a un objetivo en movimiento. Podría trabajar en algo por un tiempo, completarlo, pasar a otras partes y luego tener que reorganizar la pieza inicial, lo que puede afectar a todas las piezas posteriores.

La regla #1 en el desarrollo de software eficiente es " NUNCA trabajes con especificaciones aproximadas ". El trabajo solo se realiza en especificaciones aprobadas tanto por el cliente como por la persona de su empresa con la autoridad pertinente.

Cuanto más detallada sea la especificación, más rápida será la codificación y menos cambios. Esto puede sorprenderlo, ¡pero en algunas empresas las especificaciones tienden a declararse completas! en algún momento. Cualquier cambio adicional tiene un costo, como una solicitud de cambio .

Una vez trabajé para un contratista que ganó una licitación a un precio muy bajo; debajo del costo. Todo su margen de beneficio se basaba en solicitudes de cambio . Su plan de juego era definir la especificación de tal manera que pareciera completa, pero en realidad le faltaban piezas clave. Cuando el cliente los solicitaba, se le cobraba.
"¿Qué? ¿La puerta no tiene manija?"
"No, no está en la especificación. Solo se especificó un ojo de cerradura".

Parece que su cliente está trabajando al revés; mantenga la especificación abierta para que se pueda incluir cualquier cosa en ella.

Está comprobado que trabajar de esta manera no genera valor para sus clientes. Si mide el éxito por "a tiempo, dentro del presupuesto y según las especificaciones", entonces se está perdiendo el valor: standishgroup.com/sample_research
@MrHinsh: ¿En qué parte de esa larga página de inicio a la que se vinculó puedo ver que no debería trabajar con especificaciones aproximadas? (Y no estaba diciendo que trabajara así, estaba señalando lo malo que era).
"Sin una especificación aprobada, estás disparando a un objetivo en movimiento". <--- Siempre estás disparando a un objetivo en movimiento. Agility minimiza el movimiento con incrementos más pequeños y rápidos. (Desafortunadamente, el grupo Standish requiere membresía para acceder a los informes)