¿Qué factores determinan si un proyecto debe gestionarse de manera más ágil que tradicional en su experiencia?

Recientemente entrevisté a Jim Highsmith, uno de los padres del movimiento Ágil, quien ofreció una gran contribución sobre cuándo debería considerar un enfoque ágil. Lo que dijo fue bastante simple y parecía tener mucho sentido. (vea abajo)

P. Al tratar de comprender los límites de las prácticas ágiles, la mayoría de las personas se centran en el tamaño del proyecto. Sin embargo, habla más sobre la complejidad y la incertidumbre, que están relacionadas pero no son tan fáciles de entender. En términos generales, ¿cuál es la mejor manera para que los profesionales piensen sobre estos dos atributos de los programas y proyectos y cómo cada uno de ellos debería afectar su enfoque? ¿Alguna idea sobre esto específico para la planificación?

Creo que hay una especie de mito en la comunidad sobre el tamaño del proyecto. Parte de esto proviene del trabajo inicial de Agile que se centró más en pequeños equipos y pequeños proyectos. Entonces, la idea era que Agile funcionaba bien en proyectos pequeños, pero no escalaba bien a proyectos más grandes, pero ahora hay muchos ejemplos de que Agile funciona bien en proyectos muy grandes y organizaciones grandes.
Realmente debería pensar en esto son los términos de algunas preguntas clave que Agile ayuda a responder:

  • ¿A qué tamaño no es importante entregar valor a los clientes? (no hay tal tamaño)
  • ¿A qué tamaño deja de ser importante el valor central de crear mejores lugares de trabajo? (no hay tal tamaño)
  • ¿Pueden las grandes organizaciones darse el lujo de ser inflexibles, rígidas e insensibles? (por supuesto que no pueden)

Por lo tanto, hay muchas razones por las que queremos poder aplicar Agile a medida que escalamos. Entonces queremos escalar Agile, pero ¿cuáles son algunas de las cosas que necesitamos hacer para que eso suceda? Ahí es donde entran en juego la complejidad y la incertidumbre. La complejidad y la incertidumbre son dos dimensiones en las que debemos pensar. La dimensión de complejidad es con la que estamos más familiarizados; El tamaño del equipo, la distribución, el conocimiento del dominio, la complejidad computacional, todos juegan en la complejidad general. Los factores de incertidumbre comunes pueden incluir la novedad de la tecnología que está utilizando, la incertidumbre comercial y de marketing, los requisitos de productos nuevos / emergentes. Puede tener cualquier combinación de alta y baja complejidad e incertidumbre en cualquier proyecto dado, pero la estrategia general para escalar proyectos es la siguiente:

  • Una mayor complejidad requiere una mayor estructura: organizativamente, desde una perspectiva de comunicación, documentación y uso de herramientas.
  • La mayor incertidumbre exige la incorporación de prácticas que lo hagan más ágil: aumentar el aprendizaje, acortar los ciclos de retroalimentación y aumentar la experimentación.

Obviamente, los proyectos más difíciles son los que tienen alta complejidad y alta incertidumbre. Con ese tipo de proyectos, generalmente tiene un subconjunto más pequeño con alta incertidumbre que puede manejar por separado. Creo que el mensaje real aquí es que tienes que adaptarte y usar algunas estrategias más tradicionales y algunas estrategias ágiles, según corresponda. A menudo terminas usando una estrategia ágil en general e incorporas elementos tradicionales en ella según sea necesario.

Si desea ver el resto de la entrevista, puede encontrarla aquí.
http://www.gantthead.com/blog/Pr…

Le sugiero que mire el informe clásico de Boehm y Turner: Equilibrio de la agilidad y la disciplina ( http: //agile2003.agilealliance.o …) También está disponible como un texto de Amazon.

Aquí hay una idea general:
Las dimensiones principales para seleccionar ágil o tradicional son:

  1. Tamaño (tamaño relativo del proyecto y equipo)
  2. Criticidad (pérdida por impacto de defectos)
  3. Dinamismo (% de cambio en los requisitos por mes, por ejemplo)
  4. Cultura (prospera en orden o caos – escala relativa)
  5. Personal (nivel de habilidad del personal para ese proyecto. Escala mostrada en el enlace de arriba)

Luego se puede trazar un gráfico polar con los ejes anteriores para ver cuál es la contribución relativa de cada dimensión al proyecto. El alto dinamismo y la baja criticidad y la cultura caótica (es decir, altamente cooperativa, fácil acceso a las partes interesadas, mentalidad de trabajo, horarios estrictos debido a la ventana de mercado para nuevos productos, etc.) parecen favorecer la agilidad. Los sistemas de seguridad o críticos desde el punto de vista financiero con una forma de trabajo muy estricta (informes jerárquicos / supervisión), etc. señalan la inclinación hacia lo tradicional.

Aquí hay un ejemplo del informe anterior.

En este proyecto ‘híbrido’ es mejor usar ágil para piezas que son altamente propensas a cambiar y enfoques tradicionales para el resto. Una imagen como esta puede ayudar a simplificar la comprensión y ayudar a tomar decisiones en un nivel superior.

Cada una de las dimensiones que mencionó en su pregunta puede encajar cómodamente en las 5 recomendadas por Boehm y Turner. A menos que me haya perdido algo, algo como esto realmente debería ayudarlo a decidir a un alto nivel si usar enfoques ágiles, tradicionales o híbridos para el desarrollo de software. También puede crear modelos más detallados para su contexto específico.

Lo que la mayoría de la gente no entiende es el concepto de “metodologías”. La respuesta directa a su pregunta es: si todos los requisitos son conocidos y están bien definidos, se sabe que son inmutables, si se sabe que los recursos asignados son correctos, si se atienden todas las dependencias, es el ajuste perfecto para lo que llamaría ” enfoque estricto de cascada de caja negra “, con cero intervención externa, simplemente siguiendo el plan al pie de la letra.

La realidad es que no existe tal cosa como “todos los requisitos conocidos” y “todos los requisitos son inmutables”. Algunos requisitos son desconocidos y algunos cambian durante el proyecto. La única forma de lidiar con la incertidumbre es dividirla en pequeños trozos, ejecutar, verificar el resultado, reevaluar y comenzar de nuevo (un resumen de lo que Deming ya definió como PDCA). Lo que significa hacer pequeñas “cascadas” en cortos períodos de tiempo para permitir la reevaluación y ajustar las direcciones. Decidimos llamar a eso “Ágil” (es una definición muy aproximada, lo sé)

El problema es que la mayoría de las personas que comenzaron recientemente, que no tienen un conocimiento completo de lo que realmente es la gestión de proyectos y cómo hemos evolucionado hasta este punto, comienzan a sacar conclusiones basadas en suposiciones inexistentes.

Una conclusión extrema de los viejos tiempos es que “es posible mapear todos los requisitos” y al hacerlo es posible hacer un plan muy preciso. Una “estimación” se convierte en una “predicción” y comenzamos a hablar de “desviación estándar”, suponiendo que este es un proceso preciso y repetible. Por supuesto que esto está mal. El supuesto de desviación estándar solo se rompe porque un proyecto no sigue una distribución Normal. Su naturaleza compleja requiere una distribución de Paretto donde “el 20% del proyecto puede tomar el 80% del tiempo”, como todos sabemos por anécdota.

En el otro extremo, entendemos que la situación anterior es incorrecta y sacamos otra conclusión errónea: debido a que las predicciones son imposibles, las estimaciones también son imposibles, y no vale la pena intentarlo, por lo que asumimos que todo es completamente desconocido e iteramos para siempre hasta todos “sienten” que llegamos a un “producto terminado”. ¿Y cuando está hecho? Bueno, se hace cuando se hace, ni un minuto antes. Pero no intentaremos dar una “estimación”, lo que genera la confusión de que “estimación” equivale a “predicción”.

La gente llama al primer modelo extremo “tradicional” o “cascada” y al segundo modelo “ágil”. Tanto las definiciones como las conclusiones están muy equivocadas.

La gente nunca debe sacar conclusiones basadas en suposiciones irreales o inexistentes. Todo tiene contexto. Vamos a evaluar el terreno más común:

  • La mayoría de los proyectos no son del tipo Investigación y Desarrollo (I + D), donde existe una hipótesis muy abstracta que requiere una ciencia dura y una profunda experimentación. La mayoría de los proyectos son mashups de casos de uso existentes. Ecommerces, sistemas de gestión de contenidos, ERP, redes sociales, etc.
  • Cualquier producto puede tener tantas características como la creatividad o la demanda de los interesados ​​deseen. Sabemos que debemos “priorizar”. El problema es que la mayoría de la gente olvida que cada proyecto nunca se trata de las características o la cantidad de código producido. Siempre se trata de los “Objetivos”. “Qué problema está tratando de resolver este producto”. Ahora, en lugar de pensar en “qué características se sienten importantes”, debemos preguntarnos “qué características son realmente relevantes para lograr ese objetivo específico”. Pensando de esa manera, podemos encontrar rápidamente lo que debe estar dentro y lo que puede estar fuera para una próxima versión.
  • Es irreal pensar que todo fluirá sin problemas de acuerdo con planes arbitrarios. Los planes funcionan según los supuestos. La gente generalmente se olvida de los supuestos. Por ejemplo: sabemos que podemos producir un conjunto particular de pantallas HTML en 10 días, pero se supone que el cliente entregará todas las sesiones de fotos requeridas el día 1. Lo que afirmamos es: “tomará 10 días si es necesario los activos están disponibles el día X; de lo contrario, el proyecto retrasará tantos días como sea necesario para que los activos estén disponibles “. Esta es una condición aceptable de cualquier plan. Una propuesta de precio fijo tiene que tener varios de esos supuestos porque un plan sin supuestos es solo una ilusión.
  • La mayoría de los productos pueden describirse como una colección de “estructuras de desglose del trabajo” (WBS). Sí, esta es la jerga “tradicional”, y sí, es correcta. Como he dicho antes, la mayoría de los proyectos son solo combinaciones de “casos de uso” existentes. Si podemos describir un proyecto en términos de una colección de esos “casos de uso”, cualquier programador experimentado puede comenzar a ver fácilmente “órdenes de magnitud”. Por ejemplo, este proyecto simple es uno de esos ecommerces simples junto con un CMS simple. Teniendo en cuenta los requisitos, sabemos que suelen tardar 2 meses para el comercio electrónico y 1 mes para el CMS. Por lo tanto, es probable que el proyecto tarde al menos 3 meses en completarse. ¿Es esta una predicción precisa? No, pero es una estimación justa. Un profesional experimentado también sabe que lleva tiempo poner en marcha el proyecto, hay gastos generales involucrados en la integración de esas partes, hay gastos generales para hacer una calidad y garantía (Q&A) adecuadas, implementar en la producción, etc. Digamos que esto se suma a otro mes, ahora nos estamos acercando a un proyecto de 4 meses. Así es como hacemos análisis de abajo hacia arriba. Nuevamente, esto no es predicción, es una estimación aproximada.
  • no necesitamos suponer que conocemos todos los requisitos y que esos requisitos nunca cambiarán. Por el contrario, los supuestos garantizan la validez del plan. Un supuesto cambia, necesitamos tener reglas claras de compromiso. Por ejemplo: “si reemplazamos una característica con otra que toma aproximadamente el mismo tiempo, no necesitamos cambiar los plazos y costos originales” o “si un activo requerido tarda más de lo previsto en llegar, asumimos que el plazo será se retrasará al menos la misma cantidad de días “,” si no se realiza el último pago, no se transferirá la propiedad intelectual de los activos producidos “, etc. Esto es” flexibilidad “y sí, el contrato de precio fijo puede ser tan flexible.
  • un proyecto utilizará todo el tiempo que le dediques, esta es una anécdota que demuestra ser cierta muchas veces. El problema es que los desarrolladores no mantienen una productividad constante durante todo el proyecto. Por lo general, comienzan lentamente, recogen vapor y alcanzan la máxima velocidad en la segunda mitad del proyecto. Los métodos “ágiles” intentan minimizar esta diferencia. Si mide dónde está, puede corregir más rápido. Si mide más adelante en el proceso, no tiene más tiempo para corregir. Es por eso que la suposición de “fallar rápido” es tan importante en cualquier tipo de proyecto. Los proyectos de precio fijo pueden “fallar poco al principio” que ajustamos. No es razonable pensar que los clientes van a tirar su dinero por nada. Se enojan cuando no les damos opciones. Por ejemplo, decirles al final del proyecto que necesitaremos un mes adicional no es razonable. Es razonable decirles que podríamos necesitar un mes adicional, en la primera semana del proyecto. Puede pasar. Asumimos el costo de esa 1 semana si es necesario, pero el cliente todavía tiene tiempo para dirigir y se pueden hacer correcciones. Pueden decidir cortar algo del alcance. Pueden decidir que el tiempo extra lo vale. Pero tienen la opción. Lo único que realmente perjudica a los proyectos son los desarrolladores que ocultan los problemas hasta que ya no se pueden solucionar.

Todo se reduce a la experiencia. La mayoría de las personas pueden leer toda la literatura disponible y no comprender realmente lo que significa administrar un proyecto. El resumen de todo lo que he dicho es que realmente no importa usar métodos “tradicionales” o métodos “ágiles”. Todos los métodos son herramientas, utilizamos lo mejor para la situación actual, ni más ni menos.

Si puedes tomar algo de todo lo que he dicho, recuerda esto:

  • Los proyectos de precio fijo no son malos: la mayoría de la gente simplemente no sabe cómo administrarlos.
  • los clientes nunca saben todo lo que necesitan, es nuestro trabajo llenar los vacíos y crear reglas claras de compromiso.
  • las estimaciones no son predicciones (hay razones por las cuales son palabras diferentes). Las estimaciones son órdenes de magnitud.
  • Una propuesta de proyecto debe delinear suposiciones claras, no solo el alcance detallado.
  • Los procesos ágiles son importantes para que el equipo falle rápidamente.
  • Una “propuesta” de proyecto no es una “promesa de entregables”, es una propuesta para una relación con responsabilidades mutuas. No importa si es un proyecto de alcance flexible o un proyecto de precio fijo. Ambos fracasarán sin reglas claras de compromiso. Un producto que no tiene “objetivos” nunca se “terminará” con éxito.

Esos son entendimientos generales en los que creo que la gente debería pensar antes de hablar sobre “Usaré la metodología X” o algo así. No es la metodología que crea un proyecto exitoso, es la comprensión de lo que está tratando de lograr lo que lo hace.

Además de todas las otras respuestas aquí: es importante tener en cuenta los límites que su jurisdicción impone sobre el método que planea utilizar.

Por ejemplo, en la legislación alemana, una metodología ágil es más difícil de traducir en contratos, porque históricamente, cuando la tarea es construir algo (digamos, una cierta máquina), la máquina se construye y hace lo que se supone que debe hacer y el contrato es cumplido o no y luego el cliente está obligado a pagar el precio (por supuesto, esto se simplifica mucho).

Al construir algo después de una metodología ágil, básicamente está de acuerdo en ‘no sabemos el resultado exacto o cuál será el precio, pero al menos habrá algo’ (nuevamente, esto también se simplifica). Este tipo de inseguridad no está previsto en la ley.

Por lo tanto, debe encontrar una manera de manejar esta inseguridad, por ejemplo, definiendo ciertos puntos en el proceso en los que se debe pagar una parte del dinero, o cosas por el estilo.

Para concluir: si sabe lo que está construyendo porque ha construido algo así antes, adopte un enfoque tradicional y use sus experiencias para crear un mejor “plan”. Eso le ahorrará dinero al negociar el contrato. Por otro lado: si no tiene o no demasiada experiencia en lo que está construyendo / o el cliente aún no sabe exactamente cómo se debe ver todo, entonces sea ágil, pero negocie bien y asegúrese de que su cliente entienda qué “ágil” significa. De lo contrario, será un desastre legal en caso de que algo salga mal 🙂

A un nivel alto, diría que los proyectos de baja incertidumbre son los más adecuados para los enfoques tradicionales, mientras que construir para un mercado incierto exige agilidad. La incertidumbre puede ser técnica y puede ser la incertidumbre del mercado, específicamente si la solución que planea ofrecer satisfará las necesidades, y qué características requiere, y qué cambios al conjunto de características resultan de clientes que usan las características que ya tiene.

Cuando tiene un proyecto de baja incertidumbre, en el que puede fijar un conjunto de requisitos desde el principio, una empresa puede ser mejor con un enfoque tradicional que utiliza incluso un enfoque de oferta fija para asegurar los recursos. Con incertidumbre, la oferta fija no funciona tan bien porque no sabrá los resultados claramente antes de tiempo.

Tienes que considerar quién participa en el proyecto. Es el cliente, usted y el equipo. Según mi experiencia, la mejor manera sería seguir lo que el equipo está acostumbrado, pero también lo que el cliente espera. Por ejemplo, si el cliente quiere muchas iteraciones pequeñas, ágil sería mejor. Es muy probable que eso suceda cuando el cliente es un creador de ideas o un visionario. Pero también depende de a qué esté acostumbrado el gerente de proyecto y en qué se sienta cómodo. No seas ágil solo porque es popular ahora, cuando no encajas en la mentalidad ágil

Escuché a Martin Fowler dar una charla sobre la clasificación de proyectos en proyectos estratégicos y proyectos de servicios públicos. El factor diferenciador clave entre este tipo de proyectos es la “ventaja competitiva”.

Los proyectos estratégicos producen sistemas estratégicos y se caracterizan por las siguientes características

  1. Puede ser cualquier sistema que proporcione la ventaja competitiva a su negocio.
  2. En sistemas estratégicos, la velocidad y la innovación son más importantes y el costo es una consideración menor.
  3. El riesgo es el riesgo de omisión: no hacerlo.
  4. Para lograr el factor diferenciador, siga iteraciones más cortas, use equipos de funciones cruzadas y de alta capacidad.

Si se espera que el proyecto produzca un sistema que proporcione una ventaja competitiva a la organización, entonces Agile es el mejor camino a seguir.

Espero que esto ayude.

Las notas de la charla que escuché en diciembre de 2010 están disponibles aquí http://mysticmundane.blogspot.in

Según mi experiencia, el factor más importante para decidir si ejecutar o no un proyecto ágil o en cascada es el nivel de comprensión y disposición del cliente para trabajar en forma ágil.

Si hay un propietario de un producto que sabe lo que está haciendo (tanto en términos del proceso de desarrollo básico como de negociación entre las partes interesadas sobre las prioridades y la toma de decisiones), entiende ágil (o está realmente dispuesto a aprender) y tiene suficiente disponibilidad para jugar El papel completo, haría un proyecto con agile. A menudo, la trampa más peligrosa es que el desarrollador termina en el rol de PO y en el rol de desarrollador, lo que puede ser un desastre, y no crea la propiedad del producto terminado, o las decisiones que se tomaron en el camino para llegar a él.

Muchos colapsan ágilmente y caen en cascada, básicamente adoptando el enfoque de “vamos a construirlo todo, pero en el orden establecido por un proceso ágil”. En mi experiencia, esto no funciona como algo ágil, ya que el cliente se apega (o se apega) a hacer todo, incluso si no crea valor comercial. Siendo uno de los puntos principales de hacer las cosas de manera ágil, me preguntaría qué valor estaba generando el proceso.

Hay pocos factores que definirán el uso de un enfoque ágil. Si son múltiples interacciones y puntos de contacto con diferentes procesos, lo que tendrá más sentido es un procedimiento lineal, pero si las interacciones entre los flujos de trabajo no son dependientes entre sí, entonces seguiría el enfoque ágil.

El factor más importante para determinar la metodología del programa / proyecto es la organización: cómo se toman las decisiones y si la organización desea continuar con ese enfoque.

La decisión de comando y control juega bien con la cascada. Poder para la gente, juega bien con ágil.

Hay muchos factores en juego, pero la diferencia más significativa en estas metodologías es quién decide y cómo deciden.

El enfoque tradicional es vulnerable a los cambios, especialmente en etapas posteriores. Los cambios son caros, golpeando el tiempo y el presupuesto.
El enfoque ágil brinda una gran resistencia a los cambios, haciéndolos más baratos y no tan impactantes.
No todos lo disfrutan.

He gestionado una gran cantidad de proyectos usando cascada y ágil y, en mi experiencia, el único factor que importa es la capacidad y madurez de su organización en el desarrollo ágil. Si tiene una práctica ágil madura y capaz en una organización ágil, puede aplicar ágil a cualquier proyecto de cualquier complejidad y tamaño y obtener un mejor resultado que el que aplicará en cascada con la misma madurez y capacidad.