Personas y cultura

DevOps es un enfoque ágil para el cambio organizacional que busca salvar las divisiones tradicionales y aisladas entre equipos y establecer nuevos procesos que faciliten una mayor colaboración. Como hemos mencionado, DevOps es posible gracias a nuevas herramientas y prácticas ágiles de ingeniería, pero estas no son suficientes para obtener los beneficios de DevOps.

Sin la mentalidad y la cultura adecuada, no se podrán obtener los resultados que DevOps promete.

La cultura, más que nada, solo se construye a través de las personas.

Cultura DevOps

Hablemos un poco sobre la cultura de DevOps.

De manera resumida, una cultura DevOps implica:

  • Colaboración más estrecha y responsabilidad compartida entre desarrollo y operaciones. Esto ayuda a las empresas a alinear a las personas, procesos y herramientas hacia un enfoque más unificado; un mismo objetivo de negocio.
  • Cultivar equipos multidisciplinarios que asuman la responsabilidad de todo el ciclo de vida de un producto.
  • Permitir que los equipos trabajen con autonomía. Evadiendo a toda costa actividades y procesos burocráticos.

Nota de interés: La comprensión de que los desarrolladores que lo construyen también lo ejecutan acerca a los desarrolladores al usuario, con una mayor comprensión de los requisitos y necesidades del usuario. Con equipos de operaciones más involucrados en el proceso de desarrollo, pueden agregar requisitos de mantenimiento y necesidades del cliente para un mejor producto.

Características

Ampliando lo anteriormente descrito sobre las implicaciones de una cultura DevOps, en el corazón de la cultura se encuentra una mayor transparencia, comunicación y colaboración entre equipos que tradicionalmente trabajaban de manera asilada (en silos).

De igual manera, podemos ampliar en lo que caracteriza a una cultura DevOps:

  • Existe un cambio de cultura organizacional que enfatiza el aprendizaje continuo y la mejora continua, especialmente a través de la autonomía del equipo, retroalimentación rápida, alta empatía y confianza, y colaboración entre equipos.

  • Tanto el personal de desarrollo como el de operaciones deben ser responsables del éxito o el fracaso de un producto.

    Se espera que los desarrolladores hagan más que solo construir y pasar a operaciones: se espera que compartan la responsabilidad de supervisar un producto durante todo el curso de su vida útil, adoptando una mentalidad de “usted lo construye, usted lo ejecuta”. Prueban y operan el software y colaboran más con el control de calidad y las operaciones de TI.

    Cuando entienden los desafíos que enfrentan las operaciones, es más probable que simplifiquen el despliegue y el mantenimiento. Del mismo modo, cuando las operaciones comprenden los objetivos comerciales del sistema, pueden trabajar con los desarrolladores para ayudar a definir las necesidades operativas de un sistema y adoptar herramientas de automatización.

  • Los equipos autónomos son otro aspecto importante de DevOps. Para que los equipos de desarrollo y operaciones colaboren de manera efectiva, deben tomar decisiones e implementar cambios sin un proceso de aprobación largo y engorroso. Esto implica entregar confianza a los equipos y establecer un entorno en el que no haya miedo al fracaso. Estos equipos deben contar con los procesos y las herramientas adecuados para tomar decisiones de forma más rápida y sencilla, para cada nivel de riesgo para el cliente.

  • La retroalimentación rápida que puede ayudar con la mejora continua de un equipo unificado de desarrollo y operaciones. DevOps garantiza que los desarrolladores obtengan los comentarios rápidos que necesitan para iterar y mejorar rápidamente el código de la aplicación al requerir la colaboración entre la gente de operaciones en el diseño e implementación de estrategias de informes y monitoreo de aplicaciones.

  • La automatización es esencial para la cultura DevOps, ya que permite una gran colaboración y libera recursos. Automatizar e integrar los procesos entre el desarrollo de software y los equipos de TI les ayuda a crear, probar y lanzar software de manera más rápida y confiable.

Beneficios

El beneficio más obvio e impactante de adoptar una cultura DevOps son los despliegues de software optimizados, frecuentes y de alta calidad. Esto no solo aumenta el rendimiento del negocio, sino también la satisfacción de los colaboradores.

Una cultura DevOps fomenta altos niveles de confianza y colaboración, y esto da como resultado una toma de decisiones de mayor calidad e incluso niveles más altos de satisfacción laboral, según el libro [Accelerate: Building and Scaling High Performance Technology Organizations].

En resumen, podemos destacar:

  • Despliegues optimizados, frecuentes y de alta calidad
  • Mejor rendimiento del negocio
  • Mayor satisfacción de los colaboradores
  • Altos índices de confianza y colaboración

Retos

  • Aceptación de la gerencia: Adoptar por completo una cultura DevOps generalmente requiere que las personas y los equipos realicen cambios significativos en la forma en que trabajan y, por lo tanto, requiere la aceptación en los niveles más altos de la organización.

    El argumento más convincente a favor de una adopción más amplia de DevOps es cuando unas pocas personas o pequeños equipos adoptan un enfoque de DevOps y comienzan a demostrar el éxito.

  • Aislamiento prologando entre equipos: Los altos niveles de autonomía y confianza que son típicos en una cultura DevOps pueden ser difíciles de cultivar si existe un historial de conflicto entre cualquiera de los individuos o equipos involucrados. Cuanto más aislados estuvieran los equipos antes de intentar adoptar un enfoque DevOps, más difícil será construir conexiones.

    El cambio es difícil. Incluso en entornos donde existe un alto nivel de armonía entre las personas y los equipos existentes, si los beneficios del cambio no se articulan y comprenden claramente, puede ser difícil impulsar la aceptación y la voluntad de trabajar.

  • Enfoque en herramientas: Es comprensible que las organizaciones con una sólida mentalidad de ingeniería a menudo salten de inmediato a las herramientas y tecnologías para resolver los desafíos comerciales. Sí, existen herramientas y tecnologías que pueden ayudar a su organización a hacer la transición a un enfoque DevOps. Pero el cambio de herramientas y tecnologías sin cambiar la cultura solo cambia la fachada sin abordar la debilidad en la base.

Transición hacia una cultura DevOps

Como es el caso para cualquier tipo de cambio, siempre existe una resistencia natural. Estamos diseñados a sentirnos “seguros” en lo que es conocido e “incómodos” en lo desconocido. Pero, hay buenas noticias. Las transiciones no tienen por qué suceder de la noche a la mañana, y sobre todo un cambio como lo representa DevOps, ciertamente tomará tiempo.

En este curso no expandiremos en cómo hacer la transición, pero sí destacaremos algunos puntos importantes que se deben tomar en cuanta si se quiere hacer, solo para conocimiento general.

Comunicación abierta

Lo primero a tomar en cuenta es que se necesita comunicación abierta. Entre otras cosas, esto implica:

  • Unificar las bases de conocimiento. Lo que sabe un administrador de sistemas debe ser accesible para un desarrollador, y viceversa, tomando en cuenta las políticas de autorización y privacidad. No deben existir barreras o limitantes sobre lo que se debe saber o comunicar.
  • Unificar los medios de comunicación. Todo el equipo asociado a un producto, sin distinción de área, debe poder comunicarse en un mismo canal. Pueden existir separaciones por contexto, lo importante es dar suficiente visibilidad y transparencia.

Permitir cometer errores

Muchas organizaciones, equipos e individuos ejercen una presión extraordinaria sobre sí mismos y entre sí para nunca cometer errores. Si el fracaso no es una opción, es menos probable que un individuo o equipo intente un enfoque novedoso para resolver un problema o desarrollar características innovadoras.

Una “retrospectiva sin culpa” es una característica común en la cultura DevOps. Los resultados se pueden mejorar cuando un equipo se reúne al final de un sprint o proyecto para discutir qué salió bien y qué podría mejorarse, en un entorno abierto y seguro.

Una visión intachable del fracaso funciona tan bien en parte porque adopta una mentalidad de crecimiento, reconociendo que los errores ocurren pero operando bajo el supuesto de que tanto las personas como las organizaciones son capaces de aprender, crecer y mejorar. “Effective DevOps” por Jennifer Davis y Katherine Daniels

Nuevos procesos

DevOps también significa implementar nuevos procesos. Desde nuevas formas para el manejo del control de versiones, el uso de integración y entrega continua, hasta aspectos técnicos más complejos como la observabilidad; existe todo un nuevo ecosistema que, si bien no todo aplica para cualquier organización, serán necesarios para las organizaciones que incursionen en DevOps.

En este mismo módulo ampliaremos sobre estos nuevos procesos en el tema “06 - Procesos y prácticas”.

Herramientas modernas y actualizadas

La mayoría de los equipos de desarrollo de software utilizan al menos algún tipo de control de versiones, seguimiento de problemas y herramientas de monitoreo de aplicaciones. Todas estas son herramientas importantes para respaldar una cultura DevOps, pero quizás la adición más importante al conjunto de herramientas tradicional es el software relacionado a CI/CD.

Tener un flujo de trabajo que recibe cambios, los prueba y los despliega de manera automática, es realmente la única forma de obtener la retroalimentación rápida que requiere una cultura DevOps.