Buscar en Gazafatonario IT

lunes, abril 27, 2020

Ritmo sostenido, cadencia y el ciclo lunar

Imagen de Gerd Altmann en Pixabay

Hablaba con mi amiga Claudia Toscano sobre el por qué la duración de los Sprints debería ser siempre lo mismo, el por qué no era buena idea estar cambiando de duración a las iteraciones en Scrum y lo primero que se me ocurrió es que una de las razones principales es el ritmo, precisamente ese ritmo sostenido del que hablamos ya desde el manifiesto ágil, que nos permite conocer con más precisión (o menos imprecisión) la capacidad real del equipo.

Me refería a ese principio del Manifiesto que dice:
“Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida”.
Decíamos que ese ritmo constante tiene otros beneficios también, entre ellos mayor productividad, elimina el estar pensando precisamente eso de "este sprint de cuánto tiempo será". Esas conversaciones que son desperdicio y restan productividad desde el sprint anterior en donde las personas están sugiriendo que "el próximo sprint sea de 10 días o de 5", "qué tal si lo hacemos de 15", evita esos diálogos que generan estrés, agregan confusión a un contexto que quizás ya tiene mucha incertidumbre. En general, se reduce la complejidad, esa complejidad inherente a tener que tomar ese tipo de decisiones cada vez que va a empezar un nuevo sprint, aun desde el anterior.

Hay menos inseguridad. Hay menos gasto de energía y se genera menos estrés. Además, con el tiempo, los eventos internos del Sprint son más efectivos porque la gente ya conoce su  ritmo y eso es muy importante en la Planificación, porque el equipo ya tiene una proyección de lo que puede hacer en un Sprint. Hemos notado que al mantener un ritmo y vigilarlo continuamente ayuda a mejorar la eficiencia de las personas en el trabajo, reduce los riesgos inherentes al trabajo del conocimiento y al producto o servicio, disminuye el desperdicio que se pueda generar, sobre todo si mantenemos los elementos del backlog (historias de usuario) pequeños, y contribuye significativamente a la mejora continua.

Algo que nos pasaba con nuestra forma de trabajar anterior, en Cascada, era que lenta y casi imperceptiblemente empezábamos a caer en lo que podríamos llamar "vórtice de procrastinación". Uno en el que rápidamente estábamos perdiendo contacto con los clientes o consumidores, con los interesados, pero incluso más grave aún, con los propios compañeros del equipo. No sabíamos cuando íbamos a terminar algo, a pesar de los planes “detallados” a que éramos sometidos de manera dictatorial y el fin de una actividad pasaba de horas o días a semanas y rápidamente a meses… ¡un día a la vez!

¡Eso definitivamente no tenía nada de divertido!

¿Por qué? Porque somos seres rítmicos por naturaleza. Seguimos ciclos de manera casi ritual, por ejemplo, estamos despiertos y dormimos más o menos a las mismas horas, siempre. El ritmo nos ayuda a relajarnos, a calmar el estrés, nos permite determinar bloques de tiempos para actividades específicas y todo ello nos posibilita adaptarnos mejor a las circunstancias, porque podemos predecir o proyectar lo que podemos hacer y cómo hacerlo sin estrés, de manera más o menos divertida.

El Sprint en Scrum y el ciclo lunar

Imagen de Syaibatul Hamdi en Pixabay
El Sprint es el corazón de Scrum y en Scrum todo ocurre en el marco de un Sprint. El objetivo en el Sprint es crear un incremento de producto “Terminado”, utilizable y potencialmente desplegable en un ambiente donde al menos un grupo de usuarios o consumidores pueda “jugar” con él. De la guía también aprendimos que “es más conveniente si la duración de los Sprints es consistente a lo largo del esfuerzo de desarrollo”. Ya hemos establecido ampliamente el porqué es necesaria es invariabilidad.

Una de las duraciones más ampliamente usadas por los equipos en todo el mundo es 2 semanas para sus Sprints, según indica The 2015 State of Scrum Report de la Scrum Alliance. Más sobre este reporte en:


Pero también es importante definir Sprints cuyo inicio y fin concuerden con los ciclos lunares. Esto se les hace más natural a las personas porque nos adaptamos mejor a esas cadencias que son habituales para nosotros. Por eso siempre estamos buscando iniciar Sprints un lunes y terminarlos un viernes. Sin embargo, en países como Colombia donde las festividades fueron modificadas de manera artificiosa hace ya varias décadas, hay que adaptar esos ciclos para acomodar tales eventos y otras pausas habituales en las culturas locales. Por ejemplo, dado que en Colombia hay muchos lunes festivos, podría ser interesante experimentar iniciando los Sprints un martes y hacerlos de nueve días en vez de diez. En el caso de que durante ese ciclo de dos semanas no haya días festivos, el décimo día se puede usar para trabajar en la mejora del equipo o en apoyo a otros equipos y áreas de la organización, o simplemente en socialización al interior de la empresa. También son útiles estos días para realizar hackatones u otras actividades que fomenten la innovación.

De esta manera, los equipos establecen una cadencia acostumbrada y fijan expectativas con base en las fechas de finalización de los Sprints. El equipo puede sincronizarse con otros equipos para entregar incrementos de producto en el que estén trabajando en conjunto o para tener un mejor manejo de las dependencias entre ellos. Esto reduce los conflictos entre esos equipos y las personas nos sentimos más a gusto y cómodas trabajando con el horizonte de los ciclos naturales a los nos que hemos habituado desde niños. Esto mejora la motivación del equipo y afianza los valores y la visión establecidos.

Conclusión

Tener este tipo de hábitos, como Sprints de duración fija, reuniones diarias a la misma hora y en el mismo lugar, y conocer con anticipación las fechas de otros eventos como la Planificación, la Revisión o la Retrospectiva, permite que los miembros del equipo se enfoquen en sus tareas principales y hagan lo que mejor saben hacer, que es manejar la incertidumbre, los cambios y la ambigüedad inherente al tipo de tareas que hacemos diariamente, es decir, esa otra cara variable del trabajo.

Referencias

Para saber más sobre patrones Scrum puedes consultar el libro:

A Scrum Book: The Spirit of the Game, de Sutherland , Coplien , den Hollander y otros.

miércoles, abril 22, 2020

La historia de las historias de usuario


Ejemplo de una historia de usuario de Kent Beck. Fuente: Extreme Programming Explained, de Kent Beck
Brevísima historia detrás de la historia de las historias de usuario

Durante un entrenamiento a entrenadores de historias de usuario, hace poco nos preguntaban a Jorge y a mí sobre el origen de las historias de usuario. Por alguna razón olvidada para mí, en el libro omitimos ese pequeño detalle, aunque mencionamos a Connextra cuando hablamos de la forma más usual que suelen tomar las historias de usuario:

Como rol deseo característica Para beneficio

Bueno, aquí les escribo lo que les contamos a los entrenadores:

La historia de las historias de usuario

No es la primera vez que nos preguntan y durante todos estos años, he visto a mucha gente en las redes sociales hacer lo mismo. Por ejemplo, me encontré con este tuit de Seb Rose en octubre de 2019:


Hola, historiadores de Scrum, tengo algunas preguntas:
- Las historias de usuarios comenzaron con XP, documentadas por primera vez en el '98. ¿Es eso cierto?
- Sutherland ejecutó el primer proyecto Scrum en el '93. ¿Usaron historias (o similares)?
- Las historias de usuario ahora están integradas en la práctica de Scrum. ¿Cuándo sucedió eso?
Hay todo un hilo de respuestas. Entre estas, una de Mike Cohn, quien fue convocado por algunos otros tuiteros:

Rachel Davies escribió sobre esto en un artículo. Luego escribí sobre eso en mi libro.
Se refería a ese formato que él mismo popularizó en su libro sobre historias de usuario.
Por supuesto, la intervención de la misma Rachel Davies no se hizo esperar:

Tuve conversaciones con @mikewcohn en la XP2001 donde presenté un póster que incluía la plantilla de la historia de Connextra y fui revisora de su libro sobre Historias de usuario. Él fue influenciado por XP en ese momento ya que el libro de Scrum acababa de salir.
Ya en 2014 había tenido la oportunidad de conocer sobre Rachel Davies vía una versión cruda y sin editar del libro User Story Mapping de Jeff Patton.

En el libro, Patton muestra una fotografía de su amiga:

Rachel Davies mostrando una tarjeta de historia.
Fuente: User Story Mapping by Jeff Patton, Peter Economy

Sobre el origen de las historias de usuario y de sus formas

Es bien conocido que las Historias de usuarios se originaron con eXtreme Programming (XP). Lo que es poco conocido es que su primera descripción escrita en 1998 solo afirma que los clientes definen el alcance del proyecto "con historias de usuarios, que son como casos de uso".

En lugar de ofrecerse como una práctica distinta a XP, se describen como una de las "piezas del juego" utilizadas en el "Juego de Planificación” (Planning Game) del mismo XP.

Recordemos que eXtreme Programming (XP) fue desarrollada por Kent Beck en 1996 y a partir de allí la refinó hasta publicarla en su libro Extreme Programming Explained en 1999.

De hecho, Jeff Patton indagó con el mismísimo Kent sobre el origen específico de las historias de usuario:
Lo que estaba pensando era en la forma en que los usuarios a veces cuentan historias sobre las cosas nuevas y geniales que hace el software que usan. [Por ejemplo,] Si escribo el código postal y se completa automáticamente la ciudad y el estado sin tener que tocar un botón.
Creo que ese fue el ejemplo que desencadenó la idea. Si puedes contar historias sobre lo que hace el software y generar interés y visión en la mente del oyente, ¿por qué no contar historias antes de que lo haga el software?
- Kent Beck a Jeff Patton, por correo electrónico personal, agosto de 2010

Figura 7. Ejemplo de Tarjeta de Historia

Fuente: Extreme Programming Explained, by Kent Beck

En el libro, Beck no dice mucho sobre las historias, hacen parte de las prácticas primarias, junto con otras que conocemos ampliamente como Pair Programming, Continuous Integration y Test-First Programming, sí, esa que a la postre se convertiría en la Test-Driven Development de hoy, entre algunas otras. Sobre las historias (que aún no eran “de usuario”), Kent enfatiza:
“Escribe las historias en fichas y colócalas en una pared por la que pases con frecuencia. La Figura 7 es una tarjeta de muestra de una historia que deseo que implemente mi programa de escáner. Cada intento que he visto de informatizar historias ha fallado en proporcionar una fracción del valor de tener cartas reales en una pared real. Si necesitas informar el progreso a otras partes de la organización en un formato familiar, traduce las tarjetas a ese formato periódicamente”.
Fuente: Extreme Programming Explained, by Kent Beck
La advertencia de registrar las historias en herramientas ya venía desde entonces. Recordemos que XP, junto a Scrum, eran los dos marcos de trabajo dominantes cuyos autores estuvieron presentes en la declaración del Manifiesto Ágil.

Más adelante, en 2001, Ron Jeffries propone el modelo de Tarjeta, Conversación, Confirmación, para distinguir historias de usuarios "sociales" de prácticas de requisitos "documentales", como los casos de uso. Pueden leer su artículo en:


Como nota tangencial, este modelo lo llamamos aliteración Carta, Conversación, Confirmación en nuestro libro de historias de usuario.

Ese mismo año, 2001, Rachel Davies presentó su charla "Tuning XP" en el XPDay con Tim Mackinnon, donde presentaron el formato de historia que usaban en Connextra:

"As a role I want feature so that benefit"


Años más tarde, en 2006, Davies reflexionaba sobre esta “plantilla” antes de dar a conocer sobre un ejercicio que usó en uno de sus entrenamientos. Ella decía que:
“Este formato puede llevar a las personas a centrarse más en los intereses de los usuarios finales que en la perspectiva de la persona que presenta el caso de negocio. Además, cuando se les da una plantilla, las personas pueden comenzar a tratar las tarjetas de historias escritas de esta manera como especificaciones de requisitos mínimos que se centran en las palabras escritas en lugar de usar historias como herramientas para conducir una conversación. Peor aún, las historias que no se ajustan a esta forma serán maltratadas hasta que lo hagan”.

Rachel tiene razón. Esta es una de las grandes anomalías o antipatrones que hoy por hoy siguen presentándose con el uso de las historias de usuario y por ello insistimos tanto a lo largo y ancho de nuestro libro que las historias de usuario son un instrumento de conversación y de colaboración.
Pero no nos desviemos de nuestra historia.

En 2004, Mike Cohn publica su libro: User Stories Applied: For Agile Software Development, donde ayuda a popularizar el formato de Davies y su equipo en Connextra. En el hilo de Seb Rose alguien le dice a Mike que fue él (Cohn) quien popularizó el formato, además de los puntos de historia y de la velocidad, ampliamente usados con Scrum. Mike lo corrige:

He contribuido a la popularidad de ellos pero no originé ninguno.
Y todo ello nos trajo hasta aquí.

Epílogo

En lo personal, me parece una historia fantástica. Una a la que hemos asistido en nuestro tiempo. Tardé en empezar a usar historias de usuario pero cuando llegué a ellas hará unos ocho o nueve años, me ayudaron a derrumbar los antiguos paradigmas con los que venía trabajando hasta entonces.

Y en el futuro me gustaría que alguien hablara de mi Lienzo para Conversar sobre Historias de Usuario como parte de la historia de las historias de usuario. Por eso quise terminar la historia a nuestros entrenadores con esta parte:

En 2018, Jorge Abad y Lucho Salazar publican finalmente su libro: Historias de usuario: una visión pragmática, que incluye el User StoriesConversation Canvas, un lienzo para que los usuarios, Dueños de Producto, Gerentes de producto y otros interesados mantengan conversaciones efectivas con los miembros de los equipos de desarrollo de productos y se construyan productos o servicios extraordinarios.
Fuente: ¡conversaciones con Jorge y Lucho!

Fin de la Historia de las Historias de Usuario

Referencias

Además de las fuentes explícitas, pueden consultar algunas otras para saber más sobre esta genial historia:


lunes, abril 06, 2020

Diez comportamientos atípicos en Ágil y Scrum


De valores y principios

La agilidad es una capacidad de las personas, los equipos que forman esas personas y las organizaciones que cobijan esos equipos, de crear Valor y de responder eficiente y efectivamente al cambio para tener éxito en un entorno lleno de incertidumbre, pero también de ambigüedad, altamente complejo y volátil.


El pensamiento y el comportamiento ágil se funda en lo que conocemos como el Manifiesto Ágil, que enuncia cuatro valores, que conducen nuestro comportamiento de agilistas, intrínsecos a nuestra forma de pensar y de interpretar el mundo que nos rodea, de alguna manera subjetivos, emocionales y hasta debatibles. Pero valores al fin y al cabo.  Los valores ágiles son importantes para nosotros y los practicamos incluso de manera inconsciente, sin ningún esfuerzo. Estos valores se complementan con doce principios, extrínsecos o manifiestos que nos ayudan a hacer objetivos los valores, a hacerlos más concretos, incluso impersonales y a poner esos valores en evidencia. Los principios ágiles son indiscutibles. Los valores ágiles se basan en los principios.

A su vez, marcos de trabajo como Scrum nos señalan el camino de cómo poner en práctica esos valores y principios. Por ejemplo: “hemos aprendido a valorar la respuesta ante el cambio sobre el seguir un plan”. Un principio ágil nos dice que “Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente”. Otro nos dice que “A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia”. Más adelante, Scrum nos enseña a trabajar en períodos cortos de tiempo, llamados Sprints, y a tener un backlog de producto que está cambiando todo el tiempo. Y además nos proporciona distintas oportunidades de hacer inspección y adaptación, al producto, al proceso y a las personas, en los distintos eventos que propone el marco de trabajo.

Incluso el mismo Scrum no está desprovisto de espíritu. Los cinco valores de Scrum no son solo un complemento a los valores ágiles, como que “los miembros del Equipo Scrum se respetan entre sí para ser personas capaces e independientes”, que es más de “personas e  interacciones”, sino que también nos sirven de guía de comportamiento Sprint tras Sprint.


Los comportamientos atípicos

Sin embargo, es muy común encontrar personas y equipos cuyo comportamiento ágil deja mucho que desear. No solo dentro de las empresas, sino también en las comunidades ágiles, al menos por este lado del planeta. Por ejemplo, en los foros de las comunidades, cuando se trata de preguntas o de solicitudes de ayuda de personas, he notado algunos patrones, algunos comportamientos sobre los que invito a reflexionar y, de ser necesario o de efectivamente encontrarlos hostiles, a mejorar. He encontrado:

1.    Respuestas que denotan intolerancia. Intemperancia con quien no conoce de algo en particular. Esto malogra el efecto de la comunicación. De hecho, con este mensaje corro el riesgo de que me tachen de intolerante.

2.    Respuestas "automáticas", de esas que se repiten en muchos de los foros de los grupos, la misma respuesta a muchas preguntas, sin considerar el contexto de cada una. Como si se tratara de una receta única y prescriptiva a “todos los males” de la humanidad.

3.    Respuestas “a la ligera”, sin detenerse a revisar el paradigma actual del solicitante. No porque estemos en una o cual comunidad ágil, ya tenemos claro lo que significa el pensamiento ágil, ser ágil o la agilidad.

4.    Respuestas escuetas o cortantes que muchas veces no brindan ninguna solución a la cuestión. Al menos, no una solución proclive a responder la inmediata necesidad de quien pregunta.

5.    Respuestas erróneas o, al menos, inexactas o carentes de precisión.

Imagen de Gerd Altmann en Pixabay
En este sentido, siempre que tengo la oportunidad, sugiero a los participantes de los foros:

·       Leer nuevamente la pregunta o solicitud.

·       Detenerse un poco a pensar en la respuesta antes de enviarla.

·       Solicitar contexto a quien pregunta. Estamos actuando como si hubiera una receta prescriptiva para todo y nos olvidamos de que los escenarios son distintos, los de ellos, los de aquellos, los nuestros y los tuyos. Estamos en un mundo VICA (VUCA). “Tu escenario es diferente al mío”.

·       Ser más respetuosos no solo con quien nos interpela, sino con el resto de tertulios.

·       Liderar con el ejemplo.

·       Finalmente, hagamos de nuestras comunidades unas a las que sea un privilegio pertenecer. Los valores Scrum nos ayudan mucho a ello. Acordemos estar abiertos a todo y a los desafíos que se nos presenten al participar en los grupos y comunidades ágiles.

“Malos” comportamientos Scrum

Imagen de Kate Baucherel en Pixabay
En particular, cuando se trata de usar Scrum para sacar adelante proyectos o esfuerzos de desarrollo de productos o servicios, he encontrado:

6.    Las ganas de hacer la Planificación del Sprint rápida o muy rápida. Con la excusa de que hacen un buen refinamiento. ¿Seguros? ¿Cuántos Sprints adelante? Son infinitas las planificaciones Scrum que terminan sin un trabajo planificado por el Equipo de Desarrollo para los primeros días del Sprint, descompuesto en unidades de un día o menos, y sin “una proyección de lo que (el equipo) cree que puede completar en el Sprint que comienza”. Tampoco incluyen una Meta de Sprint que les de visión y les motive a autoorganizarse y les proporcione una razón de reflexión diaria sobre si se están acercando o no a esa meta. Recordemos además que “Al finalizar la Planificación del Sprint, el Equipo de Desarrollo debería ser capaz de explicar al Dueño de Producto y al Scrum Master cómo pretende trabajar como un equipo autoorganizado para lograr el Objetivo del Sprint y crear el Incremento esperado”. Sobre todos estos asuntos escribí hace ya algún tiempo: Planificación del Sprint: el primer paso para producir el máximo efecto. Clic aquí.

7.    Mantener al Dueño de Producto alejado del resto del equipo Scrum. ¿Dónde quedó aquello de que “los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto”? En particular, sobre la ausencia del Dueño de Producto en la retrospectiva, escribí: Dueño de Producto, usted ha sido invitado a la Retrospectiva. Clic aquí. Tenemos que ayudar a que el Dueño de Producto se enamore de su rol, todos, Scrum Masters, coaches ágiles y similares y Equipo de Desarrollo.

8.    El síndrome del bravucón. Los seres humanos tenemos la naturaleza de “ir por más”, de querer hacer más. Con buenas intenciones. O, al menos, partimos de ahí. Y si tenemos autoestima elevada, nos fijamos metas cada vez más elevadas. Pasa, por ejemplo, con las estimaciones. Durante la planificación del Sprint. El problema radica en que muchas veces no hemos cumplido la promesa o lo que planificamos en los últimos tres o cuatro Sprints y en el que comienza no solo queremos seguir insistiendo en que esta vez sí lo lograremos sino que prometemos hacer más, mucho más. A veces esto da resultado en el plazo inmediato. Pero a la larga, es algo insostenible. Y cuando de nuestro trabajo depende mucha gente, incluso una organización entera o más, miles o millones de consumidores, no es bueno incumplir. Eso desanima no solo al propio equipo, a la empresa sino también a los usuarios finales del producto o servicio. Para la solución a este síndrome escribí sobre el muy conocido patrón de Scrum “El clima de ayer” en: El clima de ayer, o el arte de prever lo que sucederá hoy. Clic aquí.

9.    La adicción a las herramientas. Cuando venimos del paradigma tradicional no tiene nada de malo si nos aferramos a lo que conocemos. Pero cuando el tiempo pasa y seguimos anclados a esa antigua formula de trabajo, es que nos falta incorporar parte o toda esa nueva forma de pensar y de hacer las cosas: nos hace falta agilidad. Esa búsqueda continua de instrumentos automatizados para hacer esto y aquello. Ese deseo incontrolable de tener control sobre el proceso, sobre el producto y sobre las personas mediante el registro de su trabajo en herramientas de todo tipo. Las conversaciones se vuelven discusiones eternas sobre evaluación de proveedores, precio de licencias, RFP ininteligibles, licitaciones y presentaciones sin valor para la empresa. ¿Y de aquello? Sí, de aquello, del producto probado y funcionando, útil, de valor para la organización y para sus clientes. De eso nada. Allí es cuando necesitamos trabajar más en formas de interacción entre personas y valorar más esto que a esas herramientas y a los procesos. Scrum, por su parte, nos provee de ricos momentos para interactuar, cinco eventos más uno, sí, el refinamiento. Literalmente, todos los días podemos tener conversaciones cara a cara, que se han convertido en “el método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros”. Escribí sobre este asunto en: La Conversación Cara a Cara en Tiempos de la Comunicación Digital. Clic aquí.

10. La falta de espíritu. En la introducción a este artículo les dije que Scrum no carece de espíritu. De hecho el Espíritu del Juego es el patrón Scrum que nos proporciona el contexto, el entorno que necesitamos para ejecutar cualquier otro patrón: se trata del marco de trabajo mismo, Scrum. A veces es útil pensar en Scrum como un juego. Cuando usemos Scrum, el equipo de desarrollo de producto, no solo el Scrum Master ni mucho menos el Dueño de Producto, debe enfocarse en crear una cultura donde la personas conozcan, interioricen, practiquen y promuevan el espíritu de Scrum. Todos en el equipo Scrum y quienes trabajamos con ellos debemos ayudar a instanciar esa cultura y a que esta evolucione liderando con el ejemplo. Sobre esto, hemos aprendido a promover y a premiar comportamientos que consideremos apropiados o “correctos” para la cultura que queremos, y a desanimar y castigar otros comportamientos que creemos inapropiados o “erróneos”. En el largo plazo, esto da como resultado que una nueva cultura emerja: la cultura Scrum, la cultura ágil. Sobre esto último escribí hace muchos años: Cultura Ágil, ese oscuro objeto del deseo. Clic aquí. Además de muchos otros artículos en este mismo Gazafatonario. Y sobre Scrum, con mi gran amigo Jorge Abad estamos en el proceso final de edición de nuestro libro Scrum: epítome de una década de experiencias, que reúne mucha de nuestra propia experiencia lidiando con estos comportamientos atípicos y con muchos otros. Clic aquí.


La lista de comportamientos extraños o irregulares puede ser infinita. Pero es definitivo, “para crear la cultura debes ser la cultura”. Déjame saber en el foro qué piensas de todo esto y qué otros comportamientos insólitos o anómalos has encontrado en tu camino ágil.