miércoles, 19 de julio de 2017

Ahora un recorrido por los métodos Ágiles

A finales del milenio, en la última década toma un auge la alternativa a los métodos en cascada y rigurosos como las propuestas del PMBOK del PMI y Prince2, buenos pero muy estructurados y estrictos. Es entonces que un grupo de iniciativas flexibles y adaptables toman el interés de algunos grupos y se denominan Ágiles.

"Desarrollo ágil" es un término derivado del Manifiesto Ágil (Agile Manifesto), escrito en 2001 por un grupo que incluía: a los creadores de Scrum, Extreme Programming (XP), Dynamic Systems Development Method (DSDM) y Crystal; un representante de Desarrollo Controlado por Características; y otros coordinadores diversos del pensamiento en la industria del software. El Manifiesto Ágil (Agile Manifesto) estableció un conjunto común de valores y principios dominantes para todas las metodologías ágiles individuales en el momento.

El manifiesto detalla cuatro valores clave para habilitar equipos de alto rendimiento.
  1. Los individuos y sus interacciones
  2. Entregar software que funciona
  3. Colaboración del cliente
  4. Responder al cambio

Por definición, las metodologías ágiles son aquellas que permiten adaptar la forma de trabajo a las condiciones del proyecto, consiguiendo flexibilidad e inmediatez en la respuesta para amoldar el proyecto y su desarrollo a las circunstancias específicas del entorno.

El uso de Agile como una aproximación a la gestión de proyectos se ha incrementado dramáticamente en los últimos años. Gartner predice que en breve los métodos ágiles de desarrollo serán utilizados en el 80% de todos los proyectos de desarrollo de software.

Mucha polémica puede surgir, más hoy en día el arte de balancear ambas corrientes retribuye mucho mejor a los proyectos y al conformar una PMO (Oficina de Proyectos)

Algunos métodos ágiles de desarrollo de software:
  • Adaptive Software Development (ASD)
  • Agile Unified Process
  • Crystal Clear
  • Feature Driven Development (FDD)
  • Lean Software Development (LSD)
  • Kanban (desarrollo)
  • Open Unified Process (OpenUP)
  • Programación Extrema (XP)
  • Método de desarrollo de sistemas dinámicos (DSDM)
  • Scrum
  • Metodología de desarrollo de software orientada a la generación de valor, Feature Driven Development (FCC)
  • PMI-ACP (Agile Certified Practitioner)

Manifiesto Ágil:
  1. Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor.
  2. Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente.
  3. Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con preferencia al periodo de tiempo más corto posible.
  4. Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto.
  5. Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo. 
  6. El método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara.
  7. El software funcionando es la medida principal de  progreso.
  8. Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida.
  9. La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad.
  10. La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial.
  11. Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados.
  12. A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia.


Ahora comentaremos a nivel general las opciones ágiles más populares.

SCRUM
Un marco de trabajo por el cual las personas pueden acometer "problemas complejos adaptativos", a la vez que entregar productos del máximo valor posible productiva y creativamente. Scrum es:
  • Ligero
  • Fácil de entender
  • Extremadamente difícil de llegar a dominar
El ciclo de Scrum comienza con una reunión de los socios, durante la cual se crea la visión del proyecto.Después, el propietario del producto desarrolla una Lista priorizada de pendientes del producto que contiene una lista requerimientos del negocio por orden de importancia en forma de una Historia de usuario.

Cada sprint comienza con una Reunión de planificación del sprint durante la cual se consideran las historias de usuario de alta prioridad para su inclusión en el sprint.

Un sprint suele durar entre una y seis semanas durante las cuales el equipo Scrum trabaja en la creación de Entregables (del inglés deliverables) en incrementos del producto potencialmente listos. Durante el sprint, se llevan cabo Reuniones diarias de pie muy breves y concretas (conocidas en inglés como Daily Standup Meeting —reuniones rápidas e informales en donde todos los asistentes están de pie a fin de que sean breves), en las que los miembros del equipo discuten progresos diarios. A medida que concluye el sprint, se lleva a cabo una Reunión de planificación del sprint en la cual se proporciona una demostración de los entregables al propietario del producto y a los socios relevantes. El propietario del producto acepta los entregables sólo si cumplen con los criterios de aceptación predefinidos. El ciclo del sprint termina con una Reunión de retrospectiva del sprint, donde el equipo presenta maneras para mejorar los procesos y el rendimiento a medida que avanzan al siguiente sprint.

Roles
 + Dueño de producto
 + Equipo de desarrollo
 + Scrum Master

Eventos
 + El Sprint
 + Reunión de planificación
 + Scrum diario
 + Revisión de sprint
 + Retrospectiva de sprint

Artefactos
 + Pila de product
 + Pila de sprint
 + Incremento
Las reglas de Scrum relacionan los eventos, roles y artefactos, gobernando las relaciones e interacciones entre ellos. Se basa en la teoría de control de procesos empírica o empirismo. El empirismo asegura que el conocimiento procede de la experiencia y de tomar decisiones basándose en lo que se conoce. Emplea un enfoque iterativo e incremental para optimizar la predictibilidad y el control del riesgo.

Tres pilares soportan toda la implementación del control de procesos empírico: transparencia, inspección y adaptación.


Extreme Programming (XP) 
Surge como una nueva manera de encarar proyectos de software, proponiendo una metodología basada esencialmente en la simplicidad y agilidad. Las metodologías de desarrollo de software tradicionales (ciclo de vida en cascada, evolutivo, en espiral, iterativo, etc.), parecen, comparados con los nuevos métodos propuestos en XP, como pesados y poco eficientes. La crítica más frecuente a estas metodologías “clásicas” es que son demasiado burocráticas. Hay tanto que hacer para seguir la metodología que, a veces, el ritmo entero del desarrollo se retarda. Como respuesta a esto, se ha visto en los últimos tiempos el surgimiento de “Metodologías Ágiles”. Estos nuevos métodos buscan un punto medio entre la ausencia de procesos y el abuso de los mismos, proponiendo un proceso cuyo esfuerzo valga la pena.

La metodología XP define cuatro variables para cualquier proyecto de software: Costo, Tiempo, Calidad y Alcance. Además, se especifica que, de estas cuatro variables, sólo tres de ellas podrán ser fijadas arbitrariamente por actores externos al grupo de desarrolladores (clientes y jefes de proyecto). El valor de la variable restante podrá ser establecido por el equipo de desarrollo, en función de los valores de las otras tres.



Kanban
Utiliza principios y artefactos propios pero, diferentemente de Scrum, no indica cuales roles o reuniones hay que aplicar para llevar a cabo la gestión. Esto implica un menor impacto debido al cambio introducido, mayor flexibilidad y un menor coste de implantación.

Kanban se adapta a las estructuras existentes de cada organización

Los mismos roles y la misma estructura organizativa podrían ser un elemento que genere cuellos de botella (elementos que ralentizan el flujo) y, en este caso, deberían ser objeto de revisión gracias a las Reuniones de Retrospectivas: reuniones donde se analiza lo que ha funcionado, lo que no ha funcionado, lo que se ha hecho bien y lo que se debería hacer en futuro.


Existe una serie de principios básicos con el fin de obtener el máximo rendimiento de su flujo de trabajo:
  • Visualice lo que hace (su flujo de trabajo)
  • Realice un seguimiento de su tiempo
  • Utilice tarjetas de colores para distinguir los Tipos de trabajo, Prioridades, Etiquetas, Fechas límite y más.
  • Identifique los cuellos de botella y elimine lo que resulta descartable.
PMI y Prince 2
Como era previsible, ambas metodologías tradicionales como PMI en su PMBOK y el modelo estructurado de PRINCE2 ofrecen sus opciones basadas en Agile donde son similares a SCRUM (SBOK) con ciertas adecuaciones particulares, que en el fondo ofrecen los mismos resultados.


SAFe
Si bien el Scaled Agile Framework ha tomado auge en los años recientes, su versión 4 está muy completa para evolucionar una mezcla de métodos conocidos. Parte de un espíritu similar a la Arquitectura Empresarial donde se ensambla con madurez cada parte de la cultura de trabajo y se puede iniciar desde la parte de negocio donde se vale canvas, el balanced scorecard, PMO, esquema agile de indicadores. Que se combina con un modelo DevOps, QA/QC, XP, Kanban, Scrum. Madurando al nivel de lograr CD/CI con un modelo de fábrica denominado PI(Program Increment)



Finalmente
La experiencia de cada líder y sus equipos es la garantía del éxito al adoptar un método de trabajo que todos conocerán y seguirán como disciplina; en acuerdo con el cliente.

Regularmente los procesos maduros balancean la para la PMO basada en OPM3 lo mejor que aporta el PMBOK, Prince2, Kanban, Scrum, SBOK, XP, CMMi. Y pueden alinearse a modelo como el MAAGTICSI y enriquecer su área de aplicación con TOGAF, Archimate, BPMN, BABOK, ITIL, COBIT, BSC. En esquemas con gobierno de IT, se puede imulsar SAFe o un modelo OPM3 mejorado que también armoniza las metodologías.

En la práctica suelo realizar este tipo de balanceo y se adapta a cada cliente y programa de proyectos. La madurez se consolida gradualmente al partir de pilotos y un modelo de seguimiento continuo que entre otras bondades permite detectar y mitigar riesgos oportunamente, con la visión de otener productos/servicios de alta calidad, satisfacción y rentabilidad. Es así como las estadísticas de consuelo quedan en el pasado.

@JormerMx
Program Manager, PMO
#JMCoach 

Il miglioramento continuo funziona?

 Molte volte abbiamo sentito parlare di miglioramento continuo e non ne vediamo i reali benefici, questo forse è dovuto alla scarsa conoscen...