TEMA 2.3 | Metod. Ágiles

Metodologías Ágiles

  • Se han convertido en “mainstream”.
  • Se logra una mayor productividad, lanzamientos más rápidos, y experiencias mejoradas de los clientes.
  • Las metodologías ligeras aparecen para sustituir a las metodologías pesadas gracias a su capacidad de adaptación y orientación al público.
    • Las metodologías ágiles permiten realizar proyectos más eficientemente que con procesos tradicionales.
    • Una de las cualidades más significativas de estas metodologías es su sencillez.
    • Los managers que dirigen proyectos complejos a menudo combinan ambos métodos para darles más flexibilidad y mejores resultados.

Programación Extrema - XP

  • Creada por Kent Beck.
  • El problema de los proyectos de desarrollo de software no es el cambio, sino la incapacidad de afrontar el cambio cuando se produce.

Ciclo de Vida Iterativo

  • Sustituye al ciclo de vida en cascada.
  • El ciclo iterativo se adapta más a los proyectos con requisitos muy cambiantes en todo momento, mientras que en el ciclo en cascada no.
    • Las metodologías ágiles utilizan ciclos iterativos e incrementales.

Manifiesto Agile

  • Establece los valores y principios que permiten a los equipos desarrollar software rápidamente, respondiendo a los cambios que puedan surgir.
  • Cuatro Valores Ágiles:
      1. Valorar a los individuos y las interacciones del equipo de desarrollo sobre el proceso y las herramientas.
      1. Desarrollar software que funciona más que conseguir una documentación exhaustiva: Documentos cortos y centrados en lo fundamental.
      1. La colaboración con el cliente más que la negociación de un contrato:Tener buena relación y confianza con el cliente. Interacción constante.
      1. Responder a los cambios más que seguir estrictamente un plan.
  • Doce Principios del Manifiesto:
      1. La prioridad es satisfacer al cliente mediante entregas tempranas y continuas de software que le aporten valor.
      1. Dar la bienvenida a los cambios para que el cliente tenga una ventaja competitiva.
      1. Entregar frecuentemente software que funcione desde 2 semanas a 2 de meses con el menor intervalo de tiempo posible entre entregas.
      1. La gente del negocio y los desarrolladores deben trabajar juntos a lo largo del proyecto. Negocio y tecnología coordinados.
      1. Construir el proyecto en torno a individuos motivados. Darles el entorno, el apoyo necesario y confiar en ellos para finalizar el trabajo.
      1. El diálogo cara a cara es el método más eficiente y efectivo para comunicar información dentro de un equipo de desarrollo.
      1. El software que funciona es la medida fundamental de progreso. Ver el software funcionando, como me haría sentir como usuario.
      1. Los promotores, desarrolladores y usuarios deberían ser capaces de mantener una paz constante. Descansar.
      1. La atención continúa a la calidad técnica y al buen diseño mejora la agilidad.
      1. La simplicidad es esencial. Minimizar lo accesorio.
      1. Las mejores arquitecturas, requisitos y diseños surgen de los equipos organizados por sí mismos.
      1. En intervalos regulares, el equipo se reúne y reflexiona respecto a cómo llegar a ser más efectivo. Según esto, ajusta su comportamiento.

Scrum

  • Marco de trabajo de carácter empírico.
  • El empirismo defiende que el conocimiento procede de la experiencia.
  • Fundado por Schwaber y Beedle en 2002.
  • Emplea un enfoque iterativo e incremental para optimizar la predictibilidad y el control del riesgo.
  • Ken Schwaber y Jeff Sutherland desarrollaron “La Guía Definitiva de Scrum: Las Reglas del Juego”.
  • Scrum tiene tres pilares fundamentales que articulan los procesos: transparencia, inspección y adaptación.
    • Transparencia: Los aspectos significativos del proceso deben ser visibles para aquellos que son responsables del resultado.
    • Inspección: Los usuarios de Scrum deben inspeccionar los artefactos de Scrum y el progreso para detectar variaciones indeseadas.
    • Adaptación: Si se detecta uno o más aspectos de un proceso como inaceptables, el proceso o el material debe adaptarse.

¿Quién forma un Equipo Scrum?

  • Product Owner: Responsable de maximizar el valor del producto y el trabajo del equipo de desarrollo.
  • Development Team: Profesionales que realizan el trabajo de entregar un “incremento” de producto “terminado” al final de cada Sprint.
  • Scrum Master: Responsable de asegurar que Scrum se entienda y adopte una especie de “coach” del grupo.
Los Scrum Team son autoorganizados y multifuncionales.
  • Los equipos multifuncionales tienen todas las competencias necesarias para llevar a cabo el trabajo sin depender de agentes externos.
  • El modelo de equipo en Scrum está diseñado para optimizar la flexibilidad, la creatividad y la productividad.
  • Las entregas incrementales de producto terminado aseguran que siempre estará disponible una versión potencialmente útil y funcional.
  • Sprint:
    • Importante: El término Sprint significa lo mismo que el término Iteración.
    • Bloqueo de tiempo de un mes o menos durante el cual se crea un incremento de producto “terminado” utilizable y desplegable.
  • Product BackLog:
    • Lista ordenada de los requisitos.
    • Nunca está completa.
    • Es dinámica debido a los cambios de requisitos de negocio, condiciones de mercado, etc.
  • Sprint Planning:
    • Reunión donde se crea el BackLog del sprint.
  • Sprint Backlog:
    • Conjunto de elementos de la Lista de Producto seleccionados para el Sprint.
    • Plan para entregar el Incremento de producto y conseguir el Objetivo del Sprint.
  • Sprint Review:
    • Reunión con el cliente en la que se recibe su feedback.
  • Sprint Retrospective:
    • Retrospectiva del Sprint en la que se seleccionan las mejoras pequeñas.

Definiciones

  • Cambio Continuo: Programa usado en un entorno real, que debe necesariamente cambiar o se volverá menos útil en ese entorno.
  • Complejidad Creciente: La estructura de un programa tiende a ser cada vez más compleja y se deben dedicar recursos extras.
  • Evolución Prolongada del Programa:
    • La evolución de los programas es un proceso autorregulativo.
    • Los atributos de los sistemas (tamaño, tiempo y errores documentados) son aproximadamente invariantes para cada entrega.
  • Estabilidad Organizacional: La velocidad de desarrollo es aproximadamente constante e independiente de los recursos dedicados al desarrollo.
  • Conservación de la Familiaridad: El cambio incremental en cada entrega es casi constante durante el tiempo de vida del programa.
  • Crecimiento Continuado: La funcionalidad ofrecida por los sistemas tiene que crecer continuamente para la satisfacción de los usuarios.
  • Decremento de la Calidad: La calidad de los sistemas software comenzará a disminuir a menos que se adapten a los cambios de su entorno.
  • Realimentación del Sistema:
    • Sistemas de realimentación multiagente.
    • Sistemas de realimentación multibucle.
    • Deben ser tratados como sistemas de realimentación para lograr una mejora del producto.

Método Lean StartUp

  • Moderna lógica que guía todo proceso de investigación aplicado al mundo de los negocios.
    • La necesidad de investigar comienza por la existencia de problemas.
    • Los problemas generan una sensación de malestar o incomodidad de la que queremos salir.
    • La investigación busca transformar esa situación incierta mediante la búsqueda del conocimiento.
  • Las Startups son mecanismos catalizadores de ideas en productos.
    • Normalmente suele utilizarse para aquellas que tienen un fuerte componente tecnológico.
  • El método Lean Startup pide:
    • Un pequeño producto que se va a probar si funciona, aunque tenga poca capacidad predictiva o prospectiva.
    • Predominan más las ideas “a posteriori”, que las ideas “a priori”.
  • Se diferencia de otros métodos (Lean manufacturing) en que se desconocen los atributos del producto que el consumidor considera valioso.

Eric Ries - Aprendizaje Validado

  • Método riguroso empleado para demostrar empíricamente que un equipo ha descubierto información valiosa sobre posibilidades del negocio.
  • Mantiene relación con el Lean Startup en que la idea hipotética debe ser tenida en cuenta por el cliente, experimentarla y darnos feedback.
  • A partir de la observación y experimentación podremos valorar nuestras hipótesis, y tomar decisiones.
  • La experimentación es fundamental para probar las hipótesis claves del negocio:
    • Las startups todavía no saben quiénes serán sus consumidores o cuáles serán sus productos.
    • A medida que el mundo se vuelve más incierto, cada vez es más difícil predecir el futuro.
    • Las planificaciones y previsiones sólo son precisas si se basan en una historia de funcionamiento larga y estable (entorno estático).

Eric Ries - Idea de Pivotar

  • Consiste en probar una hipótesis diferente porque el cliente no está satisfecho con el producto mínimo viable.
  • Imaginemos que el cliente no está dispuesto a pagar la cantidad planteada o el segmento de edad no es el adecuado.
  • El objetivo del producto mínimo viable (PMV) es probar la hipótesis del negocio:
    • No es necesariamente el producto más pequeño que se pueda imaginar.
    • Es la forma más rápida de entrar en el circuito de feedback de Crear-Medir-Aprender con el mínimo esfuerzo.
    • Al contrario que con el tradicional desarrollo de productos, el objetivo del PMV es empezar el proceso de aprendizaje, no acabarlo.

Enfoque Lean

  • Las personas no estamos acostumbradas a razonar de esta manera, creemos tener a priori, antes de la experimentación.
  • Partimos de un ideal, de una idea perfecta, acabada, completa, que nos hace generalizar y pensar que tiene capacidad de prospección.
    • Método del ensayo y error.
    • Tenemos que aprender a equivocarnos, y a que equivocarse no es fracasar.
  • El Lean Start-up modifica la forma en que accedemos al conocimiento.
    • Las mejores soluciones y las decisiones adecuadas nacen de la colaboración. Inteligencia colaborativa.
  • Las startups no pueden estar centradas en sí mismas, sino que deben escuchar al cliente y elaborar sus productos, prestándoles atención.
    • Debemos cambiar la ruta si el feedback nos dice que estamos equivocados.

Conclusión

  • El método Lean Startup puede resumirse en los siguientes elementos clave:
    • Ideación: Importancia de la creación de ideas nuevas, hipótesis o conjeturas.
    • Experimentación: Comprobación de ideas-producto hipotéticas mediante datos y feedback.
    • Pivotación: Capacidad para reajustar el producto a las necesidades del cliente, reelaborando el PMV y cambiando la hipótesis de partida.
    • Iteración: Necesidad de repetir el proceso, reconociendo la existencia de errores y dificultades como parte del camino.
  • El método Lean Startup nos obliga a afrontar la dura realidad que propone un entorno de extrema incertidumbre.
    • El optimismo es uno de los valores clave de los integrantes de una startup.
    • También es clave la toma de decisiones.