Métodos ágiles o planificación adecuada, ¿cuál es el equilibrio correcto?

Creo que hay algunos conceptos diferentes que se mezclan / combinan en esta pregunta, por lo que complementaré las otras respuestas con una que creo que es importante y no se ha abordado:

¿Cuál es el equilibrio correcto entre Big Design Up Front (BDUF) y Usted no lo va a necesitar (YAGNI), o simplemente menos diseño?

La razón de la combinación: las metodologías ágiles tienden a recomendar quizás medio día de diseño al comienzo de cada Sprint, mientras que las metodologías “más pesadas” (RUP típicas) o Waterfall pueden asignar meses a la tarea. Pero realmente estamos hablando de Ingeniería aquí, por lo que, aunque la prescripción del tiempo es una cuestión de proceso, la respuesta correcta está más basada en hechos que derivada de la filosofía.

DEPENDE DEL COSTO DE EQUIVOCARLO

El avance principal en el enfoque ágil en este sentido fue darse cuenta de que el costo de un error, al menos en software, es MUCHO más pequeño de lo que se suponía anteriormente. Básicamente, desde la historia del software, las personas han estado aplicando arquitectura física y analogías de ingeniería para construir software. Para construir un puente o un rascacielos se requiere una gran cantidad de diseño inicial, por lo que, naturalmente, se convirtió en parte del proceso de creación de software para realizar un gran diseño inicial.

Pero, ¿se imaginan lo que sucedería si se construyera un puente en el lugar equivocado, o si estuviera bien para los automóviles normales, pero nadie se detuviera a pensar en la carga de peso de los camiones de entrega diaria de las 5 am?

En el software, era cierto que un mal diseño podría ser costoso. Parte de la razón podría ser que el hardware al principio podría tener que ser personalizado. Además, al principio, no había herramientas o prácticas estándar para las pruebas automatizadas, el control de versiones, etc. Resulta que otro costo importante era inherente al proceso en sí: si para cambiar un diseño, debe cambiar toda la documentación, obtener varios niveles de aprobación, obtener el presupuesto para arreglarlo, mover las fechas de lanzamiento, etc., bueno … mejor hazlo bien la primera vez.

En estos días, para una gran mayoría de proyectos de software, es incluso discutible si la documentación vale la pena. Cambiar el software es tan rápido que a menudo es mejor realizar pruebas y errores (comprobar los resultados empíricos y adaptarse) que detenerse para intentar planificar con anticipación. A medida que disminuyen los riesgos arquitectónicos (gracias a la infraestructura escalable de la nube, los servicios no operativos, etc.), hay incluso menos variables de las que preocuparse. Mientras sigas uno de los patrones comunes, puedes seguirlo.

Así que ahora casi no he abogado por ningún diseño:

¿Vale la pena hacer un diseño frontal?

¡Por supuesto! Solo depende del costo de equivocarse (versus el costo de planificar con anticipación). Estos son algunos ejemplos de dónde la prueba y error podría no ser el mejor enfoque:

  • Al escribir software que va de la mano con un nuevo hardware (aunque el costo del nuevo hardware también está bajando …)
  • Cuando un error puede ser irrecuperable: sistemas de guía espacial, por ejemplo. Es cierto, ahora pueden actualizar el software en vuelo (suponiendo que todavía haya contacto), pero el sistema de actualización remota también tuvo que ser diseñado …
  • Cuando un error puede causar daños graves: sistemas de control nuclear, por ejemplo. O simplemente un sistema de actualización remota que, cuando está mal, bloqueará millones de teléfonos en todo el mundo.
  • Cuando el costo o el esfuerzo de reemplazar la solución actual es demasiado costoso o difícil: ¿cuánto tiempo ha llevado sacar el IPv6 a la naturaleza? ¿Cuánto esfuerzo valió la pena poner en ese diseño, en lugar de “arrojémoslo y hagamos un IPv6.1 si las cosas no están bien”? En una escala más pequeña, siempre pienso más en mis API públicas, de las que otras personas tendrán que depender, que en mi propio uso interno.

Esas son algunas ideas. Sin embargo, tenga en cuenta que NINGUNO de estos impide el uso de un proceso ágil. Podría evolucionar fácilmente IPv6 en un laboratorio sprint por sprint. Pero estamos hablando de diseño inicial aquí. La pregunta es, ¿qué tan malo sería liberar una solución inmadura en la naturaleza? ¿Y cómo sabrá que es inmaduro si no pone el pensamiento inicial para saber la diferencia?

Existen muchos estereotipos, mitos y conceptos erróneos sobre la gestión de proyectos ágil y tradicional basada en planes (lo que mucha gente llama libremente “Cascada”). Una de esas ideas erróneas es que un proyecto ágil no tiene planificación alguna. Eso definitivamente no es el caso. Otro concepto erróneo es que existe una opción binaria y mutuamente excluyente entre “Agile” y “Waterfall” y las personas intentan forzar sus proyectos a uno de esos extremos.

En lugar de forzar un proyecto a uno de esos extremos, un mejor enfoque es adaptar la metodología a la naturaleza del problema y uno de los factores clave para determinar el ajuste correcto es el nivel de incertidumbre en la situación. Consulte el curso de capacitación en línea gratuito que he desarrollado llamado “Conozca la verdad sobre Agile versus Waterfall” para obtener más información al respecto. Está diseñado para ayudar a las personas a ver estas dos alternativas en una nueva perspectiva como complementaria entre sí en lugar de competitiva.

Chuck Cobb
Autor de “La guía del administrador de proyectos para dominar Agile”
Echa un vistazo a: Agile Project Management Academy ( http: // agileprojectmanagementaca …)

Creo que hay algunos malentendidos / suposiciones incorrectas con respecto a ágil.

  • Ágil es muy estructurado. Necesita una forma estructurada de trabajo y codificación para ser flexible. Y la flexibilidad es lo que buscas cuando trabajas ágilmente
  • Supongo que con la amistad, ¿quieres decir ambigüedad?
    ¡Ágil no abraza la ambigüedad!
    Por el contrario, abarca ciclos cortos de retroalimentación y demostración de software de trabajo para validar la funcionalidad. Por lo tanto, la ambigüedad se puede aclarar lo antes posible.

    Abrazar el cambio y poder proporcionar un alto valor para el negocio no debe confundirse con falta de claridad y ambigüedad. Debe quedar perfectamente claro lo que debe desarrollarse.

  • La planificación es muy buena posible en proyectos ágiles, por ejemplo, utilizando la velocidad en Scrum y un gráfico de grabación de lanzamiento para planificar el contenido de un lanzamiento. Esto se puede planificar con alcance fijo o tiempo fijo. O puede usar Kanban y los tiempos de ciclo de las diferentes categorías de trabajo para calcular las fechas de entrega de cierta funcionalidad.
    Muchos equipos / organizaciones usan el ágil como una “excusa” para trabajar de manera caótica, sin planificar, sin documentar, solo haciendo el desarrollo y las actividades que les gustan. Pero esa nunca fue la forma en que se suponía que era ágil.
  • Cuando hace sus preguntas de gestión, creo que deberían saber las respuestas. No veo cómo trabajar de forma ágil sería una razón para no responder preguntas. ¿Puede dar un ejemplo?