Archivo de la etiqueta: Agile

¡ LO QUE HACÉIS NO ES AGILE !

Quizá has oido esto mucho cuando, por determinadas circunstancias, se han juntado equipos en distintos puntos de madurez. Las comparaciones son siempre odiosas, y cuando comparas equipos, mucho más.

Cuando esto lo sumas a que estos distintos equipos están envueltos es una transformación global en una empresa, es peor aún. Lo que se acaba comparando son simplemente procedimientos o formas de trabajo concretas y a partir de esta comparación, algunas personas pueden catalogar a otros equipos como no-agile. Las razones suelen ser tán superficiales como que aún no han incorporado tal o cual practica ágil.

Si por ejemplo, juntamos un equipo que sí realiza ATDD (definición de los tests de aceptación antes del desarrollo) y otro equipo en el aún no lo hacen y los tests los realizan cuando el desarrollador ha terminado su parte, puede ocurrir que a estos últimos se les acuse con ¡Eso no es Agile, waterfallista!. Sin embargo, en mi opinión, el hacer esto es debido a tener una visión muy sesgada de lo que es un proceso de maduración Ágil del equipo. En este ejemplo, sólo se tiene en cuenta el QA y el equipo que realiza ATDD se considera que hace Agile y el que no, es un mero Waterfallista.

Cuando digo sesgada me refiero a que esta acusación tambien podría pasar desde el punto de vista de despliegue del producto. Si juntamos un equipo que hace integración continua y pone en producción cada historia que se va terminando y a otro equipo en el que sencillamente el despliegue se hace después de haber terminado el sprint, el primer equipo podría decir al otro «. ¡Eso no es Agile, waterfallista!

O lo mismo puede ocurrir desde el punto de vista de diseño. Si en esta ocasión juntamos un equipo en el que hay miembros que realizan el diseño como una tarea más a la vez que la codificación con otro equipo en el que el diseño se hace un sprint anterior, puede llegar el listo de turno y decirles a estos últimos ¡Eso no es Agile, waterfallista!

Entonces ¿Qué es hacer Agile o no? Si habeis trabajado con un buen agilista, lo más probable es que este tipo de cosas no hayan salido nunca por su boca. Nos guardamos mucho de catalogar una forma de trabajo como Agile o No-Agile. Entendemos que cada equipo está en una fase de maduración distinta e historicamente se puede haber enfocado en mejorar una serie de practicas sobre otras, para solucionar unos problemas que para ellos eran más prioritarios que otros.

Agile no es más ni menos que el tener presente una serie de valores y principios marcados en su manifiesto. No hay un modo de trabajo que se pueda catalogar como más Agile que otro. De hecho, seguramente se puede hacer un trabajo puro waterfall por fases (analisis, diseño, desarollo, qa, despliegue) y ser Agil al mismo tiempo: haber dado más importancia a las personas y a sus interacciones, también al generar sofware más que a la documentación exhaustiva, se ha colaborado de principio a fin con el cliente y no se ha seguido el plan a fe ciega sin tener en cuenta el contexto. Entiendo que los valores hacen mucho challenge de las problemas que genera el seguir a pies juntillas el sistema waterfall, pero este escenario podría ocurrir. Una serie de practicas concretas no identifican un equipo como Agile o no

Consejo: cuando evalues o compares equipos, evita categorizarlos. Cada equipo tiene su propia historia y sus razones de trabajar de un modo en particular. Si quieres ayudarles, enfócate a entender esas razones y sus problemas reales. A partir de esos problemas, es donde vamos a poder recomendarles una u otra práctica. Si no, mira hacia atrás y hazte la pregunta «¿Nosotros empezamos a ser Ágiles solamente desde que empezamos a hacer algo en concreto o sencillamente desde que nos planteamos empezar esta transformación?»

Visualiza los flujos de comunicación de tu equipo con sociogramas

Hace dos artículos hablé de lo importante que es que los flujos de comunicación en un equipo sean lo más homogéneos posible para conseguir que un equipo sea de alto rendimiento. Esto quiere decir que cada uno de los miembros hable con el resto con similar frecuencia sin que haya nadie que monopolice o encauce la comunicación del resto ni nadie que esté más aislado.

Para detectar qué tal está la comunicación en tu equipo, una herramienta muy potente son los sociogramas. Esta herramienta permite visualizar gráficamente los flujos y la frecuencia en que los miembros de un equipo hablan o se escriben entre ellos. Esta herramienta se usa en otros ámbitos como por ejemplo en la educación y permite identificar niños que estén aislados o que tengan problemas de relacionarse con su clase.

Hay muchas formas de generar el sociograma, ya sea por análisis de una descarga del Slack o con tarjetas de proximidad. Sin embargo, con una simple encuesta se puede conseguir resultados muy potentes y con poco trabajo. Un ejemplo del que uso yo con mis equipos lo puedes descargar aquí. Preparas el documento con los miembros del equipo que quieres analizar y lo envías a todos y cada uno de los miembros. Sólo requiere un minuto de cada uno del equipo por lo que no hay excusa.

El resultado lo pasas a excel, que será lo que te ofrecerá la primera visión de la comunicación del equipo. Este excel no es más que una tabla de NxN de los integrantes del equipo con su nivel de comunicación entre ellos. Para que sea visual se marcan colores según el nivel de comunicación entre cada dos miembros. Ejemplo de un excel puedes descargarlo aquí.

El último paso es analizar la información y generar el sociograma. Yo hago 2 tipos de reporte. El primero es una distribución por clusters o sub-equipos en el que se pueden identificar (si los hay) subgrupos de gente que hablan más entre sí que con el resto de compañeros. También se identifica si hay algún miembro de equipo que es el nexo entre los sub-equipos, normalmente marcando un liderazgo que genera un cuello de botella. Un equipo de alto rendimiento no tendrá sub-equipos ni personas que filtran comunicación entre otros miembros.

Ejemplo de sociograma en el que se identifica dos subequipos por las capas técnicas.
Ejemplo de sociograma en el que no se identifican sub-equipos aunque sí que la comunicación entre los miembros es desigual.

El segundo tipo de gráfico que genero es el resultante de sumar todos los puntos de comunicación por cada miembro. De este modo se ve la persona que más se comunica con el resto y la persona que menos. Un equipo de alto rendimiento debería tener más o menos las mismas puntuaciones. Sin embargo, es común encontrar miembros con valores más altos en comunicación que nos indican que estas personas tienen algún tipo de liderazgo. También se identifican miembros del equipo con poca comunicación. Estos últimos muchas veces se debe a una persona que no esta localizado geográficamente con la misma cercanía que el resto.

En este gráfico identificamos mucha comunicación entre los miembros del equipo excepto con LL (miembro no co-locado con el resto) y muy poca comunicación con el Product Owner (PROBLEMA).
Aquí vemos un equipo con bastante heterogeneidad de comunicación. Hay dos miembros (FF y MR) que prácticamente no se comunicaba con el resto del equipo. Se trabajaba mucho dependiendo del Project Manager que era quien dividía el trabajo, haciéndose cuello de botella.

El sociograma es una herramienta que uso con todos los equipos con los que trabajo. Lo he usado para tomar una foto de la comunicación antes de una implantación ágil y otra foto después de un tiempo trabajando con Scrum. También lo he usado como objeto de estudio en una retrospectiva para que el equipo sea consciente de sus flujos de comunicación y ellos mismos sean los que proponga las mejoras y los auto-compromisos. Espero comentarios si los usáis.

Empieza 2019. Mis artículos más leídos hasta el momento.

Después del intenso año de preparar la CAS 2018, es tiempo de reflexión y seguir trabajando en esas cosicas que me gustan. Entre ellas mi blog. Para saber de qué debo seguir escribiendo he hecho el ejercicio de saber cuáles son mis artículos más leídos.  Os paso el TOP 5.

Numero 5:  Wastes o desperdicios en desarrollo de software

28/10/2014. Identificar los desperdicios o wastes es muy importante, tanto en el desarrollo sofware como en cualquier tipo de trabajo.  Ser más rápidos que la competencia y aprovechar hasta el último euro o movimiento, músculo o neurona para que el producto ser más competitivo requiere buscar continuamente la eficiencia.  ¿Cuánto hace que no repasáis los desperdicios en vuestro trabajo? ¿Lo habéis hablado en una retrospectiva últimamente?. Hace poco con el equipo hablé del waste de defectos asociado a los requerimientos incompletos o cambiantes. Los agilistas intentamos reducir este waste, no bloqueando cambios de requerimientos que es lo que primero se puede pensar, sino reduciendo el impacto en cantidad de trabajo supone asumir cambio.

Número 4: Planificación estratégica Ágil mediante Releases

17/1/2013. Más allá de la mera visión táctica de los sprints, la creación de software requiere una planificación a medio plazo. Además, en una empresa que requiere la coordinación de varios equipos verticales, todos deben conocer qué se va a hacer, quién lo va a hacer y cuándo se va a entregar. Un tema muy importante sobre lo que no comenté nada es que hay que ir informando del avance, no sólo al final del Release sino también en cada sprint. Tanto el Product Owner como los stakeholders deben ir viendo lo que se va construyendo para que no haya sustos al final del sprint.

Número 3:  La importancia del término “software funcionando”

26/12/2016. Este artículo lo escribí tras uno de mis mayores errores como Scrum Master, dar por bueno un avance de software en el que solamente se iba entregando las capas frontales pero sin una integración real con los sistemas que funcionan por detrás. Esto da una falta visión de avance de proyecto y se acaba con una bola de nieve de software por integrar que acaba poniendo gravemente en peligro la entrega.

Número 2Algo llamado “Declaración de Interdependencia”

21/2/2014. No puede haber un nombre más aburrido para algo tan importante como una declaración de principios como los ágiles pero solamente aplicados a la gestión de proyectos. Sigue habiendo proyectos en los que se ve a las personas como recursos, moviéndolos de un sitio a otro, con instrucciones a bajo nivel sin compartir la visión de lo que se está haciendo y sin dejarles aportar. Este es el camino al fracaso del proyecto y del producto que se está construyendo.

Y el top de los top…

Número 1:  Eduard Estivill, Carlos González, Rosa Jové ¿Qué hago con mis niños a la hora de dormir? 

29/10/2011. Este es el artículo que hace que me replantee el segmento al que escribir. En un blog sobre Agile el más leído es sobre infancia. Es lo que tiene ser padre y tener también otras prioridades en la vida. Imagino que es lo que le ocurre a todo aquel que ha entrado a leerlo, que da igual en qué trabaja o cuál es su pasión. Todos caemos en los mismos temas conforme nuestros hijos crecen. Es bueno que ocurra porque significa que nuestras prioridades no son únicamente el trabajo sino nuestras familias. Sin embargo, como leí hace tiempo y confirmé hace poco en el libro que estoy leyendo de Tim Ferris Tribe of Mentors, «…escribe como si hubiera un millón de copias de ti mismo y espera que te encuentren». Tranquilo que no me convertiré en un investigador de puericultura, que ya hay gente muy buena sobre esto y no quiero entrar en un mundo en el que existe más radicalismo de opiniones que en el propio fútbol.

Características de la comunicación de equipos de alto rendimiento

Hay multitud de vídeos, libros, artículos en Internet que hablan de los equipos de alto rendimiento. ¿Qué son? ¿Cómo se definen? ¿Qué los diferencia del resto? Y casi lo más importante. ¿Cómo un equipo puede llegar a serlo?

En el Laboratorio de Dinámicas Humanas del MIT han estudiado multitud de equipos y han identificado qué características de comunicación tienen. Estas características se observan en equipos que tienen gran creatividad y trabajan con gran energía y compromiso por encima de cualquier otro equipo. Estas características son observables, cuantificables y pueden usarse para ayudar a equipos a mejorar, enfocándose en sus flujos de comunicación.

La comunicación de los equipos se puede ponderar usando tres categorías principales.

  • Energía

La energía de comunicación es lo que también se llama ancho de banda.  En esto interviene mucho el medio que usen los miembros para comunicarse entre sí.  El medio de comunicación con más energía o ancho de banda es una conversación cara a cara. Cada interlocutor observa los gestos y el lenguaje corporal, oye e interpreta la entonación con la que dice cada frase además de entender el contenido del mensaje en sí mismo.  Después de éste, pasaríamos a usar la videoconferencia en la que no podemos ver por completo a la persona con la que hablamos al estar limitados a una pantalla. Después de los medios audiovisuales tendríamos los medios de comunicación de sólo voz como el teléfono. En ultimo lugar tenemos sistemas de mensajería asíncronos como los correos electrónicos . En estos últimos son en los que más malinterpretación hay por lo que se gasta mucho tiempo en ser exhaustivos en su escritura y aún así no consigue transmitir correctamente el mensaje.

Un equipo de alto rendimiento hace uso de canales de comunicación de gran energía. Conversan hablandose cara a cara para transmitir la información en el menor tiempo posible y disminuyendo los malentendidos.

  • Engagement o dedicación. 

Cuando se mide la dedicación de la comunicación, lo que observamos es la frecuencia en la que ocurre la misma entre cada uno de los miembros del equipo. Lo importante de esta parte es que la frecuencia entre todos sea homogénea, que todos hablen con el resto del equipo aproximadamente las mismas veces. Cuando los flujos de comunicación son heterogéneos y desiguales, se puede detectar por ejemplo que hay un líder el cual siempre interviene para que otros miembros se sincronicen entre sí. Esta persona recibiría más flujos de comunicación que el resto de miembros y se convierte en un cuello de botella. También se puede detectar a miembros del equipo que no están tan integrados. Estas personas recibirían una menor frecuencia de comunicación de sus compañeros que la que recibe el resto y normalmente no pueden aportar tanto como el resto.

  • Exploración

En un equipo de alto rendimiento siempre hay necesidades de conocimiento nuevo que no tienen. Para ello es importante que sepan explorar y encontrar en otros medios (Internet, libros, foros, comunidades técnicas,  contactos en otras empresas,..). Cuanta más facilidad tengan en encontrar esa información, estos equipos tendrán menores bloqueos y sus resultados serán de mayor calidad.

¿Cómo podemos medir estas características?
En un próximo artículo que escribiré en breve, explicaré una herramienta con la cual se puede visualizar el engagement o dedicación de un equipo.

Fuente: Harvard Business Review

Las 5 disfunciones de un Sprint Planning

Hace poco facilité un Spring Planning en el que todo fue mal. Sólo un miembro del equipo se comunicaba con el Product Owner y el resto se quedaba callado protegido por el muro que ofrece la distancia y la audioconferencia.  Justo al terminar me llegó la información por parte de algunos miembros del equipo de que lo planificado en el sprint no tenía sentido, que no habíamos tenido en cuenta ciertas cosas.  Cuando lo escuché sentí que lo que de verdad no tuvo sentido fue la reunión en sí misma ya que no se pudo pactar el objetivo del sprint.

Hace poco me leí el libro de Patrick Lencioni sobre las 5 disfunciones de un equipo.  En este libro en forma de novela se tratan los problemas que suelen tener los equipos que no consiguen trabajar de forma colaborativa y estas disfunciones acaban viendose en los sus resultados. Estas mismas 5 disfunciones se dieron juntas en el propio Sprint Planning y voy a explicar por qué. Espero que  te ayude a identificar si ocurre lo mismo  en tu equipo Scrum.

5 Disfunciones de un equipo

Ausencia de confianza.
El equipo debe tener la misma confianza que tiene cuando se reune con sus amigos a hablar de fútbol. Debe poder ser capaz de preguntar todas sus dudas, levantar la mano  y decir lo que se le ocurra como «no lo entiendo» o «lo que dices no tiene sentido»  y hacer estimaciones sin miedo a represalias. Yo he participado en Sprint plnnings en los que además de los miembros del equipo Scrum había varias personas de la PMO (Project Managemenet Office) monitorizando y atendiendo a todo lo que se iba diciendo. Esto no ayuda a que el equipo se sienta cómodo y seguro en la sesión. Hay que estar atento a estas personas como por ejemplo algun lider técnico que reprocha cualquier intervención de sus compañeros con aire de superioridad
Mi compi de GFT @fedcasabianca como apertura de un curso sobre retrospectivas nos pidió valorar «¿Cuanto de seguro te sientes sobre dar tus opiniones?». Esto es muy importante evaluarlo antes de empezar un Sprint Planning. Además identifica si hay gente conectada de forma remota o asistiendo en la reunión que no han sido invitados por ninguno de los miembros del equipo Scrum. Preguntadles cuál es su rol para la reunión de sprint planning. Recuerdales el objetivo de la sesión y que quizá lo dificultan con su presencia (Principio de Incertidumbre). Sí notas que afecta al equipo y está dentro de tus posibilidades, intenta que no asistan. Lo importante es el propio equipo y que se sientan seguros .

Temor al conflicto
Cuando el equipo no se siente seguro en la sesión de planificación no surgen conflictos. No se discute nada.  El Product Owner dice cómo lo quiere o todo lo que necesita que esté en el sprint y el equipo asiente sin discrepar. O el considerado lider técnico da una valoración o una solución técnica y el resto la asume sin ponerla a juicio. En una sesión de Sprint Planning debe haber mucha comunicacion entre todos los miembros del equipo Scrum, incluyendo sobre todo quien es la voz del producto. Toda persona que no discuta un tema lo más seguro es que no lo haya entendido bien y tenga que preguntar qué hacer o cómo hacerlo a mitad de sprint, poniendolo en peligro.
Como herramientas en las planificaciones que ayudan a disminuir esta disfunción se viene usando el Planning Poker. Precisamente se usa porque al poner las cartas todos boca abajo y darles la vuelta a la vez, todos dan la estimación sin conocer la del resto. Cuando un miembro del equipo da una estimación que discrepa de las otras, debe hablarse (generarse el conflicto necesario) para que su opinión se tenga en cuenta o al menos se escuche y evalue. La persona que ha dado esa estimación distinta debe quedarse con la sensación de que al menos se ha escuchado su criterio.

Falta de compromiso
Según la guía de Scrum cuando termina el Spring Planning, el equipo y el Product Owner acuerdan un objetivo de sprint. La palabra «acuerdan» es muy importante. No es una imposición al equipo por parte del propietario de producto.  El equipo es la unica entidad que establece la cantidad de trabajo que puede asumir. Sin embargo, en muchos equipo no es así o los propios miembros no lo ven así. La tradicion waterfullista de agendas apretadas ha calado durante muchos años y algunos equipos esperan que les impongan los backlog item a meter en el sprint sin tener en cuenta lo que realmente pueden hacer. Esta imposición provoca que los que van a desarrollar no sientan que ese objetivo les pertenece y no lo asuman como propio.  Cuando esto ocurre puede pasar que finaizar el planning y alguien diga  «Eso no lo hacemos ni de coña». O peor aún, se asuma de forma silenciosa independientemente de cómo acabe todo.
El equipo debe sacar a la luz cuánto de realista el es objetivo de sprint antes de dar el objetivo del mismo por pactado. Para ello una herramienta que se usa es la votación con el puño de cinco.  Se les pregunta a los miembros del equipo de desarrollo cuánto de realizable es el objetivo del sprint con valores entre 0 – «Ni de coña» y 5 – «Lo hacemos con la patilla».  La votación de cada uno lo tienen que mostrar en conjunto levantando la mano por encima de la cabeza sin verse influenciados por el resto.  Si se está en remoto se puede usar una herramienta tipo planning poker remota para esta votación. Es importante que quienes pongan valores bajos expongan sus razones. Quizá saben algo que el resto no.

Evitación de las responsabilidades
Cuando el equipo siente que el objetivo del sprint ha sido impuesto, lo trabaja sin sentirlo como suyo. Eso hace que por ejemplo cuando se ve acercarse el final de sprint y se detecta que quizá no se puede entregar todo, no les importe y no tengan el compromiso de colaborar entre todos para conseguirlo. Con esto no estoy hablando de hacer horas extras. Con esto quiero decir que el equipo  no tiene el sentimiento en que en parte se han fallado a ellos mismos y no sienten la necesidad de mejorar como equipo sprint tras sprint. Sin esta sensación no tienen la motivación suficiente para llegar a convertirse en un equipo de alto rendimiento.
Para detectar y mejorar esto, en las retrospectivas al final del sprint se debería evaluar las razones por las cuales algo ha salido del objetivo.  El Product Owner, aunque sin llegar al reproche, sí debería transmitir la importancia de intentar cumplir el objetivo pactado, sobre todo si el no cumplirlo es algo que ocurre de forma frecuente. El alto rendimiento debería ser objetivo de todos y si a nadie le importa que no se entregue todo, el equipo puede llegar a la autocomplacencia y estancamiento.

Poca atención a los resultados
Todas estas disfunciones concluyen en que el equipo no siente el producto como suyo.  No sienten los triunfos del resultado de su trabajo como suyos. Por ejemplo no les imporata cuando se consigue que el producto llegue a hitos como una alta tasa de descargas o uso por millones de personas. Tampoco sienten como suyos problemas que afectan al producto como por ejemplo el no haber conseguido activar la campaña de Navidad a tiempo y perder muchisimas ventas. Cuando estos problemas ocurren puede ser normal en un equipo disfuncional echar la culpa a elementos externos como «a quien gestiona el proyecto», a «negocio» o a otras partes implicadas.  Sencillamente es un equipo que va «fagocitando» historias de usuario del backlog y convirtiendolos en software funcionando sin mayor visión. Esto puede ocurrir independientemente de si se usa Scrum, Kanban o Waterfall como metodología.
Para detectar esta disfunción es tan fácil como ver si al equipo le importan metricas de producto como número de usuarios, funnels de tendencias de uso, las opiniones de los usuarios, etc.. Hazte preguntas como: ¿Le suelen preguntar al Product Owner sobre cosas relativas al uso del producto? ¿El Product Owner les comparte el avance del producto, a dónde quiere que vaya en medio largo plazo y para el equipo es algo que le interesa?

He creado este formulario de Google  para recordarme y ayudarme en los Sprint Planning a recabar esta información sobre estos problemas. Espero que en dos o tres sprints haciendo esta evaluación y usandolo como dato en las retrospectivas  me ayude a identificar estas disfunciones y estudiar entre todos formas de mejorar. Feel free de copiartelo o adatarlo.

Autogestión en equipos dentro de consultoras – Novela corta de ciencia ficción

Amanece en la playa Muchavista, situado a media distancia entre la población de Campello y la ciudad de Alicante.  Ya se ve bastantes corredores aprovechando el buen tiempo para estirar las piernas a lo largo del paseo marítimo. Los barrenderos limpian los últimos restos y vasos de Mac Donalds dejados por los paseantes nocturnos antes de dar paso a un día que promete tener bastante ocupación de la playa.

Sin embargo, el verdadero movimiento no está precisamente en la arena. A pocos metros de la misma se ve un chico de 30 años, de pie mirando al mar y disfrutando de su café en una taza en la que se lee las palabras «Clean Code». Da los últimos sorbos, deja la taza en una mesa del jardin y estira sus brazos y piernas para despertarlos después de una noche de sueño reponedor. Javier y su equipo son miembros de una consultora internacional, HGY,  que da servicio a grandes corporaciones financieras. Son un equipo 100% autogestionado dentro de la compañía, y muy disputado entre los clientes de la misma.

Javier recoge la taza y se va al interior de la pequeña casa de dos plantas con vistas al mar.  Deja atrás el pequeño jardín algo dejado a su destino al que nadie presta atención. Atraviesa la cocina  y sube los escalones que dividen la casa entre la planta en la que Javier y sus compañeros de equipo descansan y comen de la planta donde trabajan. El clac, clac, clac de un teclado mecánico le devuelve a Javier a la realidad del trabajo, y le produce una sonrisa.

– Diego, ¿Cómo fue la revisión de lo que entregamos ayer por la tarde a Banco Palomo? ¿Tenemos ya algún comentario de Daniel, nuestro querido Product Owner? – Pregunta tirando  una pelota de malabares que había encima de una de las mesas a  Diego, un miembro del equipo que estaba revisando el tablero Kanban del proyecto.

– De momento no, hay que dejarles que respiren. La entrega de ayer por la mañana les encantó como bien nos dijeron. Un par de días más y creo que ya tendrán el producto que esperaban. Bueno el que ni siquiera se esperaban. – Responde Diego cogiendo la pelota al vuelo, para sorpresa de Javier.

Diego tiene un poco más de edad que Javier pero, al contrario que él, aún no se le asoma ninguna cana.  Es especialista en sistemas web y entre él y Raúl han desarrollado casi todos los interfaces de usuario del sistema Peer Loans, que permite al banco que sus clientes elijan a quién prestar el dinero de sus depósitos.

– ¿Sabemos algo de Héctor? Desde que cogió el avión a Tailandia con su novia Malai no hemos recibido ninguna de sus fotos empalagosas de parejita feliz. – Pregunta Raúl sin mover la cara del monitor de 32 pulgadas en el que va añadiendo pruebas automatizadas para empezar a desarrollar uno de los últimos módulos de Peer Loans. –  Eso me recuerda que tenemos que revisar a los últimos candidatos para reemplazarlo. –

Raúl es un chico de 33 años, experto en lenguajes web y siempre viste con camisetas de Dragon Ball. Lleva en el equipo 3 años y siempre le acompaña su mujer y sus dos hijas allí donde vayan a trabajar.

– A mi me gustaba Jesús, le da a los dos palos de back y front con la suficiente soltura como la que necesitamos. Además es un miembro respetado del Meetup Full Stack Dev Alicante. – Dice Eva acercandose al monitor de Raúl  – Podemos hacerle una visita o quedar en algún bar para hablar con él. Si le gusta el sueldo que le ofrecemos, que seguro que lo hará, estará con nosotros en un par de días. –

Eva es la chica  de QA, de casi 40 años, y en los últimos años ha hecho un gran trabajo inculcando conocimientos sobre casuísticas de tests a los miembros del equipo. Tiene facilidad de palabra y habla muchos idiomas, lo que le permite estar en comunicación constante con los clientes para prevenir todos los escenarios posibles.

– Raúl, no te olvides del buffer overrun en el tratamiento de este campo –  Le dice Eva a Raúl acercándose a su hombro – Por cierto, buen trabajo con estos escenarios. – Una sonrisa de satisfacción casi imperceptible asoma en el rostro de Raúl mientras ejecuta los tests. Una columna de puntos rojos de tests fallidos le indican que es momento de empezar a trabajar en ese trozo de código.

–  No olvidemos que en un par de semanas tendremos nuevo proyecto. A este le quedan sólo un par de coletadas.-  Recuerda Javier desde su puesto de trabajo abriendo la página de la tecnológica Dell y buscando un servidor nuevo para su sistema de integración continua- ¿Habéis revisado últimamente la lista de posibles proyectos? –

Diego se acerca jugueteando con la pelota de malabares a su puesto. Pulsando un botón de su portátil pone en iluminacion su gran monitor así como los leds de su teclado y ratón. Sin sentarse coge el ratón y abre la lista de proyectos que los clientes de HGY les ha enviado. Su éxito con la nueva herramienta de Banco Palomo ha hecho que sean uno de los equipos más solicitados de toda la consultora y prácticamente de toda Europa.  Los honorarios que ellos mismos solicitan son altos pero hay muchos clientes a los que no le importa gastar un poco más para tener a estos chicos a su disposición.

– Ja, ja, ja. ¿A que no adivinais quién nos pide volver a trabajar con ellos? – Suelta Diego riéndose con las manos detrás de la nuca.

Eva y Javier se acercan a su monitor y se unen a Diego en las risas.

– ¿Podemos reirnos todos? – Suelta socarronamente Raúl sin levantar la mirada del monitor y sin dejar de teclear.

Eva, apoyada en la espalda de Diego, se vuelve a Raúl y le dice con una gran sonrisa – Nuestro «amigo» Financial Bureau quiere que le hagamos el sistema de banca con Realidad Aumentada igual al que le hicimos a Banco Marsella. –

–  ¡ Ni de coña ! – Suelta tajantemente Raúl mientras vuelve a ejecutar la lista de tests.  Ahora una columna de puntos verdes remplaza a los rojos, indicando que su cambio ha funcionado a la perfección. Aprovecha para girarse y mirar al resto del equipo. – ¿Os acordáis de lo impertinente que fue el CIO? Nos obligaba a trabajar a través de su entorno virtual. Como si nuestro entorno de red cifrada no fuera menos seguro que el suyo.  Quiere velocidad y calidad y nos da un martillo y un cincel para escribir código.  ¿Hay algun proyecto en Tailandia?  –

– Tú lo que quieres es intentar que Héctor vuelva con nosotros. Si encontramos una oficina cerca de donde van a montar la Startup estarías visitándole a todas horas. – Le dice Eva mirando la lista de posibles clientes.

– No. Es que allí tiene la oficina central Jurgen Fowler, el experto en EcmaScript 11, y que lideró su definición. – Responde Raúl, con media sonrisa –  He estado en comunicación con él últimamente y creo que nos puede preparar un curso intensivo al menos unos días si estamos por allí. El precio que pone es asequible y algunos lo necesitáis bastante… –

– Venga, me apetece empezar a codificar ya. ¿Qué os parece que hagamos una ronda de 3 pomodoros? – Sugiere Diego dirigiéndose a su silla. Esta idea hace que Javier y Eva también vayan corriendo a sus sillas y Raúl haga crujir sus dedos preparándose para una sesión intensa. – Pongo el crono de 25 minutos en marcha.  Empezamos en  3,2,1… –

El sol ya está iluminando con fuerza la arena y los primeros bañistas entran en las aguas de la playa Muchavista. Javier y su equipo están ya concentrados trabajando el resto día para terminar lo poco que le queda de su asignación actual. En un par de semanas, en la fachada de la casa colgará un cartel de «Se alquila». El equipo se habrá desplazado a un lugar algo más montañoso, por sugerencia de Eva. Sólo ellos mismos saben cual será el siguiente proyecto y lugar en el que trabajen. Son dueños de su propio destino.

FIN

Esta historia, que es naturalmente una historia de ficción, representa una imagen que a día de hoy parece imposible de conseguir en equipos que trabajan para consultoras. Hemos visto algunos ejemplos de decisiones en manos en un equipo totalmente autogestionado, aunque puede haber más. Estos equipos:

  • Deciden quién entra y quién se va de su equipo
  • Deciden su sueldo
  • Deciden su proyecto
  • Deciden dónde trabajan fisicamente
  • Deciden sus herramientas
  • Deciden su formación
  • Deciden cuándo toman vacaciones

Cuando un equipo llega a estos niveles de autonomía, logran una gran motivación y eficacia, lo cual les convierte en un equipo de alto rendimiento y para los clientes se traduce en productos de gran calidad e innovación. Sin embargo para llegar a estos niveles hace falta que tanto los miembros de los equipos como los directivos de las organizaciones tengan como meta conjunta esa autogestión. Los directivos y cargos intermedios tienen que aprender a delegar aunque suponga que al principio cometerán errores. Pero también cada miembro del equipo debe responsabilizarse del poder que se le da y saber dar el paso adelante para tomar esas decisiones. Aunque no lo parezca, tan difícil es lo uno como lo otro. Pero ¿quién sabe?, la ciencia ficción a veces se convierte en realidad. Todo camino empieza por un primer paso ¿Qué tal si empezamos por que los miembros de tu equipo puedan  autoasigarse las tareas?

 

 

Día 1 en la Conferencia Agile Spain 2017 en Sevilla

Keynote de Ramón Cabezas.  @RamonCabezas
Human & Digital Transformation
Ahdalid.com Kaps.es

Estuvo hablando de la transformación digital y la importancia de tener al cliente en el centro.  Enseñó un par de sus productos que se diseñaron teniendo eso en cuenta. como un pulsador para que te llame alguien para gestionar un accidente y el usuario no tenga que buscar los papeles del seguro o a quién llamar.

 

Jerónimo Palacios.  @giropa832
Scrum Studio

Habló de Scrum Studio, un framework diseñado por Scrum.org. Es una célula de trabajo totalmente independiente de la empresa y con los elementos imprescindibles para que pueda trabajar de forma autonoma y ágil. Va tomando proyectos poco a poco de la empresa madre y haciéndolos de forma ágil. Tiene la autoridad para  tomar y echar gente de sus equipos. La idea es que vaya fagocitando poco a poco al resto.

Tanto es su potencia que puede ocurrir el caso que le ocurrió en la que el CEO de la empresa acabó terminando la célula ágil.

Frase: Culture eats Agile. Al final, las personas de poder que no quieren perder su autoridad acaban por destruir los intentos de implantación de cualquier sistema ágil a escala.

El CIO  se transforma para dar Leadership services, lo que necesita esa celular para funcionar como una empresa autónoma: RRHH, contable, …

Hay que cambiar la visión de proyectos (algo que cuesta dinero) a producto (algo que genera valor y dinero por ende a la empresa)

La gestión se hace mediante Evidence based management (Scrum.org).  Basado en el triángulo MEASURE, IMPROVE, DIAGNOSE.

Existe un Scrum Development Kit que miraré  bien 😉

 

Toño de la torre. @adelatorrefoss
Discusiones y decisiones: herramientas para la efectividad

Primero hizo un disclaimer que todo venía del libro de Gamestorming y retrospectivas. Habló de conceptos básicos del gamestorming como los juegos de apertura para generar ideas, de exploración para categorizarlos y formar ideas procesadas y juegos de cierre para acabar con una decisión. También estuvo explicando varias dinámicas de gamestorming para trabajo colaborativo .

 

Israel Alcazar.  @ialcazar
Equipos de alto rendimiento

Matriz de autoridad de Richard Hackman. Parecido a la matriz de delegación de Jurgen Appelo pero más alto nivel.

Auto-organización. El equipo decide la forma de trabajo
Auto-diseño. El equipo decide qué necesita miembros o ya no.
Auto-gobierno. El más alto nivel, como si fuera una cooperativa de socios

Alto-rendimiento es una suma de resultados satisfacción y motivación. Es importante tener objetivos claros, entorno seguro y  responsabilidad compartidas.

Habó de las 5 disfunciones del equipo, del libro de Patrick Lencini

Jerarquía es como comunicación padre-hijo como trata el Analisis transaccional. Tratando al trabajador como un padre que trata al hijo hace que el hijo se comporte como rebelde o apagado.  El equipo necesita autonomía y responsabilidad.  Lo cual se trabaja con una combinación de confianza, delegación y feedback. Un entorno de confianza es el que se debe conseguir como mínimo en las retrospectivas. Comentó que se encuentra con que en las primeras retrospectivas los miembros sólo «sueltan mierda» porque tienen muchos problemas acumulados que necesitan decir y las retrospectivas es la primera oportunidad.

Las herramienta de evaluacion de equipo deben ser usados por los propios equipos. Conflicos/Cohesion/Eficacia

La evolución se hace mediante una serie de pasos en espiral con varias iteraciones. No necesariamente en el mismo orden

  1.  Proposito
  2. Conexión (empatía).  Aportación como persona
  3. Acuerdos (Roles, Reuniones, Formas de trabajo)
  4. Seguridad a trabajar en las retrospectivas
  5. Autoconocimiento (capacidades)  funcional, llegar a identificar los Roles de Belbin (explorador, investigador, coordinador..)
  6. Consciencia
  7. Autonomía
  8. Responsabilidad

Jose Ramón Díaz. @joserra_diaz
Taller de Liderazgo para la transformación. 

Empezamos haciendo una definición de liderazgo entre todos. Salieron conceptos como capacidad/habilidad, conocimiento referente, personas, sigues, empatizas, objetivo/visión, moviliza gente, forma consciente/inconsciente

Cuando una persona tiene autoridad se la da poder, principalmente para que aporte una dirección, de orden y protección. En sociedades democráticas está asignación ocurre de abajo a arriba y en empresas normalmente de arriba a abajo.

Cuando es autoridad formal se asigna a una persona por parte de la dirección. Cuando es autoridad informal ocurre a través de la confianza.  Cuando son distintas las personas que tienen ambas ocurren los conflictos.

Después idenficamos las características de un buen seguidor. Identificamos características como  empatía, ser crítico, autonomía, fidelidad .., Después se nos pidió identificar cuales de esas características no corresponde con las de un buen lider, descubriendo por nosotros mismos que no las había. Son las mismas características.

¿Para qué necesitamos un lider?

Hay ciertos problemas que requieren conocimiento técnico como puede ser lo que ocurre cuando un médico de urgencias pide y ejecuta todo lo necesario ante un paciente que llega con una parada cardíaca. También hay problemas de tipo adaptativo que tienen que ver con el trato a personas y gestión de conflictos y que requieren un líder con valores.

Definición Liderazgo: Process of mobilizing groups to engage its challenges developing its skills for their progress and well-being.

Las conversaciones normalmente tienen un umbral de conflicto (con su nivel máximo y mínimo) que representa la zona de aprendizaje. Es importante para el líder hacer que los conflictos se mantengan en esta zona, sin que esté por debajo y no permita aprender o por encima y el conflicto tenga consecuencias negativas.

Un reto conlleva a tomar acciones lo que lleva a estar en la zona de conflicto.  ¿Cómo se sabe que está en la zona correcta?  El líder va girando entre  Observar, Interpretar y Actuar. Debe proteger el liderazgo que surge en estas conversaciones para no parar el proceso en si mismo y el propio liderazgo expontaneo.

Terminamos definiendo acciones para un reto elegido entre todos e identificando si las acciones requirieren de un líder más técnico , si requiere autoridad por parte de la compañía o un líder con valores.

 

Marta San Martín. @MartaSanMartin
Introducción al coaching. Cómo tener conversaciones diferentes

Marta nos enseño la técnica del Mirroring en la que se escucha a la persona que tiene un problema sin darle soluciones ya que normalmente esa persona tiene todo el conocimiento necesario. Hay que hacerle preguntas abiertas tipo «¿Cómo’, ¿Cuándo?, ¿Quién?, ¿Dónde?. La pregunta de «¿Por qué ?» no es recomendada porque normalmente crea en la persona que explica el problema una justificación que puede crearle incomodidad. Una cosa que sí se puede hacer es interrumpirse y refrescar para hacerle ver que se está escuchando con atención.

Hicimos el ejercicio de Mirroring en parejas, al final de cual explicábamos el uno al otro cómo nos sentíamos tanto el que explicaba el problema como la persona que hace de coach. Entre uno y otro hicimos un ejercicio de mindfuldness aprovechando que Marta es certificada y experta en el tema.

 

Keynote de Marta Pinillos. @pinillos_marta
La voz, la clave del éxito en tu comunicación

En este divertido e increíble keynote de despedida, Marta explicó la importancia de la comunicación ya que es el más usado. Realmente la comunicación cara a cara es un valor ágil por lo tanto hay que darle importancia a la voz para transmitir correctamente los mensajes.

  • Ritmo: el ritmo correcto debe ser entre 130 a 150 palabras por minuto. Si es menos el emisferio derecho que el que procesa de forma rápida se queda «dormido».
  • Volumen. Hay que manejar el volumen, bajando en las partes importantes más que subirlo para no parecer una verdulera.
  • Tonos: Hay que tener 5 tonos de voz distintos y saber manejarlos.
  • Modulación. Manejar la modulación haciendo cambios de riemo. No debe haber un ritmo constante para mantener la atención.
  • Dicción. Saber marcas las consonantes en las palabras importantes
  • Pausas. Hacer 4 ó 5 pausas ¿por minuto?
  • Entonacion. Saber marcar las palabras
  • Respiración. Tener una respiración diafragmatica y un tono no agudo porque aporta seguridad y credibilidad.

Con esto terminó el primer día. Muchas cosas descubiertas y a tener en cuenta.

SPIKES de investigación para reducir incertidumbre y estimar mejor con Scrum

En los equipos que se usa Scrum, es normal enfrentarse con integraciones con otros sistemas (PlugIns, servicios, SDKs,..)  de los cuales no se tiene suficiente conocimiento para poder estimar con precisión cuánto se va a tardar. Planificar una historia de usuario que incluya esta integración puede hacer variar el total de puntos realizados al final del Sprint, según haya sido más fácil o más difícil esa integración.

Para resolver esa incertidumbre, lo que hacen algunos equipos es añadir un SPIKE al Sprint previo a la propia historia de usuario. Un SPIKE no tiene puntos de historia asignados sino un deadline de término. Una vez resuelto el SPIKE y sabiendo cómo se hace esa integración, se puede estimar en el siguiente Sprint de manera más precisa.

Sin embargo, a esta aproximación le veo dos problemas y es la razón por la cual no suelo usarla.

  1. Al planificar un Sprint en el cual hay SPIKES sin puntos asignados, no se puede equiparar el numero de puntos del Sprint anterior (o la media de los últimos) . Ese SPIKE puede ocupar una parte significativa del propio Sprint y al final se completarán más o menos  puntos de historia según ese SPIKE acabe siendo más o menos costoso.  Por lo tanto, creando un SPIKE previo sólo estás retrasando la incertidumbre de la integración al Sprint anterior del que se desarrolla la propia historia de usuario que  usaría ese componente.
  2. Para resolver la investigación y desenmascarar todos los posibles problemas, normalmente se necesita trabajarlo tanto que su inclusión en una historia de usuario es casi directo. Por lo tanto personalmente prefiero que todo este trabajo que se ha hecho se vea reflejado en una historia de usuario, aunque sea sencilla, y permita el feedback del usuario/Product Owner al término del propio sprint sin tener que esperar uno más.

¿Qué opinas? ¿Usais SPIKES de investigación previa?

 

 

Eficacia vs Eficiencia en Scrum

Llevo tiempo dandole vueltas

Ultima mente creo que estoy dando el mensaje incorrecto sobre Agile, que no persigue la eficiencia ya que waterfall es mas eficiente. Todo esto surge de una de las lineas que vi como propuesta del Manifiesto Lean Kanban. No hay sistema teoricamente más eficiente que el waterfall. Cada fase está realizada por un equipo especialista que, sin cambio de contexto, pasa todo su trabajo de una a la fase siguiente. Sin embargo waterfall falla en cuando hay cambios a mitad de proyecto, o cuando hay alguien que no hace perfectamente su trabajo. Cosas que ocurren el 100% de los proyectos. Sin embargo, un equipo que pasa de waterfall a scrum tiene sensación de perdida de eficiencia por las siguientes razones:

  • Reworking. Cada vez que se enseña el software al cliente existe la posibilidad de que toque rehacer algo. Implica cambiar cosas que has hecho en un sprint en el sprint siguiente. También para que el software sea entregable al fin de sprint muchas veces hay que hacer trabajo extra para dejarlo listo.
  • Tener que integrar en cada sprint hace que se tenga que cambiar el contexto continuamente. Si desde el sprint 1 el equipo está peleando con integraciones, a primer momento parece no ser tan eficiente como estar solamente desarrollando. Sin embargo, esto convierte el gran problema de la integración final en una molestia desde el primer sprint.
  • Reuniones de Scrum : planning, daily, review y el refinement. A los equipos a los que se les tradicionalmente se les da una lista de tareas sin mayor explicación, les parece que son innecesarias todas estas reuniones… «Era más productivo cuando se me daba la lista de tareas».

Sin embargo, aunque no lo parezca Scrum hace que un equipo pueda llegar a ser mucho más productivo. Como indica el titulo del libro de Jeff Sutherland, se puede llegar a entregar el doble de valor en la mitad de tiempo que con metodologías tradicionales. Aunque esto no se consigue por la metra transición a Scrum y mucho menos en el primer sprint. Lo que sí que permite es el marco para que el equipo consiga gran eficiencia. ¿Cómo?

  • Promoviendo que no se haga más de lo solicitado («make the right think done»). No se debe escribir una sola linea de código que no tenga que ver con el objetivo de la historia de usuario y no se debe hacer una sola tarea o historia que no esté dentro del objetivo de sprint.
  • Protegiendo al equipo de las interrupciones. El equipo está expuesto a interrupciones para hacer burocracia, explicar o documentar su progreso y hacer cosas que no tienen que ver con su objetivo de sprint. El Scrum Master es responsable de proteger a los miembros del equipo.
  • Focalizando las reuniones. Cada reunión Scrum tiene su objetivo y su ventana temporal. Esto hace que las reuniones mismas sean más productivas y permite que durante el tiempo en la que el equipo no está reunido (work time) no tenga que cambiar de contexto por culpa de ellas. Hay que detectar y minimizar o eliminar las reuniones sin foco y que no aporten nada al equipo o producto.
  • Mejorando la comunicación del equipo, haciendo que estén mas coordinados y tengan menos esperas y colisiones entre ellos.
  • Acercando el feedback y testing al momento de desarrollo. Esto hace que la corrección tarde hasta 20 veces menos que si se hubiera hecho semanas después.
  • Permitiendo al equipo pensar de qué modo mejorar a si mismo. Al juntarse en las retrospectivas les permite analizar cómo eliminar los impedimentos y desperdicios (waste) para hacer más y más puntos de historia cada sprint.
  • Permitiendo hacer experimentos de mejora durante un sprint y evaluar si seguirlo o no. Un equipo puede probar algo que parece una locura durante un sprint y evaluar en la siguiente retrospectiva su resultado. De este modo es posible encontrar modos ingeniosos de mejorar la productividad sin poner en riesgo el proyecto.

La proxima vez que explique Scrum, no olvidaré en contar ambas facetas (efectividad y eficiencia). Efectivamente se prima la efectividad ante la eficiencia, pero hay que transmitir que se puede conseguir mucha más eficiencia con equipo Scrum que en equipos tradicionales.

 

 

La importancia del término «software funcionando»

Uno de los 12 principios ágiles dice claramente «El software funcionando es la medida principal de progreso».  Esto puede parecer muy claro cuando se están leyendo los principios de inicio a fin pero tiene aspectos que deben tenerse en cuenta.

¿Qué significa «software funcionando»? Seguramente haya tantas respuestas como ingenieros tecleando código. Una forma de llegar a un consenso de equipo sobre los criterios que lo forman es hacer entre todos la Definition of Done (DoD). Estos criterios pueden contener aspectos como mínimos de cobertura de test, de validación de código según reglas de Sonar u otro analizador, de tests manuales realizados por un QC, etc .. y no servir absolutamente para nada.

Hace poco en un proyecto subestimé la importancia de lo que significa «software funcionando». Me di cuenta de que debe contener todos los criterios que hagan del sofware que se está produciendo una herramienta real y completa. Con completa me refiero a que de nada  sirve probar historias de usuario ejecutadas sólamente con datos moqueados porque los servicios web (que posiblemente haga un tercero) no están listos, tampoco sirve que estas pruebas se ejecuten en un entorno que no tiene que ver con el entorno real en el que se va a vivir la aplicación… Si en el proyecto faltan integraciones, fases de deploy o cualquier otro paso posterior  estamos desarrollando en un sistema Waterfall por sprints, no estamos en un proyecto Agile.

Si no vamos realizando todas las fases imprescindibles (from concept to cash) de todas las historias de usuario completadas, estas no serán más que papel mojado y al terminar «nuestro trabajo» entraremos en un entorno de incertidumbre sin saber cuándo va a funcionar de verdad todo eso que hemos estado enseñando en los Sprint Reviews. El cliente seguramente ya no creerá en el proveedor cuando le muestre el progreso en historias completadas y perderá la confianza en eso que llamamos Agile.

Para evitar estos problemas, asegurate de tener el entorno real (o como el real) lo antes posible, asegurate de integrar todas las piezas conforme se va construyendo el software.  Si no lo consigues porque está fuera de tus dominios, al menos, ten claro que ha dejado de ser un proyecto Agile.