martes, 26 de enero de 2016

100 días en Agile (IV)

La Adaptación
     Empezar a trabajar en Agile, como con todo nuevo modelo, requiere un tiempo de adaptación a los cambios que provoca. Aparte de los culturales, de la forma de trabajo, y del ritmo que exige, ya comentados, tenemos muchos cambios en los roles de Agile respecto a Waterfall, y no sólo en el nombre.

     Empecemos por el que me toca más de cerca el Product Owner. El principal cambio para el P.O. es que ahora está mucho más cerca de los equipos de desarrollo. Tenemos 2 tipos de P.O.:

  • El P.O. antes conocido como el Informático
  • El P.O. Usuario

     El primero en algún momento de su carrera profesional ha formado parte de equipos de desarrollo de software, en todos o en alguno de los roles. Y le encanta meterse al barro, diciendo al equipo Scrum que solución técnica debe construir. Por que claro, como buen informático que se precie de serlo tiene un máxima: el resto no tiene ni idea y mi solución siempre es la buena. Suele terminar "dialogando amistosamente" con el equipo Scrum, hasta que por fin se da cuenta que su responsabilidad es otra, definir el producto, y no cómo construir el producto.
    Otra adaptación que debe sufrir este P.O. exinformático, es que en el Backlog haya User Story que de verdad aporten valor al producto final, y no funcionalidades o requerimientos que se adapten a la solución técnica.

    El segundo es un P.O. que desde el mundo de los informáticos se ve como una persona que sabe encender el ordenador, mover el ratón, y manejar el Office (sobre todo el powerpoint), es decir, un USUARIO. En realidad, es una persona que ha estado siempre en departamentos de Negocio, y que sabe de eso, del negocio y las necesidades de la empresa. Este pobre se encontrará con el problema contrario. 
    De repente una serie de personas (freaks en su cabeza) empiezan a pronunciar palabras hasta ahora desconocidas para él: js, java script, properties, JCL, junction, servidor apache, json, COBOL, ... Su mayor reto será conseguir que los informáticos (que huelen el asombro) no le toreen, le lleven a su terreno, y termine como el anterior P.O. escribiendo en el Backlog funcionalidades y requerimientos en lugar de user story.  
     Además deberá conseguir explicar a los informáticos el producto que quiere entregar a su stakeholder, sin utilizar la jerga propia de los desarrolladores. Alguno ha decidido que le costaba menos aprender Klingon...

     Ambos tendrán también problemas comunes. Mantener el Backlog como ellos quieren sin que nadie "meta mano", evitar interferencias de terceros a todos los niveles, controlar las expectativas, el tener que estar negociando constantemente con todos: equipo scrum, stakeholder, terceros, Scrum Master, la señora de la limpieza para que no tire los post-it (este lo comparte con el SM)...
    Y sobre todo adaptarse al Poder. "Un gran poder conlleva una gran responsabilidad" (Tio Ben, Spiderman) El P.O. tarda en darse cuenta de la cantidad de "poder" que acumula su rol. La responsabilidad compartida, el cooperar para un objetivo común, y todo lo que ya he comentado en entradas anteriores, están muy bien y realmente son necesarias. 
     La realidad es que sobre los hombros de P.O. está la mayor responsabilidad del éxito o fracaso de un proyecto en Agile, debido a la gran cantidad de decisiones que debe tomar el P.O. y que afectan a todos los aspectos del producto. Desde la negociación con los stakeholder para ver la prioridad de sus necesidades, hasta la exigencia o laxitud en el contenido de los sprint, pasando por el refinamiento de las epics y user story. Todo, excepto la construcción, gira en torno a las decisiones que tome el P.O. Y eso algo para lo que no todo el mundo está preparado, o acostumbrado.

     Para los Desarrolladores, aparte de la autogestión, el mayor cambio son los tiempos. Ahora tienen que hacer todo lo que antes podían "ir haciendo" en un Sprint de 2 semanas. Bueno, y que el Usuario ese que viene todos los días se entere de algo.

     Y por último el Scrum Master. Reconozco que aún no me queda muy claro el peso del SM en los proyectos Agile. Y ese es precisamente su mayor reto, que ellos tampoco lo tienen claro.
     La mayoría viene de ser Jefe de Proyecto en Waterfall, que más o menos todos sabemos de que va. Ahora se le pide que sea un Facilitador:
Un facilitador es la persona que ayuda a un grupo a entender los objetivos comunes y contribuye a crear un plan para alcanzarlos sin tomar partido, utilizando herramientas que permitan al grupo alcanzar un consenso en los desacuerdos preexistentes o que surjan en el transcurso del mismo.
     "Sin tomar partido"... "Alcanzar un consenso"... Claro, y un unicornio rosa... Dile a un Jefe de Proyecto que no puede organizar el trabajo del equipo, pedir tiempos, que en realidad no tiene capacidad de decisión, etc, etc, etc. Sinceramente es el rol que tiene una adaptación más dura, ya que pierde protagonismo. A veces parece que si el SM desaparece, nadie se va a dar cuenta hasta que pasen los días y huela a muerto.

jueves, 21 de enero de 2016

100 días en Agile (III)

El Tablero
     ¿Para qué leches quiero yo un tablero lleno de post-it? Esto fue lo primero que pensamos en el equipo, y como somos unos kamikaze empezamos sin tablero. Total ya teníamos JIRA, como excusa nos venía al pelo, cuando lo cierto es que nos daba algo de vergüenza saber que íbamos a estar de paseos con el tablero de un lado a otro.
     El primer día que el Product Owner (o sea yo) se empeñó en montar el tablero, y empezar a usarlo, nos dimos cuenta de la potencia del mismo. Y el primer comentario fue: "Madre de dios, nos hemos pasado planificando". Nuestra columna de "To Do" estaba cubierta de arriba a abajo de post-it con tareas técnicas, y ya llevábamos medio Sprint consumido.

    Es cierto que las herramientas como JIRA ayudan a tener controlado todo el proyecto, poder ir haciendo seguimiento de los cambios, generar un Burn Down del Sprint, sacar algún informe o gráfico, pero no tiene la presencia visual del Tablero. Quizás no sepas de que va el proyecto, pero cualquiera se pone delante de un Tablero donde esté planificado el Sprint, y tienes claro la cantidad de trabajo pendiente, en curso, y realizado de un solo vistazo.
     Por medio de post-it más pequeños con los nombres de cada persona del equipo Scrum puedes saber quién está con cada tarea y se puede controlar, de una forma muy simple, cuantas tareas puede tener asignada una persona a la vez. Para realizar las Dayli es fundamental, en seguida se ve y actualiza el trabajo realizado cada día, lo que queda pendiente, si hay impedimentos que paren o bloqueen una tarea, y muchas más cosas que no fuimos conscientes hasta que empezamos a usarlo.
     Lo malo es que ahora los bandarras de nuestro equipo no me actualizan el estado en JIRA...
     Aparte de la visión del Sprint, se puede utilizar para tener información adicional a mano. En nuestro caso para las dependencias con terceros que aún tenemos pendientes, y acciones que hayan salido de la Retro, principalmente. También tenemos el DoR y el DoD, pero la verdad que no le hacemos ni caso a esos 2 post-it (voy a arder en la hoguera para sacrílegos de Agile por esta frase).
     Esta es una foto de nuestro tablero tras finalizar un Sprint del primer Program Increment:


     En uno de los Item Backlog tuvimos un montón de trabajo extra y se nos acumularon un poco. La teoría del equipo (con 1 voto en contra) es que el experto en Google Analitics cobra por post-it y ese Sprint comió caviar iraní todos los días.
     Por la parte la otra cara del Tablero tenemos el Product Backlog no planificado, y el Sprint Backlog previsto para cada Sprint tras la última Planificación de PI:


     Incluso los colores de los post-it tienen un significado:

  • Verde: Epics del Proyecto
  • Azul: User Story o Product Item Backlog. Llevan además el número de la Epic a la que pertecen (abajo izquieda) y la estimación (abajo derecha).
  • Fusia: US o PIB a refinar y dividir en otras más pequeñas.
  • Naranja: Dependencias con terceros que afectan a US de la Epic
  • Amarillas: Tareas técnicas de cada US o PIB.
     En resumen, el Tablero es una de las mejores herramientas para hacer Agile, que se  complementa perfectamente con aplicaciones de seguimiento y gestión.






lunes, 11 de enero de 2016

100 días en Agile (II)

Intensa y Exigente
     Decía, en la entrada anterior, que Agile es intensa y exigente. Llevo cerca de 3 años en este puesto de trabajo (sin Agile), y he participado en proyectos que se consideraban críticos y con una gran presión. Y sin embargo, nunca he necesitado estar al 100% para desarrollar mi trabajo y sacarlos adelante.
     En estos 100 días en Agile como Product Owner (PO), no he parado. Cada Sprint, es justamente eso, un sprint de 2 semanas. Comienzan los miércoles y finalizan los martes dos semanas después, y tienen:
  • Todos los días: Daily de 15m, a las 9:45h.
  • Cada 2-3 días: revisamos el Scrum Master (SM) y yo: impedimentos, dependencias que aún tenemos que resolver, información nueva o actualizada que tengamos referente al proyecto, y cambios que hayan surgido por el camino.
  • Cada 2 semanas los viernes: Comunidad de Product Owner, 1:30h.
  • Día 1: Planificación del Sprint, unas 2h de media.
  • Día 7: Refinamiento del Backlog, de 1:30h a 2:30h.
  • Día 14: Sprint Review, de 30m a 1h
  • Día 14: Retro del Sprint, de 1h a 1:30h.
     Además cada sesión hay que prepararla, si no es tiempo desaprovechado. 
     Cuando no hay una sesión planeada, como PO hay que ocupar el tiempo en averiguar que quieren y esperan los stakeholder (SH), entregar producto finalizado en cada Sprint y obtener feedback, recoger las nuevas necesidades de los SH, incluirlas en el Backlog priorizadas y explicadas, mantener actualizado JIRA (herramienta de seguimiento que utilizamos para proyectos Agile), perseguir al equipo Scrum para que lo actualice.
     Sesiones y charlas con los Coach: para aprender, para saber si estás aplicando bien Agile, para pedir apoyo, para el proceso de control de la ira, para que se enteren de verdad de que ocurre en esta "santa casa"...

     El equipo Scrum no va mucho mejor. Cierto es que estamos siendo optimistas en la planificación de los Sprints, y queremos hacer más de lo que realmente podemos, como consecuencia siempre van con la lengua fuera y justitos, justitos. Algún Sprint Review, vemos cosas que se han acabado una hora antes. 
    De todas formas, incluso planificando menos por Sprint, hay que hacer todo el trabajo que implica un desarrollo de software en 2 semanas: analizar, diseñar, codificar, probar, documentar, cambios de última hora, puesta en entornos de prueba y producción, cumplir con la metodología del banco, hablar con terceros, etc... Y tienen las mismas sesiones que yo durante el Sprint, cambiando la comunidad de PO, por la suya de desarrolladores o SMs.

    ¿Dan las 2 semanas para esto? Si, dar lo que se dice dar, dan. Pero lo cierto es, que no paramos. Yo sólo los viernes de 2 a 3, me permito el lujo de relajarme y monear.

    Agile exige mucho de ti, del equipo, de todo el que de una forma u otra esté involucrado. Si alguien baja la guardia o el ritmo, el Sprint se resiente, a corto-medio plazo lo hará también la cantidad de producto entregado, y por lo tanto no se cumplirán los compromisos adquiridos con los SH.
    Como recompensa esa intensidad, exigencia y compromiso, entregamos producto viable y funcionando cada 2 semanas. A veces gusta más, a veces menos, a veces la DEMO falla, pero hace que siempre tengas sensación de avance.

    Personalmente me encanta y da esperanzas, y estoy viendo que lo mejor de las personas y los equipos sale cuando hay intensidad, cuando hay exigencia, y van unidos a la cooperación y la confianza. Y es Agile quién está provocando que se trabaje de esa forma.
    También entiendo que ahora mismo estamos en pleno aprendizaje, y según vayamos cogiendo experiencia, todo irá más rápido y fluido.
    Y bueno, si hay algo que me asusta un poco. Tengo la sensación de estar aplicando algo menos del 50% de Agile. Cuando lo hagamos al 100%, va a ser mucho más divertido, y, espero, un reto mayor...