Agilidad y #DevOps… ¿Son lo mismo? y ¿Qué es DevOps?
Como aquella vez que te contaba que ojo, que agilidad y lean no son exactamente lo mismo, aunque se parezcan mucho o en aquella otra de ¿Agilidad y Design Thinking? ¿Son lo mismo?, vamos con otra del estilo, que hoy tiene confundida a mucha gente, lo cual, además, es lógico, ya que, como suele suceder en nuestro mundo, hay pocas definiciones cerradas: Agilidad y DevOps… ¿Son lo mismo?
Y he de decir que me siento especialmente motivado para escribir este post, por la “paliza” de DevOps que este año se han pegado los guerreros y guerreras de 233 Grados de TI.
Aquí, en este tema de DevOps y Agilidad, te puedes encontrar de todo, quien piensa que haciendo DevOps ya somos ágiles, que no se puede ser ágil sin DevOps, que DevOps y Agilidad son sinónimos, que si no lo son, vamos, de todo, todas las combinaciones posibles.
Comencemos con lo que te digo siempre: no hay una definición cerrada y única de casi ningún término, por ello siempre habrá debate, como ya te conté en nadie sabe lo que significa agilidad. No obstante, me mojaré, como siempre, en base al, en mi opinión, conocimiento más extendido y sentido común.
Comencemos primero recordando qué es agilidad… si alguien lo sabe. En su momento ya te decía, en el post nadie sabe lo que significa agilidad, que hasta Jeff Sutherland (co-autor de Scrum y firmante del manifiesto ágil, y al que tuvimos la suerte de entrevistar en este blog) ya criticaba cómo la “falta de una definición sobre qué es agilidad es un problema”, es decir, que no hay definición única y cerrada.
Y otro padre de la Agilidad, Robert C. Martin (el tío Bob, al que también tuvimos la suerte de entrevistar en este blog), también firmante del manifiesto ágil, en un polémico post, afirmó que “agilidad es una cultura o unos valores”, pero siempre sobre la implementación de un conjunto de prácticas (reales e implantadas en tu proyecto). ¿Y qué prácticas son esas? Pues como decía el propio tío Bob, pueden ser las 13 de eXtremme Programming, o no, puede ser TDD, o no, etc., lo normal es que sean esas, pero puede que no, y si son otras deben ser prácticas cercanas a los principios del manifiesto ágil y sus principios.
Como paraguas final, o más bien inicial, de más alto nivel, bajo el que están los diferentes framewoks, catálogos de buenas prácticas, etc., considerados ágiles, tenemos el manifiesto ágil. Que por su “alto nivel” deja abierto muchos frameworks ágiles, desde Scrum a Xp, etc.
Vamos a DevOps. Te contaba en este post de 2013 que DevOps es Development + Operations, es decir, aquello tan anhelado de lograr la máxima colaboración e integración entre desarrollo software y operaciones (producción, explotación, o como cada uno tenga a bien llamarlo), romper el tradicional muro entre desarrollo y operaciones.
En otras palabras, DevOps se centra en la colaboración y la comunicación efectiva entre esos dos departamentos y, aunque en el acrónimo no venga explícitamente, esto implica, además, a Negocio y a Testing. Luego parecen un montón de técnicas y herramientas para lograr el DevOps y aquí hablamos de Dockers, Yamls, IaaS, Paas, etc.
Dicho esto, en mi opinión DevOps entra dentro, está más cerca, de las prácticas que hoy podemos considerar ágiles y que son una típica, no obligada, y no necesariamente suficiente, manera de decir que se es Ágil.
Al igual que hablamos en contextos ágiles de TDD, BDD, Integración continua… está DevOps, con la particularidad de que DevOps tiene un impacto mayor ya que involucra a más gente, más roles y, típicamente, hace uso de otras prácticas de las consideradas ágiles.
Pero, y vuelvo a tirar de la reflexión que hacía Robert C. Martin, al igual que hacer TDD no significa necesariamente ser ágil, y SERÍA MUY RARO, pero posible ser ágil sin TDD, lo mismo pasa con DevOps. De la misma manera que por tener Dockers, Yamls, IaaS, Paas, etc., no necesariamente somos DevOps.
Lo lógico es que un buen desarrollo ágil tire de estas prácticas, pero la agilidad es una estrategia, un conjunto de valores, a un nivel de abstracción mayor, y DevOps y otros son prácticas típicas para lograrlo, no necesariamente suficientes, ni necesariamente obligatorias.
UPDATE: Para los que leen los post en diagonal solo las líneas pares… NO, Agilidad y DevOps no son lo mismo.