Que tal, en un post anterior hablamos acerca de como comenzar a implementar una cultura de DevOps dentro de una empresa, hoy basado en un articulo y en mi experiencia te quiero compartir 10 habilidades que todo aquel que se proclame DevOps Engineer debería cultivar o trabajar.

  1. Soft skills
  2. Broad understanding of tools and technologies
  3. Security Training
  4. Experience with infraestructure automation tools
  5. Testing
  6. Customer-first mindset
  7. Collaboration
  8. Flexibility
  9. Network awareness
  10. Big picture thinking

Analicemos cada una de ellas en el contexto de DevOps.

1. Softskills
En el contexto de DevOps buscamos transformar la experiencia laboral funcional entre los equipos de desarrollo y operaciones al romper los silos, de aquí se desprende que a alguien nombrado "Ingeniero de DevOps" sea capaz de ser el puente de entre los silos y reúna a diferentes equipos para trabajar hacia un objetivo común.

Por ello, todo ingeniero de DevOps debería comenzar por comprender a las personas dentro de la organización, la cultura y como funciona la organización, posteriormente puede centrarse en construir una estrategia centrada en simplificar el entorno operativo general para lograr el objetivo de la llamada Entrega Continua(CD).

Para que un equipo de DevOps tenga éxito, debe incluir personas que posean fuertes habilidades de comunicación, al igual que en los equipos ágiles, las llamadas habilidades blandas son MUY importantes, no solo para cada miembro del equipo sino también para hacer el cambio cultural organizacional para implementar y estandarizar Devops.

2. Broad understanding of tools and technologies

Si bien, en el contexto de DevOps ya tenemos numerosas herramientas tanto como colores, es importante que un buen ingeniero de DevOps tenga una amplia COMPRENSIÓN de las personas encargadas de las siguientes áreas y las actividades que giran en su entorno

  1. Control de Código fuente(Git, BitBucket, Svn, VSTS,etc.)
  2. Integración Continua(Jenkins, Bamboo, VSTS)
  3. Automatización de Infraestructura(IaC= Infraestructure as a Code)(Puppet, Chef, Ansible)
  4. Orquestación y Automatización(Jenkins, VSTS, Octupus Deploy)
  5. Conceptos acerca de contenedores(Docker, podman)
  6. Orquestacion de contenedores(K8s, Mesos, Swarm)
  7. Cloud(AWS, Azure, Google Cloud, OpenStack)

Un buen Ingeniero de DevOps, siempre tiene curiosidad y cultiva esa curiosidad para mantenerse al día. Debe hacer preguntas y escuchar respuestas constantemente para generar nuevas ideas y aceptar nuevos desafíos.

3. Security Skills
Cuando hemos logrado la colaboración entre áreas, para liberar código de manera mas rápida, caemos en hacer a un lado la seguridad, ciclos mas rápidos significa introducir vulnerabilidades mas rápido dentro nuestro código o de nuestros empacados.

Por lo tanto, los ingenieros de DevOps deben poder escribir código seguro para proteger las aplicaciones de ataques, que quiero decir con esto, si bien no puedes garantizar estar cerrado a alguna vulnerabilidad, si debes poder evitar las mas comunes(XSS, SQL Injection, etc.)

Es altamente recomendable ejecutar actividades de seguridad en etapas tempranas de nuestro ciclo de desarrollo así como a lo largo de del viaje en DevOps, a pesar de no ser expertos en seguridad, se beneficiaran enormemente de tener capacitación en seguridad de software.

4. Experience with Automation tools
Como en muchos ambientes y ámbitos de DevOps, la automatización es un elemento clave, muchas de las tareas manuales realizadas por los Sysadmin se pueden automatizar haciendo uso de lenguajes de scripting como Python, Ruby, Bash, Shell, Powershell, Node.js entre otros. Esto asegurara un desempeño consistente en las tareas manuales y repetitivas al eliminar el componente humano y permitir que los equipos gasten el tiempo ahorrado en completar otras tareas.

Un Ingeniero en DevOps debe ser capaz de implementar tecnologías y herramientas de automatización en cualquier nivel, desde los requisitos hasta el desarrollo, las pruebas y las operaciones.

Los días de configurar infraestructura de manera manual o de ensamblar racks han pasado, ahora la mayoría de las empresas provisionan sus instancias de maquinas virtuales o servidores haciendo uso de la Infraestructura como Código(IaC) sobre plataformas en la nube como AWS, Azure, Hyper-V,VMWare.

5. Testing
La automatización se base en las pruebas y en los resultados que estas producen, por lo que necesitas un fuerte entendimiento y habilidad de como debes probar o cual es la mejor estrategia para probar tus componentes de código, no debemos pasar por alto que, una de las formas de DevOps nos indica que debemos actuar acorde al feedback obtenido(del código, de los QA, de los usuarios finales). Y debemos garantizar que cada pieza de código cumple con su propósito.

6. Customer first mindset

Si bien, el role del DevOps Engineer no es el de un agente externo a la empresa, los Desarrolladores, Control de Calidad, Customer success, los gestores de proyectos y los lideres de la empresa son sus principales clientes, que quiere decir esto, que a pesar de que debe mantener el ojo en las necesidades dictadas por la empresa, debe empatizar, priorizar y ser transparentes.

Un buen Ingeniero de DevOps siempre se preocupa por entregar valor a los clientes y requiere comprender y medir como su trabajo afecta al preocuparse por el resultado en lugar de unicamente preocuparse por su parte en la cadena de producción, siempre deberá tener el instinto correcto sobre como garantizar el éxito de extremo a extremo.

7. Collaboration

Un Ingeniero de DevOps debe ser un excelente miembro de equipo, alguien que ayuda y colabora con sus demás compañeros y sobre todo ayuda a aliviar los cuellos de botella, cualquier problema lo toma como un problema de todos y no solamente como el problema de un solo compañero

Otra habilidad fuerte del Ingeniero de DevOps es que trabaja con unidades pequeñas de trabajo para que otros puedan hacer su trabajo mas fácilmente, desde realizar revisiones de código hasta escribir pruebas de aceptación de usuario, la principal clave de la colaboración, es generar empatía.

8. Flexibility

Una cultura de DevOps exitosa, no puede dejar de lado la flexibilidad, no hay vacas sagradas todo esto es un ejercicio de recompensa/riesgo.

La multi-tarea es otra habilidad clave para un Ingeniero de DevOps, como un recurso que funciona en los sistemas de misión critica en el corazón de los procesos para los diferentes equipos, como ya sabemos, con frecuencia todo es IMPORTANTE y URGENTE, los ingenieros de DevOps se encuentran con frecuencia apagando incendios, de aquí se desprende el que puedan gestionar múltiples tareas al mismo tiempo.

9. Network Awareness

Con la mente en que el objetivo final de cualquier proyecto de DevOps es entregar con éxito una aplicación al usuario final que la consumirá, un buen Ingeniero en DevOps debe ignorar la red bajo su propio riesgo, ya que esta de alguna manera afectara su diseño, planificación y hasta sus pruebas.

10. Big picture thinking

Si buen, en su mayoría muchos Ingenieros de DevOps son excelentes ingenieros de software, a veces carecen de esta capacidad de ver el panorama completo e identificar lo que tiene sentido para el cliente.

Debido a que DevOps es una combinación de las necesidades y los deseos de los equipos multidisciplinarios y las aplicaciones, un buen Ingeniero de DevOps no puede perder de vista el panorama general de DevOps y la transformación digital a nivel empresarial, especialmente en un gran organización. Esto nos ayuda a evitar los puntos de contención y restricciones que son llevados de un proyecto a otro.

Si has llegado hasta aquí, espero que te halla gustado este articulo, como siempre, estamos abiertos a que nos hagas llegar tus observaciones a @JessVargas07 en Twitter, trato de responder lo mas pronto posible y de escribir conforme voy sacando tiempo, al final del día, todo esta bien orquestado.

Adaptacion del articulo: https://www.techrepublic.com/article/10-critical-skills-that-every-devops-engineer-needs-for-success/