Blog en construcción

Blog todavía en construcción y en permanente evolución. Vuelve de vez en cuando, porque estoy incorporando nuevos contenidos.

miércoles, 3 de marzo de 2021

Los Doce Principios del Manifiesto Agile

El Manifiesto Agile define cuatro valores, como ya hemos comentado en un post anterior. Al mismo tiempo también define doce principios que incluyo a continuación (la versión en inglés se puede encontrar en este enlace).

  1. Nuestra prioridad más alta es satisfacer al cliente mediante la entrega temprana y constante de software que aporte valor.
  2. Los cambios en los requisitos son bienvenidos, incluso en la última fase del desarrollo. Los procesos Agile aprovechan el cambio para garantizar la ventaja competitiva del cliente.
  3. Entregamos software que funciona con frecuencia, con cadencias que van desde dos semanas a dos meses, con preferencia para los períodos más cortos.
  4. Las personas del área de negocio y los desarrolladores trabajan conjuntamente a lo largo del proyecto.
  5. Construye proyectos basándote en personas motivadas. Ofréceles en entorno y el soporte que necesitan y confía en ellos para hacer el trabajo.
  6. La forma más eficiente y efectiva de transmitir información en y hacia un equipo de desarrollo es en conversaciones cara a cara.
  7. El software que funciona es la principal medida de progreso.
  8. Los procesos Agile promueven el desarrollo sostenido en el tiempo. Los sponsors, desarrolladores y usuarios deben 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 incrementan la agilidad.
  10. La simplicidad - 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. En intervalos regulares, el team reflexiona sobre cómo ser más eficiente, y ajusta su comportamiento en concordancia.

En el post de valores, hablé de la colaboración con los clientes y aquí vuelve a aparecer. Esta colaboración con los clientes ayuda al equipo a obtener información de negocio crítica para poder adaptar de forma inmediata su actividad a la nueva información disponible. Para poder llegar a esta colaboración con el cliente es necesario que los interlocutores de negocio trabajan codo con codo y en constante diálogo con el equipo de desarrollo.

Como se puede apreciar, estos doce principios están muy imbricados con los cuatro valores.

Se presta especial atención y foco a los clientes, que están más satisfechos cuando reciben software que funciona con frecuencia, en lugar de tener que esperar largos períodos de tiempo entre releases. Además, si con esas entregas periódicas, el cliente o las necesidades del negocio identifican un nuevo requisito, este es aceptado y bienvenido, minimizando los retrasos y adaptándose a las necesidades del cliente y del negocio, y para ello es necesaria una colaboración estrecha entre el departamento de desarrollo y los encargados de velar por el negocio y los clientes.

Los equipos deben trabajar en un entorno en el que dispongan de todos los elementos que necesitan, deben contar con el soporte de la empresa y la autonomía para tomar sus propias decisiones, así como proponer las arquitecturas, requisitos y diseños que consideren oportunos, sin que vengan impuestas desde fuera del equipo. Esto implica una mayor motivación de los integrantes del equipo, que a su vez redunda en una mayor implicación en el trabajo y por tanto un resultado de mayor calidad.

El diálogo y la interacción son primordiales, y en caso de ser cara a cara, más efectivas en la mayoría de los casos, aunque con la pandemia, muchas empresas han constatado que la eficiencia de los equipos no ha disminuido trabajando desde casa (y por tanto sin estar en una única localización y con interacciones cara a cara), aunque los equipos destacan que determinadas actividades sigue siendo más productivo realizarlas presencialmente.

Los equipos Agile colaboran con sus socios de negocio y stakeholders para crear valor de negocio par la organización y sus clientes. Uno de los principios habla de las personas del área de negocios, y se refiere a aquellas personas relacionadas con ventas, marketing, atención al cliente y gestión de las cuentas. Utilizo el término "desarrolladores" para referirme a aquellas personas involucradas en la creacion de los productos.

Los equipos entregan tras cada iteración, identificando y comprometiéndose al principio de la misma a lo que va a estar disponible al termina ese ciclo y se establece una velocidad y por tanto un flujo de entregas constante y periódico. Agile se centra en entregar valor tan rápido como sea posible con dos objetivos (i) recibir feedback y mitigar el riesgo potencial de consumir tiempo desarrollando parte de un producto que no satisface las necesidades del cliente, y (ii) reducir el tiempo que transcurre hasta que se entrega el producto y, por tanto, “alguien” obtiene valor por el trabajo que se está realizando, incluida la propia empresa. Cuando más tarde se entregue, más tarde se obtienen ingresos y más tiempo tienen tus competidores para adelantarte. Del mismo modo que mencioné en el post de los cuatro valores de Agile, esto es aplicable tanto a empresas de software como a cualquier otro sector, industria o proyecto, sustituyendo “Software” por “entregables” o “soluciones”.

Los detalles técnicos son importantes y para ello es necesario que el equipo cuente con las competencias y conocimientos necesarios para desarrollar el trabajo de forma autónoma, manteniendo el ritmo marcado y aceptando los cambios propuestos, así como mejorando constantemente el producto.

El entorno también debe facilitar la toma de decisiones de desarrollar o llevar a cabo solamente aquello que realmente se necesita y mantener las entregas garantizando la simplicidad necesaria, sin añadir elementos superfluos que solo incrementan la complejidad y la necesidad de mantenimiento futuro. ¿Cuánto tiempo pueden tardar los desarrolladores de software en añadir funcionalidades e interfaces a un producto que solo acaban por confundir al usuario final? La simplicidad fomenta que los equipos se centren en el trabajo y las actividades que realmente importan y aportan. Un ejemplo puede ser la priorización de funcionalidades y actividades como resultado del feedback recibido a partir de un prototipo del producto y garantiza que el equipo trabajará exclusivamente en funcionalidad que aporta valor y no consumirá tiempo en otras que no son necesarias.

Además de hacer entregas periódicas, el equipo debe reflexionar regularmente sobre cómo están funcionando, tener retrospectivas y sesiones de feedback, que deben enfocarse en ser más eficientes y evolucionar hacia la excelencia, no solo centrándose en lo que ha pasado (feed-back) sino también en el futuro (feed-forward), adaptando y tuneando la forma de trabajar, las interacciones, la toma de decisiones, etc. En Agile es de suma importancia el aprendizaje constante y la adaptación de aquello que se puede mejorar (y conservar aquello que está funcionando). Los equipos deben estar constantemente ideando formas de mejorar el trabajo y los procesos, y para ello es necesario establecer tiempo después de cada iteración, para enfocarse completamente en cómo mejorar.

En mi opinión (y en mi experiencia como Agile Coach), algunas empresas hacen mucho énfasis en la mejora continua de los equipos, y para mi, equipos no son solo aquellos formados por "desarrolladores" (usando el término descrito más arriaba) que crean los entregables, sino que equipos son toda la organización. Por eso, estas retrospectivas aplican a los equipos de deasrrollo (después de una iteración), pero también a los managers, y al resto de la organización en diferentes escalas (por ejemplo, después de una release, después de una escalación de cliente, etc) y, ¿por qué no involucrar también cuando tenga sentido a personas de las "unidades de negocio"? En estas sesiones, el "equipo" debe reflexionar y responder a preguntas como: ¿Cómo lo estamos haciendo en el equipo? ¿El cliente está satisfecho? ¿Existen procesos optimizables? ¿Las herramientas que tenemos nos resultan de utilidad o son un obstáculo con el que tenemos que lidiar? ¿Estamos siguiendo los valores? ¿Estamos acumulando algún tipo de deuda (etendida como procesos, tecnología, carencias o arreglos provisionales en el producto que nos ralenticen)?

¿Qué opinas tú, lector, de estos principios?

No hay comentarios:

Publicar un comentario

Algunas diferencias entre Agile y Waterfall

En este post vamos a comentar algunas diferencias entre Agile y Waterfall en tres aspectos relevantes en la gestión de proyectos, los requis...