September 16, 2019

Empirismo

EmpScrum se basa en un proceso empírico. El empirismo se basa en tomar decisiones basados en la información concreta obtenida de la observación que muestra el progreso del desarrollo de producto, el empirismo se basa en la experimentación para validar las hipótesis. Lo contrario al empirismo es usar información ambigua, suposiciones y hechos no concretos.

Los tres pilares de Scrum que permiten gestionar un proceso empírico son la inspección, adaptación y transparencia. La inspección es evaluar la información del avance de producto, de la adopción de producto y los “Outcomes” o impacto en las clientes producidas con el lanzamiento al mercado, de la calidad de producto, de la capacidad de trabajo en equipo, de la motivación del equipo, del logro de objetivos de negocio entre otros. Esta evaluación no es realizada por una persona quien luego reporta un estado de avance, esta inspección implica una colaboración, trabajo en equipo y el soporte de las competencias técnicas las competencias técnicas para evaluar la información relacionada.

La inspección se puede dar en el equipo de desarrollo, equipo de Scrum, interesados y la organización misma. La transparencia es fundamental para que todos los miembros del equipo y los interesados de la organización tengan un entendimiento compartido y vean lo mismo. Entender y ver lo mismo es importante para el trabajo en equipo y el alineamiento hacia objetivos compartidos. La transparencia es clave para realizar la inspección. Cuando las personas son honestas y abiertas con confianza pueden discutir en un ambiente de seguridad emocional y sin temor al castigo acerca del resultado de la observación. La inspección no es un informe de estado, es un trabajo en equipo colaborando para determinar el progreso hacia el objetivo y los principales impedimentos y dependencias. La adaptación es la reflexión a partir de la inspección para cambiar la dirección del plan. Esta adaptación puede ocurrir a nivel de equipo de Scrum, Product Owner, interesados y la organización misma. Esta adaptación puede implicar por ejemplo adaptar el Product Backlog, Sprint Backlog, la forma de trabajo, la forma de realizar las pruebas, las prácticas y herramientas, etc. La inspección y adaptación son continuas, así como la mejora de la transparencia, Scrum provee de momentos específicos para la inspección y adaptación que son los eventos de Scrum. Sin embargo, estos momentos específicos no deberían ser los únicos momentos dedicados a usar los tres pilares de Scrum, estos momentos deben ser decididos y ampliadas por el equipo de Scrum en forma auto organizada. 

Durante el Sprint se tienen que inspeccionar los artefactos de Scrum continuamente para mejorar su transparencia, por ejemplo el equipo de desarrollo debe colaborar con el Product Owner y los clientes el tiempo suficiente para recibir comentarios con respecto al avance del producto terminado, enfocarse en refinar continuamente el Product Backlog para mejorar su transparencia, inspeccionar continuamente los impedimentos hacia el objetivo del Sprint y adaptar el trabajo más importante a realizar en el Sprint Backlog, para dar soporte a esta inspección se debe usar la información asociada al desarrollo de producto como pueden ser las prácticas, herramientas, los criterios de terminado y la cohesión y colaboración el equipo.

Empírico es aprender de la experiencia, es aprender del error, retrasar la adquisición de esta experiencia o de intentar aun cuando se puede fallar retrasaría la mejora y el logro de los objetivos. Para ser empírico es necesario aceptar que no podemos predecir el futuro y que necesitamos adaptarnos continuamente en un mundo cambiante, esta adaptación viene posterior a la inspección. 

Un proceso empírico no es un proceso repetible, si el proceso se llevará a cabo varias veces no repetiría las mismas acciones cada vez que se realiza. Un ejemplo de esta afirmación es cuando se juega un partido de fútbol. Si dos equipos jugarán varias veces sería casi imposible repetir la misma secuencia de acciones para llevar a cabo esos partidos.

Un proceso empírico se basa en ciclos de retro alimentación. Un ciclo de retroalimentación se refiere a los momentos donde tenemos la oportunidad para inspeccionar y adaptar. Estos ciclos de retro alimentación necesitan información concreta para tomar las decisiones necesarias para la adaptación, la inspección se tiene que realizar continuamente tomando como entrada la información concreta de las condiciones del entorno que afectan el resultado y en base a eso tomar acciones para avanzar hacia el objetivo. Los ciclos de retro alimentación y la información concreta son la clave del empirismo junto con la aceptación de que las cosas pueden cambiar en cualquier momento y que la mejor manera de enfrentar esas condiciones cambiantes es evaluar el progreso hacia el objetivo inspeccionado la información concreta de aquello que impide o retrasa avanzar. Un ciclo de retroalimentación no es otra cosa que el momento donde inspeccionamos y adaptamos, el momento donde evaluamos la información concreta para decidir el cambio en el curso de acción basado en esa evaluación.  Una consecuencia de este empirismo es que las acciones resultantes de la adaptación del plan no siguen una secuencia definida, se tomarán las acciones necesarias en el momento que se requieran. Lo contrario a usar el empirismo es adoptar un enfoque predictivo. En un enfoque predictivo los ciclos de retro alimentación son largos o no existen, no se acepta con facilidad los cambios y la incertidumbre de que pueden suceder cambios en cualquier momento. La inspección y adaptación produce un efecto en el entendimiento del progreso, cuanto se ha avanzado y cuanto falta hacia el objetivo. Cuando esta inspección y adaptación se hace en equipo se produce la transparencia. La transparencia es el entendimiento de todos los involucrados de cuanto se ha terminado y cuanto falta hacia el objetivo para fomentar la auto organización y la búsqueda y planteamiento de soluciones hacia el objetivo reduciendo un entorno de búsqueda de culpables.

La inspección se produce evaluando y observando la realidad. Esta realidad se basa en información concreta. Veamos algunos ejemplos de información concreta en un proceso de desarrollo:

  • Resultado de las pruebas, tendencia de las pruebas
  • Retro alimentación de los interesados y el Product Owner sobre el avance del producto.
  • Compilaciones y despliegues exitosos y no exitosos
  • Calidad de código del desarrollo de software
  • Impacto en los objetivos de negocio
  • Comunicación y colaboración en el equipo

La información concreta acerca de estos aspectos puede ayudar a determinar si se está avanzando o en qué medida ese progreso permite lograr el objetivo trazado.

En un entorno empírico se acepta la incertidumbre, se planifica pensando que las cosas pueden cambiar. Por ejemplo, cuando el equipo de desarrollo se compromete a una cantidad de Product Backlog Items (PBIs) a ser terminados en el Sprint, pero durante el desarrollo del Sprint descubren nuevas dependencias o algún evento de negocio provoca que el Product Owner necesita agregar un nuevo PBI durante el Sprint puede provocar que no necesariamente todo lo comprometido al inicio del Sprint se pueda terminar.

Scrum implementa “feedback loops” predefinidos para proveer límites y gestionar un proceso empírico a través de la inspección y adaptación. Si bien estos ciclos de retro alimentación son definidos es ideal que cada equipo de desarrollo viva su auto organización hacia el objetivo creando sus propios ciclos de retro alimentación que le permitan mejorar su inspección y adaptación. Por ejemplo, estos ciclos pueden ser ampliados cuando el equipo colabora continuamente con el Product Owner y clientes recibiendo “feedback” acerca del incremento de producto durante el Sprint y no solamente al final del Sprint, otro ejemplo es cuando se realizan despliegues continuos durante el Sprint y no solamente al final del Sprint, estos despliegues permiten inspeccionar el progreso hacia el objetivo del Sprint. Estos ciclos pueden ser ampliados y potenciados por un equipo auto organizado que define la mejor manera de vivir su autoorganización y de lograr el objetivo del Sprint. Lanzar producto continuamente mejora la transparencia y ayuda a la capacidad de adaptación a los cambios y con ello a la transformación hacia la agilidad.

Los valores de Scrum permiten crear una cultura donde aparezca la confianza necesaria para fomentar la transparencia y el uso de la inspección y adaptación, es decir el uso de los tres pilares de Scrum.