El CIO como promotor de las culturas Agile y DevOps
En este artículo vamos abordamos la importancia de que la figura del CIO promueva la implantación de las culturas Agile y DevOps...
¿Qué ocurre cuando queremos agilizar el departamento de IT en el que tenemos diferentes proyectos, servicios y proyectos? Te lo contamos en este artículo.
Aplicar una metodología ágil en IT es relativamente sencillo, por ejemplo, Scrum, Kanban, XP, o una combinación de todas ellas. Pero son propuestas pensadas para un proyecto o un único equipo; también podemos hablar de “escalar Scrum”, pero al fin y al cabo eso sólo consiste en dividir un backlog en partes para poder paralelizar el trabajo de más de un equipo… que siguen dentro del mismo proyecto.
Pero, ¿qué ocurre cuando queremos agilizar el departamento de IT? Es decir, ya no tenemos “un proyecto” (que puede ser pequeño, o en el que colaboran 5 ó 6 equipos de personas), sino múltiples proyectos, y además múltiples servicios: mantenimientos, evolutivos, correctivos, acuerdos de niveles de servicio que hay que cumplir para resolución de incidencias y problemas… y además de muchos clientes a la vez, cada uno con su contrato. Pero entre las ¿25, 30, 40, 60? personas del departamento de IT, tenemos que llevar todo ese montante de trabajo en paralelo, cumpliendo con las condiciones de todos los contratos y con todas las entregas de todos los proyectos.
Y claro, para eso, pensamos “si trabajamos de forma ágil a nivel departamental seguro que lo hacemos mejor”, y así es pero… ¿y eso cómo se hace? Pues consiguiendo poner en marcha los denominados “trenes de trabajo”, a lo que se llega si conseguimos dos cosas:
Veamos en detalle cómo conseguir estas dos cosas.
Resulta muy académico decir que “el departamento de TI tiene la labor de gestionar y entregar proyectos y servicios…”, pero no es tan simple en la vida real, al fin y al cabo, el trabajo de un departamento TI suele incluir:
Y otro largo, larguísimo etcétera que nos lleva a una conclusión: agilizar un departamento de IT no consiste simplemente en “escalar Scrum”, ni mucho menos: el reto consiste en orquestar todo este trabajo, y para eso la mejor idea (y no simplemente la mejor práctica) es escalar el uso de los tableros de trabajo.
Tenemos que preguntarnos de qué debemos preocuparnos y ocuparnos para gestionar todo el trabajo (al fin y al cabo, tareas para personas), y reflejarlo en un tablero para la operativa diaria:
Pues una vez que tenemos claras cuáles son todas estas dimensiones que debemos representar en un tablero de trabajo, se trata de preguntarnos “¿Por qué no lo aplicamos al departamento entero?” Es decir, representarlo en UN ÚNICO tablero, no en tableros separados; las herramientas de software para la gestión del trabajo como Jira, Redmine, TargetProcess, Asana, Monday… todas ellas permiten configurar tableros con todas estas dimensiones que hemos señalado. No se trata de construir un sólo “tablero enorme” con cientos de tarjetas moviéndose por el mismo viéndolas todas a la vez, eso se convertiría en una “sopa de tarjetas” y en un caos, pero precisamente estas herramientas tienen posibilidades de visualización del tipo:
Es decir, podemos responder a preguntas del tipo “¿Cuántas incidencias urgentes que haya que resolver en menos de 24h tenemos sin asignar a nadie del departamento IT, sean del contrato o proyecto que sean?”
Pues disponer de esta información para conseguir la respuesta al momento, utilizando tableros, es una de las dos cosas que necesitamos para escalar esta gestión ágil al nivel del departamento completo.
Nos falta igualar la duración de las iteraciones de todas las iniciativas que avanzan en paralelo.
Teniendo en mente que buscamos poder responder cuestiones de gestión a nivel departamento utilizando tableros (que pasa a ser “tablero” en singular, si consideramos como tal la unión de todos los tableros de todas las iniciativas que avanzan en paralelo), entonces es necesario que el ámbito temporal de todos ellos sea el mismo, veamos qué significa esto.
Supongamos que un proyecto (llamémosle “proyecto A”) trabaja en iteraciones de una semana, y otro proyecto en iteraciones de tres semanas (llamémosle “proyecto B”). Esto no es ni bueno ni malo, porque el roadmap de cada proyecto se habrá diseñado así atendiendo a lo más conveniente de cada contrato (de cada cliente). Vamos a suponer que las iteraciones empiezan los lunes en ambos casos (cada viernes termina una iteración en el proyecto A, y cada 3 viernes terminará una iteración del proyecto B).
Supongamos que un día cualquiera de trabajo en el departamento IT, por ejemplo, un miércoles, tenemos que decidir si una persona dedica su jornada al proyecto A, o al B. Y que el proyecto B tiene una tarea o una acción que es una dependencia con otra de este mismo proyecto B, y que por tanto la paraliza.
Podemos estar en la semana 1, la semana 2 o la semana 3 de la iteración larga del proyecto B, pero en todo caso en menos de dos días el proyecto A tiene una entrega de final de iteración (eso es seguro), así que es del todo probable que esta persona se ponga a trabajar en el proyecto A… cuando esto puede estar generando un gran desperdicio de tiempo en el proyecto B, que no resalta como algo importante porque puede que nos queden aún dos semanas y media de iteración. Pero es un retraso que tendrá un impacto fuerte que aún nos cuesta ver. Y si esto lo multiplicamos por 30 personas que trabajan en 6 u 8 proyectos a la vez… la cuestión es dolorosa y muy relevante.
Estas ineficiencias se repiten una y otra vez en departamentos de IT de todo tipo de empresas, y se solventa haciendo que todos los roadmaps de todas las iniciativas empiecen y terminen sus iteraciones al mismo tiempo.
En este caso, el proyecto A no tiene problema puesto que de partida cuenta con la iteración más corta, que es una semana. El roadmap del proyecto B mantendrá sus entregas cada 3 semanas (marcando esto como las releases sucesivas), pero también define iteraciones de una semana (siendo previsible que sólo una de cada 3 semanas genere una release o producto mínimo viable).
Haciéndolo así, el proyecto B se obliga a definir resultados parciales, conseguibles, cada semana, aunque estos resultados parciales no terminen como entregas a clientes. Pero son puntos de control que nos proponemos cumplir, al igual que lo son los del proyecto A.
El proyecto A se parece a un marco Scrum, pero el proyecto B no (porque no genera una entrega en cada iteración), lo cual no es ni bueno ni malo, sino que resulta necesario.
Si esta estrategia la aplicamos a todos los proyectos (y servicios) de todo el departamento, tendremos un ritmo de trabajo a nivel de conjunto que paraleliza el avance de todas las iniciativas, con puntos de control en el tiempo constantes y estables a nivel de departamento, siendo más fácil decidir a qué iniciativa asignar un recurso o cuál puede permitirse un tiempo de espera, puesto que el momento de control de todas ellas se sitúa en el mismo punto.
Por eso, aplicar el enfoque ágil a escala departamental no consiste en “escalar Scrum”, eso es sólo una solución para ejecutar un proyecto más o menos grande.
Si unimos la idea de un tablero conjunto, e iteraciones de la misma duración… pensemos que cada proyecto o servicio es un carril de una carretera; y que el final de las iteraciones son los puntos kilométricos, todos a la misma distancia; además queremos tardar lo mismo entre uno y el siguiente, es decir, buscamos iteraciones de una semana en todos ellos como decíamos en el punto anterior, porque así podemos ser predecibles: sabemos que cada corto período de tiempo vamos a tener resultados, pocos o muchos, pero vamos a tenerlos, y en todas las iniciativas a la vez (si asignamos personas en todas ellas).
Pues bien, esto es lo que denominamos un “tren de trabajo”: un conjunto de personas que se dedican a diferentes iniciativas, tratándolas todas al mismo tiempo en periodos de tiempo (iteraciones) iguales en todas ellas; es como si el departamento fuera una orquesta completa, cada proyecto un instrumento diferente, pero todos ellos tocan al mismo compás (o la música no suena bien). Y el tablero conjunto es lo que ve el director de orquesta…
Y esta idea escala fácilmente a departamentos IT de gran tamaño: un tren de trabajo de 40 ó 50 personas, puede crecer e incorporar nuevos contratos (nuevos roadmaps de trabajo) siempre y cuando sus iteraciones sean de la misma duración, e incorporemos sus tableros de trabajo (con retrasos, estimaciones, asignaciones de trabajo, etc.) al conjunto para tener esa visualización a nivel global siempre que la necesitemos.
Tanto es así, que marcos de escalado ágil como SAFe propone ya una serie de trenes de trabajo por defecto con nombres y funciones concretas, roles para su organización y gestión, propuestas para orientar en el crecimiento hacia este modelo… porque estamos hablando incluso de agilizar una empresa entera: si podemos montar trenes de trabajo para IT, ¿por qué no incorporar más trenes de trabajo para la labor de negocio, de marketing, de innovación…?
En próximos artículos profundizaremos en este camino de agilización corporativa en el contexto de transformación digital.
También te puede interesar
En este artículo vamos abordamos la importancia de que la figura del CIO promueva la implantación de las culturas Agile y DevOps...
En este artículo descubrirás los motivos por los que es realmente interesante y positivo aplicar un enfoque ágil en la comunicación de...