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.
- Diario: cómo Javier Garzás evita quedarse obsoleto estudiando a un X10 con IA-Esteroides - 7 noviembre, 2024
- Si creas Historias de Usuario con IA ¿A quién pertenecen? ¿A ti o la IA? El mono Naruto te lo explica - 31 octubre, 2024
- HistorIAs de usuario y como a Maximiliano lo ENGAÑABAN con la IA y como una viejuna historia del 1500 le salvó - 24 octubre, 2024
Gracias por el post, Javier. Yo en este caso siempre me hago la misma pregunta, que no veo claro…
¿Cómo casa Scrum, que propugna la generación de incrementos de valor de un producto al final de cada sprint, con DevOps, que promueve el despliegue continuo de nuevas características? ¿Existen los sprints en DevOps o cada historia de usuario tiene su ciclo de vida que acaba en producción independientemente de la existencia de los sprints?
Un saludo.
Yo lo veo así:
– Scrum, cada sprint termina con un producto potencialmente entregable o incremento (no habla de pasos a producción o similares)
– DevOps, romper barreras desarrollo – producción. No habla de sprints, etc., eso queda en Scrum.
– Entrega continua, el “continuous delivery”, que no implica necesariamente que tengas que hacer muchos pasos a producción. “Continuous Delivery” no es “Continuous Deployment”. El “continuous delivery” pretende que podamos poner en producción cuando queramos, rápidamente, que cuando decidamos pasar a producción sea en poco tiempo.
Hola Javier,
¿DevOps facilitaría tanto «Continuous Delivery» como «Continuous Deployment»? Entiendo que tanto la entrega como el despliegue continuo serían muy difíciles de conseguir o implementar de forma exitosa sin aplicar DevOps.
Sí, van de la mano
dejame ver si entiendo, en un DevOp es: un programador que sabe como poner su sistema en producción?
Realmente es romper el muro desarrollo – producción, esa puede ser una manera de hacerlo. Y simplificar los pasos ayuda
Continúo con la duda sobre DevOps. Está claro que es desarrollo y procesos, cómo los integro para obtener resultados más «controlados”. Pero mucho se habla del tema como filosofía, métodos, prácticas y/o que la agilidad es un método de DevOps. Y también salta el tema de la integración continua que permita una buena aplicación de DevOps.
Podemos decir entonces, que DevOps es todo eso, adaptado de acuerdo a las necesidades de tus equipos?