Los 3 Amigos en SAFe

friends

Un acercamiento al nivel de Programa de SAFe

En SAFe a nivel de programa existe un equipo denominado el Release Management Team. Este equipo tiene la responsabilidad principal lograr un incremento de sistema “decente” en cada iteración de la cadencia a nivel de programa, es decir; es encargado de subir funcionalidad en los vagones del Tren de Entrega Ágil (o Agile Release Train o ART) en cada salida. Un Agile Release Train tiene un significado dual en SAFe. Primero, un ART es para el nivel de programa lo que una iteración es para un equipo. Es una iteración para el programa. La analogía proviene de las cadencias de salidas de los trenes de una estación, las mismas que se definen en rangos uniformes de tiempo y de constante consecución. Cada ART produce un incremento de sistema; donde se integran todas las historias que componen las Features planificadas de todos los equipos que trabajan en el proyecto o proyectos que se terminaron y aceptaron por los Product Owners en la iteración que acaba de terminar. Al igual que a nivel de equipos, existe una “System Demo” donde los stakeholders, expertos de negocio, ejecutivos y Clientes entregan feedback sobre el producto; y lo más importante, determinan si este incremento de Programa o PI se convierte en un entregable hacia el mercado o hacia el Cliente, cumpliendo así con el concepto Desarrollo en Cadencia – Entrega en Demanda. El segundo significado es, el ART es un grupo de personas (típicamente de entre 50 a 125) trabajando de forma coordinada y alineada a los objetivos de negocio en un flujo constante de entrega de valor para un Value Stream definido para la organización. Significa, que un ART es un equipo de proyecto formado de varios equipos ágiles, equipos de operaciones y especialistas (por ejemplo UX y Arquitectura) y un equipo coordinador a nivel de programa llamado el Release Management Team (RTM) que mencionaba inicialmente.

Típicamente, los integrantes del RTM son: El Release Train Engineer, el conductor del tren (o cariñosamente llamado: “el chofer”);  la persona que lleva a los demás hacia cumplir los objetivos del release, o en palabras SAFe, encargado de llevar el tren a la siguiente estación a tiempo. Funge como el Chief Scrum Master (por lo que coordina estrechamente con todos los Scrum Masters del Tren), eliminando los impedimentos a nivel de programa, escalando y trasladando los impedimentos de los equipos hacia las áreas o roles de la organización, facilitando la sesión de Inspect & Adapt (o Retrospectiva a nivel de Programa). Coordinando, escuchando, guiando, facilitando; es el Scrum Master a nivel de Programa, pero tiene mucha responsabilidad en la ejecución. El Product Manager (o Product Managers, dependerá de cada tren), la persona o equipo quien sabe qué cosas van en los vagones; conocido también como el Chief Product Owner. Esta persona junto con los Product Owners, personas de negocio, Subject Matter Experts, Marketing o UX, conforman el Product Management Team. Al igual que un Product Owner, tiene la responsabilidad de destilar las Features, organizar al equipo para lograr estimaciones, priorizarlas, identificar dependencias y establecer el contenido de cada incremento de Programa o release. Naturalmente, trabaja estrechamente con los POs y posee una visión y conocimiento del negocio, más no técnico necesariamente. El Development Manager (últimamente un rol muy polémico en varias conversaciones vía Twitter que he tenido). Lejos de ser el Jefe de los desarrolladores como el nombre del rol podría intuitivamente sugerir, es la persona que se preocupa por el desarrollo personal y profesional de las personas en el tren. En el Big Picture de SAFe no aparece a simple vista este rol, pero ingresando por Lean & Agile Leaders podremos encontrar literatura sobre el rol. Alguna vez envíe un mensaje a las personas de Scaled Agile Inc. sugiriendo cambiar el nombre (algo como People Development Lead, People Lead o algo parecido), en verdad que se presta a mal interpretación y automáticamente puede calzar con roles existentes en una organización como Jefe de Desarrollo, Gerente de Operaciones o algo así. Independiente de esto, el Development Manager es un Agile Champion. Es una persona que conoce, vive y transpira los valores y principios del manifiesto ágil y del pensamiento Lean, pero con un enfoque muy fuerte hacia las personas, preocupado por su bienestar, porque tengan lo que requieren para realizar su trabajo, que el entorno sea favorable, que se sientan bien. Es quien se preocupa por el desarrollo personal, de carrera y profesional. Además, SAFe le da responsabilidad de velar por el desempeño de los equipos, manejar relaciones con personal externo involucrado en el proyecto, ayudar al RTE a eliminar impedimentos, eliminar distracciones y apoyar en el proceso de adopción ágil en la organización. El Business Owner, él o los responsables fiduciarios de los resultados de negocio (normalmente financieros) del valor entregado por el tren. Normalmente es un grupo formado por ejecutivos de áreas de negocio, marketing u otros. Son responsables del ROI de la operación y del aporte de valor al Value Stream y a la organización. Junto con el Product Manager establecen los objetivos del programa a cual se anclan las Features, para que posteriormente se descompongan objetivos de iteración para los equipos, a los cuales se anclarán las historias más adelante. Parte del RTM son también el System Architect, encargado(s) de proveer lineamiento sobre la visión técnica, tecnológica y arquitectónica de la solución, guiando a los equipos en el diseño e implementación del producto, ayudando a construir (o construyendo ellos mismos como un equipo ágil) la Pista arquitectónica o los “rieles” por donde circula el tren, etc.; UX Designers, que brindan guías y lineamientos para crear y mejorar la experiencia de los usuarios y del uso de buenas prácticas para el diseño de UI, dando feedback e investigando sobre el comportamiento de los usuarios; el System Team, el grupo que apoya a los equipos en tareas de operaciones, infraestructura, pruebas de sistema. El System Team tiene la responsabilidad de habilitar a los equipos que integren sus incrementos de producto, realizar pruebas de sistema end-to-end (Performance, Carga, Seguridad, Disponibilidad, etc.) y prepara el ambiente para la System Demo. Y otros miembros que cada tren decida integrar para ayudar a la ejecución y a la entrega de valor.

Este equipo es y debe comportarse como un equipo ágil. Vivir los principios de colaboración, transparencia y mejora continua. No necesariamente significa que debe contar con un tablero con sus actividades de cada iteración (aunque no es mala idea), deben contar con reuniones de coordinación frecuentes, monitorear constantemente el estado del release y del tren, ver si se está alineado con los objetivos de negocio y del Value Stream, comunicación cara a cara, sesiones de feedback, transparentar los problemas, analizarlos y atenderlos, alzar la mano cuando se identifican riesgos, coraje, respeto, colaboración.

La Tríada en el corazón de la colaboración ágil a nivel de programa

Al ser un equipo ágil, el RTM realmente no tiene la necesidad de contar con líderes o jefes; pero tiene el compromiso de trabajar colaborativa y proactivamente para lograr que unos de los valores de SAFe se cumpla: Ejecución del Programa; y mas allá, lograr una cultura de entrega de valor constante. De mi experiencia con SAFe a través de varios equipos y programas, he visto que -si bien es cierto la responsabilidad es de todo el tren y de la organización- existen tres roles a los que veo correr activamente, entendiendo los objetivos del negocio, priorizando el alcance, estableciendo las fechas de entregables en base al contrato, analizando los problemas, pegando el papelógrafo en la pared para la ejecución del Release Planning, agendando sesiones con los Stakeholders, pendiente de los equipos, etc. Los 3 amigos: Release Train Engineer, Product Manager y Development Manager. Tomen en cuenta que no necesariamente cada rol corresponde a una persona (pueden ser dos o más ejerciendo el mismo rol, en función del tamaño del ART) pero estos roles en mi punto de vista son vitales y complementarios entre sí.

Piensen un momento en que el propósito de SAFe es escalar los beneficios de Agile a través de principios, prácticas y roles. Si está escalando con sólo con Scrum, por ejemplo; con varios equipos y varios Product backlogs; podría contar con una configuración de Chief Product Owner como lo propone Roman Pichler. Podría contar también con un rol que está ayudando a escalar problemas hacia la organización y brindando guía sobre el proceso Scrum, un puente con el management y la organización; por ejemplo un Chief Scrum Master, quien asistiría y facilitaría la S2 (Scrum de Scrums) o incluso la S3 (Scrum of Scrums of Scrums). Y al tener muchos equipos trabajando juntos sobre la misma iniciativa, posiblemente requiera un rol que deba estar pendiente de proveerles lo que necesitan (organizacionalmente), de su moral para su día a día, de su expectivas, de su crecimiento personal y profesional. Independientemente de los nombres de los roles, yo identifico este patrón en SAFe. Básicamente, una configuración de escalamiento de las que ya hemos leído, y que podemos adaptar a cada contexto.

Pensamientos finales

Aunque SAFe proponer temas muy interesantes, en realidad es la recopilación de muchas de las estrategias, enfoques y prácticas exitosas para la aplicación de los principios del desarrollo ágil a escala organizacional. Nuevamente, SAFe es un framework (al igual de Scrum por ejemplo); lo que quiere decir que NO HAY RECETAS!; y que su aplicación será exitosa en función de su apropiada adaptación al contexto, al negocio y la organización, y sobretodo de los resultados de negocio que habilite; pero fundamentalmente, este o cualquier framework será exitoso en la medida en la que conserve, promulge y potencie los valores y principios del Agilismo.

Gracias por leer, abrazos ágiles!.

Johnny

 

Referencias

 

 

Anuncios

La Definición de “Ready” es tan importante como la Definición de “Done”

Ready

Usted no puede empujar a nadie a subir la escalera a menos que esté listo para subir por él mismo. – Andrew Carnegie

Uno de los conceptos más importantes y conocidos en el desarrollo de software ágil -utilizando varios sabores como Scrum y Kanban- es la Definición de “Hecho” (o Definition of Done, o DoD). La definición de Done es un acuerdo del equipo, y en muchas ocasiones de la organización. Mediante el criterio de Done se puede conocer cuando una Historia de Usuario se encuentra “Hecha” para ser presentada al Producto Owner o Stakeholders. Brinda una guía al equipo sobre las condiciones necesarias que debe cumplir una historia para ser decentemente terminada presentada durante o al final de la iteración. Es una herramienta que brinda transparencia y permite un entendimiento común de lo que significa “Hecho”.

Ya en la práctica, consiste en una especie de checklist que reúne los criterios acordados por el equipo al que se somete cada historia antes de ser colocada en la preciada columna de Done en el Taskboard. En muchos tableros he visto también la columna “Done Done!” o “Accepted” dando así dos niveles de aprobación de la historia de usuario, Done significa que cumple todos los criterios establecidos por el equipo que normalmente incluyen: el código en el repositorio, todas pruebas unitarias y de aceptación en verde, documentación si fuera necesario, integración en el ambiente de pruebas, revisión por el tester en el ambiente de pruebas, etc.; y “Done Done” o “Accepted” cuando ha sido revisada y “firmada” por el Product Owner.

Varios agilistas sugieren  lo mínimo que debe contener la definición de Done, y les dejo algunos artículos para su revisión un poco más abajo; sin embargo, quiero con este post hablar de otra definición quizás no tan conocida pero desde mi punto de vista bastante útil; la “Definición de Listo”.

La Definición de “Ready” o DoR

Análoga a la Definición de “Hecho”, la definición de “Listo” es un acuerdo entre del equipo, especialmente entre el Product Owner y el equipo de Desarrollo donde se colocan los criterios por las cuales una historia se encuentra lista para ser implementada dentro de un sprint. Básicamente, es un conjunto de condiciones -y un checklist también- a la cual se somete una historia para ser tomada en un Sprint Planning.

¿Por qué es importante?

Varias razones. Desde la práctica, una historia de usuario no está lista a la primera. El product Backlog es orgánico y necesita un tiempo de maduración. Significa que mientras el equipo de desarrollo está trabajando en las historias comprometidas en el Sprint Planning anterior,  el Product Owner está trabajando en refinar su backlog y poner a punto las historias para la siguiente y subsiguiente iteración (pienso que un buen PO prepara historias para un par de sprints adelante). Esto es, comprender el objetivo y el alcance funcional con los usuarios, expertos del dominio, UX designers, Product Managers; priorizar la historias usando técnicas apropiadas, descomponiendo historias en un tamaño apropiado para el equipo, estableciendo criterios de aceptación, identificando dependencias entre los items de su backlog y otros backlogs, colaborando con otros POs, entendiendo y revisando desafíos de arquitectura o técnicos con el arquitecto o Líder Técnico y trabajando junto con el equipo en el grooming del backlog, revisando y priorizando Bugs cuando aparecen. Así es, mucho trabajo para nuestro PO.

Bob Galen habla mucho del “Readiness Criteria” en varios artículos y en su libro Agile Reflections y sugiere una lista de Ready como la siguiente (a estos puntos les daré mi modificación desde mi criterio en paréntesis, pero la lista original la colocaré en las referencias):

  • Historias bien definidas y con al menos 5 criterios de aceptación (este valor es heurístico, igual se puede establecer un número máximo de criterios de aceptación);
  • Historias de un Tamaño apropiado, que entre dentro de un sprint (un tamaño adecuado con que el equipo se sienta cómodo y mejore su throughput, un buen tamaño que permita un mejor entendimiento, mejores criterios de aceptación, más fácil de probar, más fácil revisar, mejora la moral del equipo);
  • Que el equipo haya revisado las historias en una sesión de Grooming, donde se haya comprendido la naturaleza, el valor y desafíos técnicos;
  • De ser necesario, que la historia haya tenido un spike para explorar las implicaciones de diseño, arquitectónicas o tecnológicas (cuando el equipo no tiene mucha incertidumbre sobre lo que implica técnicamente la historia, es apropiado un spike; luego de eso la historia se puede revisar nuevamente, estimar y pasar a la columna de Ready);
  • Que la historia sea transversal, es decir que describa un comportamiento end-to-end (que sea “visible” para le negocio);
  • Que el equipo comprenda el enfoque para las pruebas tomando en cuenta aspectos funcionales y no funcionales;
  • Que se haya identificado dependencias con otras historias dentro del mismo backlog u otros backlogs a los que una historia pueda estar conectada;
  • Que la historia se alinee (y esté “enganchada”) a un objetivo u objetivos del sprint, que sean claramente visibles y demostrables.

Esta definición es bastante útil cuando tenemos a un PO que está desarrollando sus skills y su “olfato” para gestionar el trabajo para un equipo ágil. Ahora estoy trabajando con unos 29 equipos y un equipo de 14 POs; y acabamos de introducir esta práctica para lograr que las historias lleguen lo mejor trabajadas a los equipos; y estoy viendo varios beneficios de su aplicación (que espero que se sigan expandiendo):

  • Sprint plannings más rápidos;
  • Involucramiento y conocimiento temprano del equipo sobre los desafíos del siguiente sprint;
  • Gestión colaborativa del backlog;
  • Feedback temprano;
  • Levantamiento temprano de riesgos y necesidades (si se necesita del apoyo de un arquitecto, el SM ya lo puede buscar y planificar para el siguiente sprint);
  • Mayor conciencia del equipo sobre los objetivos de negocio y el alcance;
  • Ayuda al PO a comprender la visión sobre aspectos técnicos que le indica el equipo, y a sensar con qué tamaño de historias se sienten cómodos;
  • Historias mejor trabajadas en las cuales el equipo se siente parte y por ende mejora el compromiso.

Pensamientos finales

Pienso que el uso definiciones DoD y DoR claras y difundidas son herramientas muy útiles para la colaboración , claridad y “fluidez” de los equipos. Haga que el mismo equipo sea quienes revisen y definan estas definiciones, pero si están trabajando con varios equipos colaborando para construir juntos un “big working software” estas definiciones deben ser coherentes a través de todos lo grupos. Se puede crear comités y reuniones de trabajo para afinarlas. Igualmente, están sujetas a revisión y modificación tras cada iteración.

Coloque una columna “In Analysis” o “En Revisión” (o cualquier nombre, sea creativo) donde colocará aquellas historias sobre las que debe trabajar y refinar. Cuando estén listas y se cumpla con la DoR, agréguelas a la columna “Ready” o “Backlog” que son aquellas que se explicarán en el siguiente sprint planning.

Trabajar bajo estas definiciones brindará claridad y fluidez al trabajo de los equipos y aportarán a su crecimiento y madurez. Una vez lo que hagan, por favor compártanme sus experiencias.

Gracias, y que la agilidad esté con Ustedes.

Johnny

Referencias

http://guide.agilealliance.org/guide/definition-of-done.html

http://www.solutionsiq.com/what-is-the-definition-of-done-dod-in-agile/

https://www.scrum.org/Resources/Scrum-Glossary/Definition-of-Done

https://www.scrumalliance.org/community/articles/2008/september/definition-of-done-a-reference

http://www.allaboutagile.com/definition-of-done-10-point-checklist/

https://agilefaq.wordpress.com/2012/12/02/what-is-definition-of-ready/

http://www.batimes.com/robert-galen/user-stories-ready-set-go.html

Tiempo, Esfuerzo, Complejidad; ¿qué mismo es un Story Point?

“La propia palabra ‘estimación’ deja en claro que no calculamos un valor exacto,
determinístico. De hecho, toda estimación tiene supuestos, y estos supuestos suman
incertidumbres.” – Carlos Fontela, Estimaciones y Estadística, CyS Ingeniería de Software (2007)

Los más experimentados en agilismo leerán el título de este post y dirán: “¿y todavía hay dudas sobre esto?”, posiblemente llevarán su cursor hacia la X y cerrarán la ventana. Pues, cuando comienzas una jornada de adopción hacia el mundo de Agile y Scrum con muchas personas que lo están aprendiendo y tratando de hacer match de los conceptos y prácticas sobre la forma tradicional, existen muchas preguntas que considerarías básicas; pero desde mi perspectiva son muy importantes, y pienso muy bien en las respuestas que daré. La importancia radica en que las prácticas, técnicas y artefactos del agilismo reflejan un mindset cuyos valores y principios deben ser comprendidos para encontrar el significado y el beneficio de usarlos; del por qué de la práctica, del por qué es diferente y en qué sentido.

La persona quien me hizo la pregunta había realizado la tarea y me muestra un artículo de Mike Cohn que titula: “Story Points are still about Effort”. Y me escribe un párrafo por mail destacando lo que considera lo más relevante de la lectura:

“En el caso de los story points, se estima el esfuerzo (tiempo) para hacer una cosa – ese esfuerzo puede verse afectado por el riesgo, la incertidumbre o complejidad. Así que permítanme decir tan claramente como puedo: los story points son una estimación del esfuerzo, no de la complejidad.” – Mike Cohn

A línea seguida me escribe diciendo: “Tengo serias dudas de qué realmente es un story point: Complejidad o esfuerzo o tiempo?. Cuando le digo al Gerente de Proyecto que tenemos una desviación de 10 puntos frente a lo planeado, él me pregunta: con cuánta gente y en qué tiempo podemos resolverlo?. No sé qué responder.”

Adicional a esto, puedo agregarle un componente importante de mencionar. Siguiendo el marco de trabajo usado para la adopción en la compañía, en algún momento se dio por sentado en que existe una relación de conversión de Story Points a Horas, básicamente 1 Story Point = 1 día = 8 horas. De tal forma, aritméticamente se puede establecer una traducción que puede simplificar la comprensión de los story points y solucionar el problema mencionado.

Bueno, ahora me toca responder; y pensaba que hacer una precisiones primero.

1. Esfuerzo no es exactamente una unidad tiempo

El esfuerzo es una relación entre la cantidad de tiempo que requiere realizar una tarea en función de un número personas que la van a trabajar, y tradicionalmente se la expresa en personas-horas u horas-hombre o personas-mes. Básicamente, el esfuerzo relaciona tres dimensiones, tiempo, número de personas y la disponibilidad de éstas. De esta forma, si tradicionalmente estimamos una tarea que toma 8 horas para una persona (8 horas-hombre), y agregamos otra persona al 100% de disponibilidad, la tarea se terminaría en 4 horas aproximadamente. En los métodos tradicionales existen varias técnicas para la estimación de esfuerzo y a partir de este los costos: Cocomo, Puntos de función, Puntos de Casos de Uso, Putnam, Juicio experto, Delphi, etc. Todas expresan una relación entre tiempo y número de personas. Esfuerzo no significa tiempo a secas.

2. No existe una relación lineal de Story Points a Horas

Esto es algo que percibo ya en varias adopciones. Siento que existe una necesidad de poder expresar los puntos de historia en un lenguaje más conocido, como las horas-hombre. Algunas personas me dicen que es porque el Cliente así lo exige. En algunas ocasiones, he visto que se estiman las Features en Horas-Hombre y luego se las traduce a Story Points para establecer el número de equipos necesarios en base a su velocidad. Lo cierto es que esto no es posible hacerlo de esta forma y cualquier fórmula que nos creemos nunca nos dará una equivalencia real válida.

El problema con establecer los story points como tiempo es, que las personas tienden a generar una relación automática entre story points y horas; favoreciendo el pensar en horas gracias a la forma tradicional de estimación que nos solicitaban en el pasado. Por ejemplo, establezcamos una relación de 1 story point = 8 horas, como lo menciona SAFe. Cuando se le pide a un miembro del equipo estimar una historia, automáticamente está pensando en “¿cuánto tiempo me tardaré?”, por varios factores agregan normalmente un buffer o colchón; y dicho valor lo dividen para hacer la equivalencia en puntos. “Okay, creo que me tardo 2 días, pero por si acaso voy a decir 3 días…en puntos significan 3 story points.”.

Es volver a la pregunta: “¿cuánto te tardas en realizar esta tarea?”, en lugar de “qué tan compleja consideras esta tarea con las condiciones dadas frente a esta otra historia de referencia ?”.

Mike Cohn escribe un artículo posterior al mencionado arriba describiendo el problema y que básicamente al actuar así se pierden los beneficios de los story points, Don’t Equate Story Points to Hours:

“He sido bastante inflexible últimamente en que los puntos de historia son sobre el tiempo, específicamente esfuerzo. Pero eso no significa que usted debe decir algo así como: ‘Un punto de la historia = ocho horas.’ ” – Mike Cohn

3. Un Story Point es una herramienta de Colaboración

Un Story Point es una medida que engloba: complejidad (inherente y accidental), tamaño, incertidumbre y habilidad/conocimiento sobre el problema planteado (ojo: tamaño y complejidad no son lo mismo).

En otras palabras un Story Point es la medida de esfuerzo mediante la cual un equipo evalúa la complejidad, el tamaño, el nivel de incertidumbre y el riesgo de realizar una historia en base a las destrezas, conocimiento y la información actual que poseen los miembros que conforman ese equipo, entendiendo que esfuerzo no es igual a tiempo.

Debido a la evaluación personal de estas dimensiones, una misma historia puede ser 1 punto para una persona y 8 para otra; un equipo experto trabajando mucho tiempo sobre el mismo módulo puede estimar una historia con un valor relativo menor que otro que nunca ha trabajado en ese módulo, y esto está bien. Los Story Points nos permiten realizar comparaciones relativas para establecer acuerdos sin importar el tiempo de resolución. La duración en tiempo para resolver la tarea es algo que se verá cuando se termine la tarea. Hay historias de 8 puntos que pueden ser terminadas en 2 días o en 4 días, pero para el equipo siguen siendo de 8 puntos, entonces no hay una relación lineal, la relación es una curva (como se muestra en este artículo http://www.targetprocess.com/articles/estimates-software-development.html).

Mi recomendación

En serio, no asocie un Story Point con tiempo. Puede generar disfunciones como: sobre-estimaciones, dificultad de llegar a consensos, dificultad en la comunicación del equipo, estimaciones basadas en tiempo como se hacía tradicionalmente, si lo toma María son 3 puntos, pero si lo toma Juan son 8, proliferación de fórmulas matemáticas de conversión, redondeos de los valores de la fórmula (ejemplo: si la fórmula nos entrega 8,6 el siguiente valor en Fibonacci es 13, entonces son 13 puntos), etc. 

Al usar el story point “puro”, le ayudamos a pensar al equipo en la dificultad propia del problema a resolver, más no en el tiempo ni en quien lo debe resolver. El nivel de incertidumbre estará dado por la misma escala de Fibonacci evitando sobre-estimación para cubrirse, esto a la larga cambia el mindset el equipo enfocándose en la cantidad de complejidad que pueden abarcar en un sprint. La idea es que el equipo vaya afinando sus estimaciones tras cada iteración, el mismo equipo junto trabajando sobre el mismo dominio durante un tiempo.

Referencias

Para más información les dejo estos links:

http://www.infoq.com/news/2009/09/story-points-versus-hours

https://agilefaq.wordpress.com/2007/11/13/what-is-a-story-point/

https://www.scrumalliance.org/community/spotlight/mike-cohn/june-2014/how-many-hours-is-a-story-point-worth

http://www.mountaingoatsoftware.com/blog/dont-equate-story-points-to-hours

http://www.targetprocess.com/articles/estimates-software-development.html

http://tracer.lcc.uma.es/problems/estimation/estimation.html

http://es.slideshare.net/mstabare/gestion-de-proyectos-estimacin-del-esfuerzo

http://scaledagileframework.com/iteration-planning/

http://www.slideshare.net/JohnnyDark/estimacin-gil-story-points-y-planning-poker

Los 5 “Me gusta” y los 5 “No me Gusta” de SAFe: Pensamientos desde la trinchera

Desde hace un poco más de 3 meses soy parte de una jornada de transformación ágil en una gran compañía de desarrollo de software en Ecuador. El proceso involucra a más 300 personas en 3 países y a todas las áreas de la compañía. Representa precisamente un proceso de transformación que toca el ADN mismo de la compañía en muchos sentidos (estructura, procesos, tecnología, diseño del software, cultura). Cuando me incorporé a apoyar, el proceso ya tenía unos 3 meses de haber iniciado. El consultor que lo lideraba usó el marco SAFe (Scaled Agile Framework) como la guía metodológica y de procesos a seguir. Había leído acerca de SAFe -cuando todavía no se llamaba así- hace un par de años atrás; el libro es muy grande, a veces me dolía la cabeza leerlo y por algún motivo lo dejé. Ahora, era el momento de retomarlo y empaparme profundamente sobre el tema.

Qué es SAFe?

Antes que seguir, quisiera dar una breve introducción acerca de SAFe, ya que es bastante nuevo sobretodo en el entorno ecuatoriano.

Scaled Agile Framework es un marco de trabajo que busca escalar los beneficios y principios de Agile y Lean hacia todos los niveles de una organización: equipos, programas y portafolio; a través de prácticas, roles y herramientas aplicadas para obtener entregas frecuentes de software de valor y calidad, maximizando el beneficio al negocio y permitiendo mayor agilidad organizacional. Es la promesa más grande y el propósito de SAFe.

Como yo soy muy visual, me gustó este video de Inbar Oren -uno de los SAFe Program Consultants estrellas, SAFe Coach y creador de videos oficiales del framework- que explica SAFe en 9 minutos y con dibujitos.

Para más información sobre SAFe, les dejo los siguientes artículos:
SAFe
SAFe Purpose
SAFe Foundations
41 Things You Need to Know about the SAFe

Los 5 “Me gusta” de SAFe

No tenía mucha certeza de por dónde comenzar a describir mis puntos: los que me parecen buenos primero o los no tanto; pero normalmente cuando doy feedback hacia alguna persona siempre comienzo resaltando sus aciertos y luego le describo los puntos de mejora; entonces hago lo mismo con SAFe. Siendo así, las cosas que me gustan son:

El Agile Release Train

Posiblemente una de las propuestas más interesantes de SAFe desde mi punto de vista. El Agile Release Train o ART es un mecanismo a nivel de programa para la entrega de valor en una cadencia definida y constante de un incremento de sistema. El término surge de la analogía de las salidas de los trenes de una estación, las mismas que se definen en rangos uniformes de tiempo y de constante consecución. Cada ART produce un incremento de sistema; donde se integran todas las historias o funcionalidad de todos los equipos que se terminaron y aceptaron por los Product Owners en una iteración. La cadencia definida es de dos semanas, de tal forma que hay una integración de un “Big Working Software” y una revisión con los stakeholders denominada “System Demo”.

ART

Algo muy interesante de SAFe, es que la definición de la salida al mercado de un número acumulado de features que corresponde a un tren específico es una decisión de negocio, algo que se denomina “Desarrollo en Cadencia. Entrega en Demanda”. Esto habilita a la toma de decisiones por varios roles (Product Managers, Marketing, etc.) basados en costos de oportunidad, time-to-market adecuado, madurez o estabilidad de la versión, etc. Tiene todo el sentido del mundo para mí. En empresas como Spotify lo manejan de forma similar.

Develop on Cadence, Deliver on Demand

Más información:
Agile Release Train – SAFe
Release-SAFe
Develop on cadence. Release on Demand – SAFe
SAFe Kanban

Mucho Lean Thinking y Kanban en varios niveles

SAFe posee también una base filosófica fundamentada en el pensamiento Lean. He leído y escuchado a algunas personas sobre la “casita de SAFe”, “la casita Lean”, y esta casita es la siguiente:

Básicamente es la misma casa tomada del Toyota Production System. Okay, yo comprendo los pilares y el sentido del pensamiento Lean, lo que quería saber es cómo se expresa el mindset Lean y Kanban dentro de SAFe. A nivel de portafolio se aplica el pensamiento Kanban restringiendo el WIP basado en presupuesto, el mismo que es repartido entre varias cadenas de valor o value streams. Es decir, sólo se pueden trabajar en iniciativas que podamos pagar, “hasta donde nos de el presupuesto?”. En la práctica, esto se expresa en el manejo de las épicas de negocio y arquitectura a través de un flujo Kanban; las épicas deben pasar por un funnel donde reciben aprobación por los miembros del Portafolio. Los dueños de la épica deben preparar y “vender” su épica justificando los beneficios para el negocio y para la compañía. Básicamente, de la misma forma en la que un emprendedor explica y vende su idea ante un grupo de inversionistas (o ante un estanque de tiburones, para el caso la analogía sirve).

Toyota Production System - House

A nivel de Programa, se aplica Kanban restringiendo al trabajo en base a la capacidad organizacional, traducida por la capacidad de los equipos con los que cuenta la compañía. Esto se traduce a: “cuántas features podemos hacer con la capacidad que tenemos?”. Este mindset se expresa en el Release plan y el Roadmap de producto; cuando las líneas de potenciales releases  son fijadas por la capacidad (con la cadencia de los ARTs es posible contar con fechas definidas y fijas) y en cada Release Planning se van ajustando para replanificar, repriorizar y ajustar nuestras entregas bajo criterios de negocio. Esto ya venía sucediendo en el entorno Ágil; así que hace mucho sentido para mí y es un aspecto que se mantiene y me gusta.

En general, en todo SAFe siempre se habla acerca de contar con una “vista económica”, un término que viene de los principios del Desarrollo del Flujo de Productos, específicamente del libro de Don ReinerstenThe Principles of the Product Development Flow; de donde SAFe ha tomado muchos conceptos de gestión de flujos aplicados al nivel de programa (algo que no me sorprende debido a que Don Reinersten hizo un foreword en el libro del cual nació SAFe). Tener una vista económica significa que debemos tomar en cuenta el “costo de la demora” de no sacar un producto o característica al mercado en cierto momento. La idea es, donde el costo sea más alto, eso se debe entregar primero. Para aquello se usa una fórmula denominada WSJF que permite priorizar épicas y features. En el entorno ágil ya veníamos usando algo similar de lo que denominamos el ROI de Agile: Business Value / Story Points. WSFJ es casi lo mismo, pero agrega otras variables en el numerador que brinda otras perspectivas al análisis. Lo bueno de esto, es que se discute otros aspectos válidos para el marketing, el cliente y operaciones; lo malo es que lleva más tiempo estimar y priorizar las épicas/features (más nivel de discusión, más Planning Poker, etc.).

Cost of Delay

Más información:
SAFe Way to Lean Software Development
SAFe Kanban
Business Epic Kanban
WSJF

Lean / Agile Leaders

Uno de mis “likes” favoritos. En la última versión de SAFe (la 3.0) se hace relevancia al rol de “champions” que abracen al Manifiesto Ágil y los principios Lean para apoyar al proceso de adopción y tener una jornada lo más satisfactoria. Estos líderes son clave en el entendimiento y aplicación de los principios y prácticas. En SAFe tienen su propio manifiesto con cuatro principios fundamentales:

  • Tener una vista sistémica: de todas las partes de la organización, el proceso y del flujo de desarrollo del producto;
  • Abrazar el Manifiesto Ágil: soportar los valores y principios ágiles;
  • Implementar/Optimizar el Flujo de Desarrollo de Productos: visualizar el trabajo, limitar el WIP, identificar cuellos de botella, ayudar a la mejora continua;
  • Desbloquear la motivación intrínseca de los trabajadores del conocimiento: ayudar a crear el ambiente y las condiciones para contar con personas auténticamente motivadas y fomentar el conocimiento.

Este último tiene una relevancia súper alta para mi forma de ver, es vital. Este es un plus en SAFe, me gusta mucho que se haya dado esta importancia a este grupo; algo que los agilistas ya conocíamos.

Más información:
Lean-Agile Leaders

SAFe es evolutivo

SAFe no nació tal como lo vemos ahora en su Big Picture, ha tenido varias versiones, la actual es la 3.0. SAFe ha venido de un proceso de adaptación y evolución desde los primeros blog posts de Dean Liffingwell hasta consolidarse en la figura que vemos. Gracias al feedback de varios consultores, las empresas que adoptan SAFe y la comunidad, el framework se ha ido adaptando y ajustando; agregando o eliminando elementos sobre la marcha. Pude hacer un tracking de la vida de SAFe en el tiempo y encontré versiones desde el 2008. La primera vez que lo vi no se llamaba SAFe y fue por la versión 2.0 allá por el 2011.

El pase de diapositivas requiere JavaScript.

Más información:
What is this – SAFe 

El Big Picture

Otro gran plus de SAFe es su Big Picture; puedes ver SAFe en una hoja. Aceptémoslo, es de mucha ayuda. Además de que visualmente es agradable, el Big Picture es como una base de conocimiento interactiva en línea que permite navegar rápidamente sobre los conceptos y profundizar sobre algún tema. Creo que visito este sitio unas cinco veces al día cuando necesito reforzar alguna cosa o encontrar algo que se me escapa. Este Big Picture, junto con los otros recursos: presentaciones, videos, posters, referencias, frases, cursos; son elementos de marketing claves que posiblemente le han dado gran visibilidad a SAFe en los últimos años. Representan una estrategia inteligente de difusión y ventas.

Una de las razones por las que dejé de leer el libro, es que puedo encontrar el contenido más rápido y la información está actualizada (el libro básicamente describe la versión 2.0 y algo de la 2.5).

Yo imprimí el Big Picture y me sirve mucho para el análisis de los puntos de mejora el contexto de la adopción, me ayuda a identificar problemas y priorizar, como dije; soy muy visual.

Big Picture Impresa

Los 5 “No me gusta” de SAFe

Pues ahora, permítanme enumerar los aspectos que me generan mucho ruido y que desde la práctica veo que necesitan atención si se está pensando en la adopción de Agile con este framework.

1 día = 1 story point? Qué?

Cuando escuché por primera vez al consultor que decía esto yo dije en voz alta en medio de una reunión: “Qué?” y todo mundo en el salón me quedó mirando raro. Esto para los agislistas es cercano a la aberración. Estamos usando una medida de complejidad para medir tiempo? Es como usar kilogramos para medir distancia. Es impensable, ya que sabemos que no hay una relación directa entre los story points (unidades para evaluar complejidad) y el tiempo. Es decir, 5 story points pueden ser hechos en más o menos tiempo en función de capacidad del equipo: su destreza, conocimientos, experiencia, etc. No hace sentido para mí, así que me puse a leer mucho sobre el tema.

En SAFe existe la necesidad de “normalización”. Normalizar significa contar con una medida estándar para poder realizar predicciones a nivel de programa y portafolio. Básicamente, SAFe prescribe usar esta relación de 1 día = 1 story point; si tenemos un equipo de 5 personas trabajando 8 días de un sprint de dos semanas  (se resta dos días: 1 Sprint Planning y otro para Sprint Demo y Restrospectiva) tenemos que un equipo cumple 40 puntos por sprint (5 personas x 8 días => velocidad de 40 puntos por sprint). Para lograr eso, se le pide al equipo que imagine una tarea que pueda hacer en un día y a esa se le pone 1 punto (más o menos como los días ideales).

En la práctica, no funciona. Cuando Usted le pregunta al equipo que estime la historia, en sus mentes no están pensando en complejidad, sino automática existe una conversión a horas que luego traducen a puntos. Por ejemplo: “Yo me tardo haciendo esta tarea 16 horas, si 8 horas es un punto, entonces esta historia es 2 puntos”; y peor, como se está pensando en tiempo y no en complejidad se añaden colchones o buffers para evitar equivocarse en la estimación: “Yo me tardo haciendo esta tarea 16 horas, pero por si acaso digamos 3 días. Si 8 horas es un punto, entonces esta historia es 3 puntos”. He visto este razonamiento en muchos equipos. Cuando se está comenzando con Agile es contraproducente, ya que brinda una manera sencilla de expresar el mindset tradicional pero con lenguaje ágil; haciendo que no ocurra un verdadero cambio. A la final, le está preguntando lo mismo que antes “cuánto te tardas en esto?” cuando el cambio es “qué tan complejo (complejidad inherente, accidental y tamaño) consideras esto?”.

A nivel de programa también hay problemas. Con un estándar de 40 puntos, es relativamente sencillo hacer proyecciones y planificar features. Los cálculos son expresados en fórmulas con esta base, por ejemplo: “si tengo 1000 puntos y 2 equipos que me dan 80 puntos por sprint, entonces los estaré completando en aproximadamente 13 sprints”, y otras fórmulas derivadas. Las fómulas no están mal, lo que está mal es considerar la premisa de que cada equipo produce 40 puntos. Es como decir que todos los equipos piensan igual, actúan igual, que son relojes perfectos que entregan siempre lo mismo sin considerar aspectos como el aprendizaje sobre la nueva tecnología, si hay personas nuevas en el equipo, si alguien sale de vacaciones, etc.

Sigo leyendo sobre el tema, pero aún no hace sentido para mí. Cuando se escala Agile es verdad que se necesita normalizar para ayudar al nivel de programa, área de ventas, etc.; pero en mi experiencia previa de adopciones Agile lo que hemos hecho es normalizar el concepto de complejidad a través de un backlog de referencia. Básicamente, creas un backlog con muchas historias tipo que representan varias labores que se generan dentro del contexto de la organización, las estimas con Planning Poker donde se involucran muchos roles (arquitectos, miembros de los equipos, DevOps, Testers, etc.). Con eso, los equipos tienen un punto de referencia para iniciar su estimación, toman la historia de 1 punto del backlog de referencia y contra ese comparan su backlog para ese sprint. Las estimaciones son ajustables cada cierto periodo. Las proyecciones a nivel de programa se realizan tomando en cuenta la velocidad histórica y se eligen escenarios: optimista, esperado, pesimista.

Más información:
Iteration Planning
Normalized Story Points
From the Vision to the working software and back

Iteración de Hardening

La iteración de Hardening es aquella que ocurre después de una iteración de desarrollo en la que integra y se prueba el desarrollo de todos los equipos con el fin de lograr un incremento del Sistema. Está a cargo de un nuevo equipo en SAFe llamado System Team. El producto de la etapa de hardening es un incremento de sistema que se presentará en la System Demo. Esta función era parte de lo que SAFe denominaba la iteración HIP: Hardening, Innovating and Planning; una iteración especial que habilita a los equipos a estabilizar su software y brinda tiempo para organizar hackathons u otras actividades para innovar. Desde la versión 3.0, se separó el concepto de Hardening y ahora SAFe provee una iteración especial IP:Innovating and Planning luego de varios sprints de desarrollo (normalmente después de 4 sprints) para habilitar la innovación en la organización.

En la etapa de Hardening, el equipo de System Team baja el código de todos los equipos en un ambiente separado, integra, genera un instalador de ser el caso y somete al software a pruebas end-to-end (carga, estrés, exploración, algunas UATs). Cuando hay problemas, se reportan bugs que se pasan a los equipos para que los resuelvan. Si el incremento pasa bien las pruebas y es aprobado por los Product Managers, se pasa este incremento a la etapa de Sustaining, entiéndase colocar en un ambiente de pre-producción o producción en el Cliente. De esta forma, SAFe provee una secuencialidad de fases como esta  (Planning, Development, Hardening y Sustaining):

Cadencia

Esperen un minuto, esto es parecido a Waterfall no? son pequeñas cascaditas? Lo que se aprecia es que la etapa de Hardening es muy similar a la etapa de Verificación y la de Sustaining es muy parecida a la fase de Despliegue. Esto indica para mi un olor en el proceso, y un olor no tan agradable. La etapa de Hardening tiene buenas intenciones, estabilizar el software antes de colocar en el ambiente del Cliente. Pero en la práctica, tener un sprint de Hardening hace que se difieran acciones de calidad e integración a una etapa posterior, produciendo acumulación de bugs, dificultades en la integración, desafíos en el control de versiones, loops grandes de asignación y corrección de bugs  y otros malestares que existen en un desarrollo de cáscada; recordemos. Hace que los equipos piensen: “hay una etapa de detección de bugs más adelante, así que ellos detectarán problemas.”. Adicionalmente se refuerza el equipo de System Team con más Testers o personas de operaciones, volviendo al paradigma del desarrollo tradicional. Aspectos de hardening deben ser abordados dentro del mismo sprint de desarrollo y son responsabilidad del equipo. En cada sprint el equipo debe definir, desarrollar, probar, integrar y desplegar su código. El sprint de hardening tiende a ser usado en ambiente donde no existe automatización de pruebas o de integración continua como un nivel de contención. Esto hace que esta fase sea para detectar bugs y no para prevenir bugs, algo que va en contra del Agile Testing.

Mas información:
Hardening, Innovation and Planning
SAFe – Hardening Iteration
Mixing Agile and Waterfall Development – SAFE
PSI – Release
Hardening Sprints
Innovation – Planning
A new hipper Big Picture
Agile process smell: Hardening sprint

 Retrospectivas en Excel? En serio?

Una de las cosas que me generó una gran incógnita en la cabeza fue el tema de la ejecución de las retrospectivas a nivel de equipo. Participé en una retrospectiva y dentro de mi mente decía: “qué está pasando aquí?”. Para realizar una retrospectiva a nivel de equipo (porque también hay una retrospectiva a nivel de programa) SAFe provee un artefacto que permite evaluar la “salud” del equipo y del sprint (SAFe ScrumXP Team Self-Assessment). Consiste en una hoja de cálculo con varias preguntas agrupadas en diferentes secciones. El voto se hace en una escala de 0 a 5 (donde cero es No cumple Nunca y 5 significa Cumple siempre), el Scrum Master lee una pregunta, recopila los votos de los miembros del equipo, saca el promedio, redondea y coloca el valor resultante en el excel. Al terminar con todas las preguntas, el Scrum Master guarda el archivo y automáticamente se dibuja un radar, lo muestra al equipo y luego se envía el archivo para su consolidación a nivel de programa. Al final de esa reunión todos salieron y yo me quedé sentado durante varios minutos tratando de entender lo que sucedió: en qué momento se habla sobre los problemas? cuándo el equipo se expresa? dónde están los post-its? y los action items?.

SAFe - Self Assessment

La retrospectivas -a mi forma de pensar- posiblemente sean la piedra angular del agilismo mismo. Parte importante de los valores y principios, el corazón de la mejora continua, la expresión de Hansei y Kaizen. El excel me pareció interesante, pero no debe ser el foco de la retrospectiva. Es el momento en el cual el equipo habla, se expresa, se siente escuchado, se discuten los problemas, se comparten risas, es un momento para reflexionar y proponer en equipo, es vital y no estoy de acuerdo que este momento sea opacado por un artefacto.

Más información:
ART Metrics

Reuniones de estilo “Cerebro Frito”

Imaginen lo siguiente: más de 50 personas en una sala de reuniones, en una reunión de 8 horas seguidas, con mucho calor, escuchando o tratando de escuchar a todo lo que se dice. Resultado: Cerebro frito. Así sentí mi cabeza luego de un Release Planning de ocho horas seguidas, y lo peor es que sólo era el día 1; al día siguiente sería lo mismo. Me preguntaba: un Release Planning de dos días, en serio?. SAFe provee una agenda de dos días para el Release Planning, en ella asisten varios roles: Product Managers, Product Owners, Release Managers, System Team, System Architects, los equipos, DevOps, etc. Debido a que se están planeando todas las features e historias de todos programas para el trabajo de todos los equipos del siguiente sprint, la duración de esta reunión es larga y con agenda definida. Quizás tenga sentido para la primera ocasión, pero aún así la reunión ya es pesada. A esto súmenle que no habían radiadores de información; básicamente todos leían o veíamos la herramienta digital mediante una proyección y se planificaba en la PC. Igual, la Sprint Demo, es una reunión que agrupa a todos los equipos al mismo tiempo para que todos muestren a los stakeholders (POs, Product Managers, Epic Owners, Marketing) su avance del sprint. En ese momento los POs aprobaban o rechazaban las historias y se pasaba al siguiente equipo. Ocho horas seguidas con 150 personas en la misma sala. Después de las dos primeras horas yo ya estaba divagando.

Agenda Release Planning

Agile, Scrum y los demás métodos ágiles en general sugieren una comunicación continua, clara, cara a cara. Reunirse para tener estas conversaciones entre los miembros del equipo, con los stakeholders, con el Cliente, etc.; es muy bueno, mucho feedback. Cuando hablamos de un equipo ágil y sus stakeholders, esto no es muy complicado, nos reunimos, conversamos, planificamos y seguimos. Pero cuando hablamos de 20 equipos, más de 100 Devs, 12 Scrum Masters, 12 POs, 5 PMs, 5 RMs, etc.; la cosa se complica y mucho. Desde mi punto de vista esto está lejos de la efectividad. Mucho tiempo de muchas personas todas sentadas viendo una proyección durante más de 8 horas, es algo que no clasifico como comunicación cara a cara. Esto no quiere decir que estoy en contra de las reuniones, todo lo contrario. Pero la reuniones en Agile son facilitadas, con artefactos visuales, muy ligeras pero bien enfocadas, con los interesados correctos. La idea es dosificar; hacer las Sprint Demos con cada equipo y su PO y crear otra reunión entre POs y PMs (algo parecido a Scrum de Scrum pero de Producto), un Release Planning efectivo con un Visual Story Map y los pocos interesados, reuniones de trabajo de los equipos de Producto y otros para llevar el trabajo de Features e historias listas al planning, entre otras. Después de una discusión sobre el uso de post-its y elementos visuales, creamos un Release Plan en la pared y la reunión de planificación se redujo a 4 horas.

Release Planning Board

 

Más información:
Release Planning

Hace match con las jerarquías organizacionales

Uno de los aspectos de SAFe que posiblemente sea parte de su creciente popularidad en la comunidad y empresas, es que su lenguaje y estructura están diseñados para el mundo empresarial. Hablar a la gente de las corporaciones y el management sobre portafolio y programas pero con un enfoque Agile y Lean es apropiado, hablar el mismo lenguaje ayuda a la comunicación y el apoyo del management es necesario para una proceso de adopción o transformación ágil. Muchos coaches recomiendan manejar el lenguaje apropiado para los niveles y grupos apropiados.

Lo malo de SAFe es que al ver su estructura rápidamente se presta a interpretación y se puede hacer una correlación con las jerarquías y posiciones existentes dentro de la compañía. Cómo se llama ahora al BA? PM, y el PM es el jefe de los POs; el Release Manager o RTE es el jefe de los Scrum Masters; a quién reporta el developer, al Development Manager? y así por el estilo. Incluso la discusión llega a nivel de áreas.

Las jerarquías existen en una organización y entre más grandes son las organizaciones, más grandes y sólidas las estructuras. Lo que me parece que hay que manejar es la percepción de que “tal rol es jefe de otro rol” o que un rol es una posición. Un rol pueden formarlo varias personas dentro de la organización, o quizás no; cada organización es diferente. Este es uno de los desafíos al que nos enfrentamos los consultores y coaches y hay que tener criterio para abordarlo.

Pensamientos finales

Un amigo agilista de Ecuador me preguntó hace poco tiempo: “y esta vaina de SAFe funciona o qué?”. Es una pregunta algo capciosa y difícil de responder de forma de Sí o No; similar a si se preguntara qué funciona: Toyoya o Mazda? o una cuchara o un cuchillo?. SAFe es sólo un framework, una herramienta que provee un enfoque referencial sobre cómo llevar prácticas del entorno ágil hacia una organización. Mi respuesta es, depende de cómo la uses. Yo soy muy crítico sobre SAFe, hay que cosas que me generan mucho ruido (y que seguiré publicando); pero en este proceso de adopción estamos tratando de tomar lo mejor, adaptar al contexto y fomentar agilismo verdadero a través de conceptos, principios y prácticas.

Gracias por su feedback. Un abrazo!