jueves, 2 de junio de 2011

Metodologías Ágiles

En anteriores artículos hemos repasado algunas metodologías ágiles, en realidad he hablado de un par alejándome de las más populares. Y estoy reflexionando sobre un artículo en relación a cómo plantearía yo la adopción de las metodologías ágiles en una organización. En un tema complejo, pero apasionante, que muestra que lo importante es conocer lo que te pueden aportar las diferentes metodologías ágiles, y tradicionales diría yo, para ir creando el escenario optimizado para tu organización.

Es decir, de la siguiente lista, lo importante no es elegir uno, si no entender que nos puede aportar cada uno de ellos, según nuestra situación puntual.

SCRUM

SCRUM es problablemente una de las metodologías ágiles que más se han extendido, en la última presentación que vi de Angel Medinilla su nivel de adopción se situaba entorno al 58%, más un 20% más fruto de híbridos con KANBAN o XP.

Fue creada por Ken Schwaber y Jeff Sutherland. Que publicaron una breve colección de prácticas o guías a seguir, y una relación de roles predefinidos, imponiendose rápidamente en un standard de facto dentro de la gestión ágil.

La simplicidad y sencillez de sus prácticas facilitan eses interés y justifica la fácil adopción, pese a necesitar en algunos casos ser ampliado o reforzado en ciertos ámbitos mediante otras metodologías, algo para lo que, cómo comentaba en la introducción, nos debe parecer parece perfecto.


EXTREME PROGRAMMING - XP

XP creado originalmente por Kent Beck, ha sido y sigue siendo uno de las más destacadas metodologías ágiles, especialmente orientada al desarrollo, cosa que lo hace especialmente complementario a otros frameworks más genéricos que abarcan el ciclo de vida completo del desarrollo software.

Al igual que el resto de metodologías ágiles promueve la implicación del cliente, iteraciones rápidas que faciliten el feed-back, testing y planificación continuada, etc.

Los cuatro pilares de XP son:

  • Simplicidad
  • Comunicación
  • Feedback
  • Valentía
Las 12 prácticas que promueve son las siguientes, algunas de ellas cambiaron por completo el desarrollo, y ahora forman parte de cualquier equipo de desarrollo preocupado por la excelencia y la calidad del producto:

Algunas referencias:

CRYSTAL


Es una familia de metodologías de desarrollo creadas por Alistair Cockburn, se auto denominan autoadaptables, la más reconocida es Crystal Clearpersonalmente no he trabajado nunca con ellas en ninguna de mis anteriores experiencias.


Crystal recomienda una metodología específica en función de cada proyecto particular, basándose en tres factores críticos:

  • Densidad de comunicación (Volumen de personas involucradas)
  • Criticidad del sistema
  • Priorización del proyecto

Crystal está fundamentalmente enfocada en la comunicación, con una especial atención en la interacción, la comunidad, el equipo, las personas y sus perfiles y habilidades.


Las diferentes metodologías Crystal se basan en los dos siguientes fundamentos:

  • Los equipos pueden racionalizar los procesos a medida que van madurando e integrándose
  • Los proyectos son únicos y dinámicos. Y requieren de métodos específicamente diseñados para cada esfuerzo.
Alguna referencia:



DYNAMIC SYSTEM DEVELOPMENT METHOD - DSDM

Está considerada una de las metodologías ágiles iniciales, desarrollada en 1994 por DSDM Consortium. Según sus propios creadores se define cómo:

Un marco de ejecución de proyectos que ayuda al desarrollo y suministro de soluciones de negocio en plazos ajustados y presupuestos fijos.

El enfoque se basa en entender que los clientes no pueden predecir en detalle el trabajo que se espera que cubra su producto a priori. Por lo que plantea una metodología incremental e iterativa en común evidentemente con las metodologías ágiles.

Sigue un modelo de Consorcio, donde los miembros pagan una cuota anual por seguir acreditados en el uso de la metodología ( 2.000$ / año)

As such, it has the most developed training, support, templates, tools, and accreditation services of the agile methods (although Scrum, with its Scrum Master series of certifications, is close).

El método consiste en tres fases iterativas que se repiten: Modeling, Design-Build, e Implementation. Contrasta con otras metodologías ágiles en lo estricto de sus timeboxes, las funcionalidades pueden cambiar, pero no la fecha de entrega.

DSDM provee un sistema de priorización, todavía no hemos hablado en el Blog de MosCoW, lo haremos pronto, las categorías propuestas son:

  • Must have
  • Should have
  • Could have
  • Want to have

Siendo importante que las prioridades se asignen en función del valor de negocio que aportan al cliente, para mejorar la eficiencia y la simplicidad del desarrollo.

DSDM está basado en 9 principios clave que giran principalmente al rededor que las necesidades y el valor para el negocio del cliente, participación activa del usuario, equipos empowered, entregas frecuentes, testing integrado, colaboración con promotores.

Siendo la primera metodología que hace referencia al criterio de priorización en favor del valor para el cliente, y la regla del 80/20 (El 20% del desarrollo aporta el 80% del valor para el cliente)

Algunas referencias:


FEATURE-DRIVEN DEVELOPMENT (FDD)

Es una metodología de desarrollo software propuesta por Jeff De Luca y Peter Coad’s. Que se diferencia del resto de métodos ágiles por un diseño up-front design.

Se considera una metodología model-driven, de iteraciones cortas. Se establece un modelo global de dos semanas, de diseño de funcionalidad / construcción de funcionalidad. Intentado que estas sean pequeñas y de un valor tangile, visible, para el cliente.

Se basa en 8 prácticas:

  • Domain Object Modeling
  • Developing by Feature
  • Component/Class Ownership
  • Feature Teams, Inspections
  • Configuration Management
  • Regular Builds
  • Visibility of Progress and Results
Algunas referencias:


SCRUMBAN
Es una matedología propuesta por Angel Medinilla (Al menos yo la he conocido a través suyo), me parece una propuesta muy interesante que refleja muchas de las necesidades de la mayoría de organizaciones IT locales. Nadie mejor que él, o en este caso su matrial didáctico para presentárnoslo.

Me gustaría estudiar qué conceptos del user-center design podemos incorporar, aunque algunos ya están reflejados. Pero definitivamente me parece un punto de partida inmejorable.



Referencias