lunes, 12 de febrero de 2024

Mi transformación ágil

Me he dado cuenta de que nunca he puesto por escrito cómo fue "mi transformación ágil". Que transformó el proyecto en el que trabajaba pero también a mí misma.
Aquí va la historia.

Año 2015 (o fue en 2016?). Después de más de 2 años en el proyecto, y una bajada de trabajo (y presupuesto) tremenda, solo quedamos 6 personas (más el jefe).

Éramos casi silos independientes. El jefe daba tarea a cada uno de nosotros, y apenas sabíamos lo que hacían los demás. Era como estar en cubículos al estilo americano.


A veces al marcharme a casa, veía como otro compañero se quedaba con algún marrón. Nadie le ayudaba (ni yo) y básicamente era mutuo.

Pero algo estaba cambiando en el cliente para el que trabajábamos. Estaban implantando algo llamado "agilidad" y nuestro responsable del cliente quiso subirse al barco.  Nos explicó que quería implantarlo en nuestro proyecto, y que íbamos a tener una serie de reuniones con un "coach agile" para que nos guiase en el camino.

Y así fue. Primero empezamos conociendo de qué iba eso de la agilidad un poco "por encima" y luego nos hablaron de Scrum y Kanban. La gente del cliente había recibido formación pero nosotros (como empresa externa) estábamos totalmente verdes.
Nos hablaron de las ceremonias, la daily, la retro, la review y la retrospectiva. Y que necesitábamos un Scrum Master. Ahí yo levanté la mano: me presento voluntaria! Ya que la coach había dicho que el jefe no podría hacer ese rol, vi la oportunidad y me lancé.

Nos preguntó qué tipo de tareas hacíamos. ¿Evolutivos o incidencias? Nosotros hacíamos sobre todo evolutivos, aunque también tratábamos las incidencias de producción. Nos propuso tener 2 tableros, uno para los evolutivos y otro para las incidencias.
Tuvimos que definir nuestro tablero para evolutivos (llamémosle tablero Scrum), identificar las columnas que queríamos visualizar, cómo indicar que teníamos algo bloqueado, cómo saber quién estaba tratando ese ticket... (pensad que era todo en físico, no usábamos ninguna herramienta tipo Jira).

El tablero Kanban
Para las incidencias usábamos un tablero kanban básico: to do, doing, done. Y a un lado un contador: ¡Llevamos x días sin incidencias! xD

El tablero Scrum
Tenía unas cuantas columnas. Recuerdo que había una parte para "los Product Owner" para que pudiesen indicar los tickets en los que estaban trabajando. Digamos que ellos tenían su propio "to do, doing, done". Y luego estaban las columnas para lo que estábamos desarrollando en ese sprint.
Desarrollo, tests unitarios, tests de integración, tests de usuario, listo para subir a producción, en producción.

El sprint
Inicialmente definimos que nuestros sprints durarían 3 semanas y con el tiempo pasamos a sprints de 2 semanas. Y no tardamos mucho la verdad.
En el cliente se hacían subidas a producción planificadas cada 2 semanas, así que los sprints de 2 semanas nos permitía alinearnos y subir a producción lo más rápido posible.

Las historias de usuario
En todo ese tiempo no escuché hablar de historias de usuario, pero sí que definimos entre todos qué información debía figurar en los post-it: 
  • Mi avatar :-)
    Título resumen para saber de qué iba el evolutivo.
  • Horas de trabajo estimadas (no sabíamos lo que eran puntos historia), fecha prevista de subida a producción.
  • Tecnología en la que había que desarrollar (podía ser cobol, o una herramienta con código propio que usábamos para la generación de documentos, o javascript para el front).
  • Quién estaba con el desarrollo (para esto imprimimos unos avatares para identificar a cada persona del equipo).
  • Dependencias con otros equipos.
  • Quién era el peticionario (hacíamos evolutivos para diferentes departamentos del cliente).

Los bloqueos y las dependencias
Si un ticket estaba bloqueado, le poníamos un punto rojo (una pegatina xd), y si tenía dependencias por resolver, un punto azul.
De las dependencias se encargaba la gente del cliente ya que nosotros no teníamos digamos "autoridad" para reclamar según que cosas a otros departamentos.

Las estimaciones
Nosotros éramos todos de un mismo proveedor, y facturábamos por evolutivo realizado. Cada evolutivo se estimaba en horas siguiendo un ábaco que estaba "validado" por el cliente. Aunque en ocasiones lo usábamos simplemente para que reflejase las horas que nosotros considerábamos que eran necesarias.

Las estimaciones junto con el análisis técnico las solíamos hacer los que conocíamos mejor la aplicación. No significa que no hablásemos entre nosotros, pero teniendo en cuenta que yo era la que menos tiempo llevaba en el proyecto y lleva 3 años, podemos decir que éramos un equipo muy maduro, que conocía muy bien la aplicación, y que no solíamos errar el tiro en las estimaciones.
Nunca llegué a estimar en story points en ese equipo.

La capacidad
La calculábamos en horas teniendo en cuenta cuántos días íbamos a trabajar ese sprint, y de ahí restábamos las horas de ceremonias. Cada uno se preocupaba de conocer su capacidad antes de ir al sprint planning, y lo solíamos compartir en un excel para que tuviésemos la info de todo el equipo en un mismo sitio.
Para las incidencias, cada sprint, o cada 2 sprint, se ocupaba una persona. En caso de que no hubiese incidencias, trabajaría en algún ticket de evolutivos. Lo quisimos hacer rotativo porque encargarse de la producción siempre es agobiante. No era justo que siempre estuviese el mismo...

La autoorganización
Esto fue lo que más nos cambió. Como decía, trabajábamos cada uno en nuestro cubículo y eso no era compatible con la agilidad. Ahora los PO (el cliente) iba a presentarnos lo que querían realizar de cara al próximo sprint, y nosotros, el equipo, decidiríamos cuánto podíamos hacer y quién haría qué.
Ya nadie nos asignaría una tarea, la cogeríamos nosotros.
Esto al jefe no le gustó nada. La agilidad le quitaba totalmente el control sobre las personas. Vio un peligro ahí y empezó a revolverse: no quería aceptar la agilidad.
Lamentablemente para él, el hecho de que se opusiese a la agilidad hizo que nos uniésemos más como grupo: todos veíamos ventajas en pasar a trabajar así y, aprovechando que la petición venía del cliente, no íbamos a quedarnos callados.
Como yo había sido voluntaria para ser Scrum Master, me tocó lidiar con esta situación.

Reunión a 4 bandas (mi jefe, el cliente, la coach agile y yo como Scrum Master)
Antes de esta reunión me había reunido con el equipo para saber qué querían hacer: peleábamos por la agilidad o no? El resultado fue un sí rotundo. Queremos ser ágiles!
El hecho de vernos reunidos sin él, mosqueó mucho al jefe.
Al llegar a la reunión sabía que me iba a tocar enfrentarme a él. Y así fue.
No sé muy bien cómo pero acabamos hablando de nuestra situación como equipo, a lo que respondí que ahora mismo no éramos un equipo, tan solo individuos cada uno trabajando en sus cosas. Pero en agilidad, tendríamos un compromiso compartido, el compromiso del equipo, y trabajaríamos juntos para alcanzarlo. Además de que desde que habíamos empezado a "transformarnos" la gente estaba más animada.
Recuerdo que la coach me preguntó algo como "pero algo habrá que os empuje a levantaros cada día para venir a trabajar". A lo que respondí: claro que sí, cobrar a final de mes.
Aquí mi jefe estalló en llamas. En su cabeza, éramos todos súper amigos y nos llevábamos genial, y nos encantaba nuestro trabajo y nos apoyábamos unos a otros. Vivía en un mundo paralelo de fantasía!

Sabía que aquella reunión me traería consecuencias. Pero cuando vives con una carta de dimisión en el cajón a la que solo le falta la fecha en la que causarás baja... poco te importa.

La magia de la agilidad
Desde que empezamos a adquirir compromisos como equipo, la vida mejoró para todos. Cuando a uno le iba muy bien, se ponía a ayudar al otro que no le iba tan bien, para cumplir con el sprint goal.
La gente dejó de quedarse después de la hora. Si el cliente quería añadir una tarea "urgente" debía quitar otra equivalente.
Solamente por eso, habían valido la pena las broncas con el jefe.

Las habilidades en T
Lo comenté por encima en "El camino hacia el dominio II: un equipo con 11 delanteros". Yo era de cobol y sólo hacía tareas de cobol. Pero al llegar la agilidad me lo replanteé. Aceptaría aprender a trabajar con la herramienta chunga de los documentos si pasábamos a agilidad. Pero no me afectó solo a mí.
A raíz de poder elegir nuestras propias tareas, otras personas empezaron a pedir tareas de cobol para poder aprender. También pasó a nivel funcional: la gente empezó a pedir tareas de áreas que no conocían para aumentar su conocimiento de la aplicación.
¡Todo de forma natural!


Conclusión:
La auto organización, hizo que las personas del equipo se interesasen en adquirir habilidades en T.
La auto organización, hizo que las disfunciones de nuestro equipo empezasen a desaparecer.
La auto organización, hizo que las personas volviesen a estar motivadas.

¿He dicho ya que la clave fue la auto organización? :-P

No fue fácil, no fue rápido, pero marcó un antes y un después. Y por eso siempre seré del #teamAgile :-)

#thisistheway

lunes, 29 de enero de 2024

Cobol VS Java: vuelve el debate

Hola amigas y amigos del Consultorio Cobol.
Como sabéis, hace tiempo que no escribo artículos de COBOL porque hace ya un tiempo que no programo. Pero es que ahora ni siquiera trabajo en un proyecto COBOL. Me he cambiado de bando...


Últimamente estoy trabajando con equipos Scrum que programan en java (o algo parecido), con su control de versiones con Bitbucket, sus branchs y demás.

El caso es que cada vez que digo: 
"recordad que lo prioritario es completar el sprint goal. Si terminamos lo nuestro, vemos de ayudar a los demás para asegurar que cumplimos el sprint goal."
Me responden: "es que no podemos trabajar más de una persona en un ticket."

Y si digo: "vale, pero hay 2 tickets." 
Entonces me dicen: "no, es que todos afectan a la misma clase. Solo puede tocar uno."

Y claro, yo que no estoy metida en la parte técnica, y que además soy de cobol-mainframe, no lo entiendo del todo.
Porque en cobol, recuerdo perfectamente repartirnos los programas (y rutinas) que había q tocar/crear. Incluso una persona podía hacer el JCL (en la versión Java el equivalente imagino que será un script) y otro el programa. O si había que tocar alguna tabla para añadir datos (parametría por ejemplo) lo podía hacer otra persona. 
Y sí, claro que para implantar/testear teníamos que ponernos de acuerdo si eran cosas enlazadas, pero podíamos trabajar varios en la misma funcionalidad. Digamos que el código estaba lo bastante troceado como para poder trabajar varios a la vez.
Eso ayudaba mucho a trabajar conjuntamente en el objetivo del sprint (cuando alguien terminaba, podía ponerse a ayudar al resto).


Entonces yo me pregunto, ¿esto es una cosa de la aplicación en cuestión con la que trabaja mi actual equipo? ¿Es que el código no está bien hecho y por eso todo está metido en el mismo "archivo"?
¿Es porque no estamos dividiendo bien las features? ¿O soy yo que no me entero?

Otra cosa que me dicen es que claro, que si cada uno se crea una branch, luego hay conflictos. Y yo me pregunto, ¿y eso es un problema? Te detecta los conflictos a la hora de hacer el merge y los "resuelves", ¿no?

¿Tan complicado es o es que buscamos la comodidad?

Por favor java developers, arrojad algo de luz... Mi objetivo sólo es terminar las cosas en curso antes de empezar otras nuevas...

#thisistheway

lunes, 22 de enero de 2024

Ansiedad VS Motivación: epílogo por S.F.

Antes de empezar, si no lo has hecho ya, te recomiendo leer el artículo "Ansiedad VS Motivación: el estado de fluidez" para dar contexto a lo que te voy a contar a continuación.


¿Alguna vez habéis estado en un traspaso de conocimiento? Me refiero a cuando una empresa sale y entra otra a quedarse con una aplicación de software.
Es decir, cuando las personas que llevan años trabajando en una aplicación se van, y llegan otras que no la conocen en absoluto para tomar el relevo.

¿Esto os suena? 
Si tú que estás leyendo esto lo has vivido, sabrás que es imposible "traspasar el conocimiento".
  
Lo que va a ocurrir, es que las personas que acaban de llegar y que no tienen ni idea de lo que se van a encontrar, van a pasar tal vez 2-3 meses con este traspaso, y luego 1 año fácilmente de sufrimiento hasta "entender algo" de lo que tienen que hacer. 

¿¿¿Cómo se sobrevive a 1 año en la zona de ansiedad??? 



Muchas personas no sobreviven. No tengo una estadística más allá que la experiencia de mi amiga S.F. y la mía propia, pero en algunos casos puede llegar al 50%. 
Esto no es normal. Esto no es vida. 

Os dejo aquí el testimonio de mi amiga que lleva ya 3 proyectos de traspaso. Es bastante ilustrativo...
 
Traspaso A: 2022
"Con traspaso de 1 mes llevamos un infarto, una baja por jaquecas diarias, el equipo X empastillado porque no pueden dormir. Y en el mío hay una persona de baja por ansiedad, y ha llorado ya medio equipo en plan ataque de ansiedad.

Otro chico acudió a la psicóloga de riesgos laborales de la empresa y tras darle las pastillas correspondientes le dijo: no te preocupes, que las toma la mitad de la empresa."

Traspaso B: 2021
"Con traspaso de 3 meses tuvimos: un jefe de baja por amago de infarto, un ataque de ansiedad con salida de proyecto por petición propia (obviamente), un chico con varios meses de baja por ansiedad y varias bajas voluntarias. Todo en año y pico."
 
Traspaso C: 2018
"Fueron 3 meses de traspaso con 12 horas de curro al día, pero aquí no recuerdo que mucha gente se pirara. El jefe cayó una vez acabó el proyecto, pero este ya era repetidor, ya estando en otro proyecto se había cogido un año de baja por ansiedad." 


Conclusiones de S.F. 
"Y contándolo así, la verdad que da gusto mi currículum, ¡qué buenos proyectos! 😂😂😂"


¿Os imagináis en qué tipo de proyecto estaba yo cuando caí en la zona de ansiedad en 2011?

Cooorrecto.


This is NOT the way!!!!

lunes, 8 de enero de 2024

El camino hacia el dominio (capítulo final): el mecanismo de la suerte

Antes de empezar si no lo has hecho ya, te recomiendo leer los anteriores artículos de la serie: "Ansiedad VS Motivación: el estado de fluidez"  , "El camino hacia el dominio I: el test de egoísmo" y "El camino hacia el dominio II: un equipo con 11 delanteros" para dar contexto a lo que te voy a contar a continuación.


Capítulo final: el mecanismo de la suerte.
Ya solo quedan 125 chicos de los 300 que empezaron en Bluelock. Después de la última prueba que Ego les ha puesto, solo quedarán 35.


En un momento de esta última prueba, el equipo de Isagi pierde un partido de 4 contra 4 en el último segundo, digamos que "por mala suerte". En un contraataque, Isagui consigue parar el disparo del rival. Pero el balón sale disparado y nadie sabe dónde va a caer. 
Casualmente, el balón le cae en los pies a otro jugador del equipo contrario, que inevitablemente marca gol.

Isagi no entiende por qué si él hizo todo bien, la suerte le ha hecho perder. 


Entonces aparece Ego para explicarles el mecanismo de la suerte.

¿Alguna vez os ha cagado una paloma encima? 




Qué… mala suerte, ¿no? 🤣










Pero justo después os fijáis en que el suelo estaba lleno de caca de paloma. Y cuando miráis hacia arriba veis a un montón de palomas revoloteando. Si os hubieseis fijado antes, lo podríais haber evitado. 
¿Sigue siendo cosa de la suerte?


Dice Ego que existe una zona donde hay más probabilidad de que tengas suerte si estás preparado. Es lo que llama “el epicentro de la suerte”.
Y aquéllos que solo se sienten a mirar van, inevitablemente, a perder su oportunidad de “tener suerte”.

Este chico que marca gol estaba en el lugar adecuado para que en caso de que un balón llegase a sus pies, pudiese marcar gol. Si hubiese estado en otro sitio, por mucho que le llegase un balón, a lo mejor no marcaba. Porque estaba demasiado lejos, o porque aparecerían unos defensas a cortarle el paso.

Y es que ya lo decía Séneca. La suerte es lo que sucede cuando la preparación y la oportunidad se encuentran.

Tal vez no te habías dado cuenta, y esto te había pasado alguna vez...
En mi caso diría que varias veces. 
La primera vez fue cuando surgió un proyecto para reescribir todo el código de la aplicación en la que trabajábamos (para optimizarla). Cuando empecé a oír hablar del tema tuve claro que me interesaba. Por un lado iba a trabajar con dos personas del cliente que eran digamos "referentes" en Cobol, y por otro lado íbamos a trabajar con el departamento de calidad para buscar cómo optimizar el código. Siendo la última en llegar al proyecto, pasaría a ser la que se conociese mejor la aplicación.
Así que preparé mis argumentos para que, en caso de que pidiesen voluntarios, poder ofrecer mis servicios :-P

Otra ocasión sería cuando fui Scrum Master por primera vez. El cliente quería que nuestro proyecto pasase a trabajar en agilidad. Yo de aquella ni sabía lo que era eso pero según nos fueron explicando en qué iba a consistir tuve claro que me interesaba. Me puse a leer por mi cuenta para que, en caso de que el jefe no pudiese ser el Scrum Master y necesitasen "a alguien", levantar la mano. Esto me permitió tener más formación por parte del cliente y más acompañamiento del coach agile.


Con esta última pieza de la suerte, Isagi ya puede completar la fórmula para ser el mejor delantero del mundo. Es decir, para alcanzar el dominio:


Así que recordad:
  • No dejéis que el ego bloquee vuestro aprendizaje.
  • No os dejéis limitar por vuestros roles.
  • Y preparaos, y colocaos, donde haya más probabilidad de que esa paloma os cague encima ;-) 


#thisistheway

lunes, 11 de diciembre de 2023

El camino hacia el dominio II: un equipo con 11 delanteros

Antes de empezar, si no lo has hecho ya, te recomiendo leer el artículo anterior "Ansiedad VS Motivación: el estado de fluidez"  y "El camino hacia el dominio I: el test de egoísmo" para dar contexto a lo que te voy a contar a continuación.


Capítulo 2: un equipo con 11 delanteros. 
Si la primera prueba fue el test de egoísmo, en la segunda prueba Isagi y sus 10 compañeros (ya solo quedan 11 por grupo, ¡uno fue eliminado en el test de egoísmo!) deben convertirse en un equipo para competir en un torneo. El torneo enfrentará a 5 equipos, y solo los que queden en el primer y segundo puesto pasarán de fase, junto a 1 delantero de cada equipo perdedor: el que haya marcado más goles. Más de la mitad de los chicos de Bluelock quedarán eliminados...

Pero, ¿Cómo van a montar un equipo si los 11 son delanteros? ¿Quién va a ser el portero?

A lo que Ego les dice: 

"El fútbol consiste en marcar más goles que el oponente, ¿por qué no va a tener sentido que los 11 jugadores sean delanteros, si son los que marcan los goles?
No os quedéis confinados en vuestros roles. No dejéis que vuestra posición en el campo os frene.
En el fútbol no se puede ganar haciendo las tareas que te dan, necesitáis habilidades individuales."

En uno de los partidos del torneo, Isagi tiene que jugar de defensa. 
Isagi es delantero, en lo que él es experto es en marcar goles, en tirar a portería. Pero eso no significa que no pueda tener otras habilidades, que no pueda saber hacer otras cosas que aporten al equipo y que les permita ganar.


Esto en agilidad es lo que llamamos habilidades en T o "T-skills". Los equipos ágiles son multifuncionales, lo que significa que entre todas las personas del equipo reúnen todas las habilidades necesarias para poder entregar software, y además que sus miembros tienen habilidades en T

Es decir, yo puedo ser experta en programación Java, pero eso no significa que no sepa de testing. Yo puedo ser experto en testing pero eso no significa que no pueda hacer despliegues.


Un ejemplo de esto lo viví en un proyecto donde backend y frontend eran dos equipos distintos. La gente del equipo de front se negaba a aprender cualquier cosa que se apartase de “tareas de un programador frontend”. Ni para poder hacer tests sin pedir ayuda, ni para poder buscar datos en la base de datos. En fin.
Lo que no sabían es que a nivel management esto era un problema muy grave porque no siempre había tarea "puramente" front, y ya estaban pensando en cómo sustituirlos por gente que quisiese coger la doble competencia front-back (serás experto en back, pero serás capaz de hacer también algunas tareas de front o a la inversa).


Escribiendo estas líneas he recordado que yo misma estuve en ese plan, como el equipo de Front del que hablo: yo soy de cobol, solo hago tarea de cobol.
Viéndolo con perspectiva, estaba completamente desmotivada. Trabajábamos con dos tecnologías, cobol y una herramienta con un lenguaje propio. Estaba desmotivada por varias razones, pero me puse en plan "pues yo solo hago cobol" también porque mis compañeros no querían aprender cobol. Lo típico: cuanto más sabes más tarea te dan. Si cogía más conocimiento, me caerían más marrones.
Ya veis cómo pensaba yo en esa época...

Entonces llegó la agilidad. Yo quería con todas mis fuerzas que la transformación ágil saliese bien y que se quedase. Pero los equipos ágiles son multifuncionales, ¡y sus miembros tienen habilidades en T! 
Así que abrí los brazos y abracé el cambio, y empecé a hacer tarea de esa herramienta raruna. Y aunque yo era experta en Cobol, era capaz de hacer pequeñas tareas de la otra parte. Podía aportar más al equipo que antes (como Isagi!). Podía entender mejor el funcionamiento de la aplicación (y a mis compis no coboleros). Y mira tú, mis compañeros empezaron también a querer aprender de Cobol...

Porque limitarte a lo que tu rol dice que eres, es otro bloqueo para tu aprendizaje :-)

Continuará...

#thisistheway