Hace casi dos años escribimos acerca de como la pandemia afectaría al mercado laboral. El trabajo en remoto era una tendencia al alza y vimos como el confinamiento lo aceleró para terminar quedándose, principalmente en la industria tecnológica. El hecho que los equipos de trabajo estén distribuidos ha hecho también que las buenas prácticas en el desarrollo de software aparezcan cada vez más en los requerimientos de las posiciones de desarrollo de software. Además, la demanda de perfiles especialistas en DevOps ha aumentado: es más necesario que nunca tener la infraestructura necesaria para que equipos distribuidos puedan colaborar de forma eficiente en un mismo proyecto sin que eso afecte a la calidad o la mantenibilidad.
Viendo esta tendencia del mercado, empezamos a preparar a nuestros estudiantes para un mundo en el que el trabajo en remoto requeriría nuevas herramientas de trabajo y, sobretodo, una nueva mentalidad. Más adelante detallaremos como hemos introducido la mentalidad DevOps en nuestro Bootcamp de Programación.
Si te fijas, lo que tiene Víctor en su pantalla no es solo código. Está subiendo a producción su proyecto después que haya pasado todas las validaciones y todos los indicadores salgan en verde.
¿Qué es DevOps?
Si vemos la definición de Azure sobre el término vemos que: el término DevOps, que es una combinación de los términos ingleses development (desarrollo) y operations (operaciones). Los objetivos de DevOps abarcan todo el proceso de entrega de un producto y afectan a roles que antes trabajaban por separado (desarrollo, operaciones de TI, ingeniería de la calidad y seguridad). El objetivo es que se coordinen y colaboren para ofrecer productos mejores y más confiables:
- Mejora en la implementación
- Lanzamientos a producción más rápidos
- Baja tasa de errores en las nuevas versiones
- Tiempo de entrega más corto entre versiones
- Tiempo de despliegue más rápido
- Velocidad de reacción en caso de que una versión desplegada falle.
Al adoptar una cultura de DevOps junto con prácticas y herramientas de DevOps, los equipos adquieren la capacidad de responder mejor a las necesidades de los clientes, aumentar la confianza en las aplicaciones que crean y alcanzar los objetivos empresariales en menos tiempo.
Herramientas DevOps
Todos habremos oído palabras como Docker o Integración Continua (o CI/CD), relacionadas con el concepto DevOps, pero hay muchas más:
- Docker
- Kubernetes
- Jenkins
- Github / Control de versiones
- Pipelines / Actions
- AWS – Azure – Google Cloud
- Microservicios
Parece que la lista es inacabable y cada una es un mundo en ella misma pero, al final, cada una de ellas sirve a un propósito. Más allá de la tecnología en sí es importante entender la mentalidad y la nueva forma de trabajar que hay detrás de DevOps. En muchas empresas hay personas dedicadas a crear esta infraestructura, los llamados DevOps o Software Reliability Engineers (SRE). El resto de personas del equipo son “solo” quienes la usan… pero tienen que cambiar su mentalidad.
Cultura DevOps. ¿Cómo esto afecta a un programador?
A pesar de las palabras que hemos mencionado antes, son los conceptos y la mentalidad lo más importante. Un programador debe trabajar para que su código sea lo más iterable, escalable y mantenible, además de poder subir a producción de la forma más fiable y rápida posible.
Mentalidad DevOps en el bootcamp de programación
El 80% (o más) del tiempo de trabajo de un programador se realiza sobre una base de código que ya existe. Por eso, desde hace varios años, hemos trabajado mucho en aspectos estilísticos del código y en conseguir que adopten las mejores prácticas y convenciones del sector: el naming de las variables, la arquitectura del proyecto, la separación de las responsabilidades de los elementos del proyecto, etc. Para nosotros es muy importante que quienes pasan por nuestra escuela sepan ser jugadores de equipo y la forma como hacen código debe reflejarlo. No puede ser que alguien herede el código de un estudiante de nuestra escuela y diga “no entiendo por donde va”.
En las últimas ediciones de nuestros cursos de programación hemos incorporado herramientas de DevOps en las entregas de los proyectos de nuestros estudiantes. Si necesitamos que estén preparados para entrar a trabajar en las principales empresas del sector, debemos incorporar en ellos la Cultura DevOps. Para ello, a través de GitHub Actions, los alumnos solo pueden subir a producción sus proyectos si cumplen las convenciones que como escuela hemos determinado. Con esto forzamos que nuestros estudiantes aprendan como crear ramas de forma correcta en sus repositorios y sepan darle nombres estandarizados. De esta manera estamos obligándoles a crear código en pequeños módulos, que hace más sencillo (o menos difícil) el rastreo y detección de posibles errores a posteriori. Además, solo puede subir a producción aquel código que pase todos los tests, de forma que su código es lo más mantenible posible.
Todo esto hace que nuestros estudiantes comprendan que lo más importante no es que es que su código funcione en su máquina sino que lo haga en producción: mentalidad DevOps.