Esta semana tuve el gran placer de entrevistar a Nico Paez quien es un profesor universitario, consultor y mentor técnico en DevOps.
Nico es argentino y estuvo entre el grupo de pioneros que inició el movimiento Agil en su país hace ya más de una década. Nico divide su tiempo entre enseñar en la universidad y hacer consultoría en empresas donde aplica DevOps en proyectos reales. Siguiendo el tema que lo apasiona ya por varios años Nico decidió hablarnos de “Ingeniería de Software en tiempos de DevOps”.
Una de las primeras cosas que recuerdo de la entrevista con Nico es que él enfatizó que DevOps no es acerca de herramientas y procesos rígidos. Él hizo la comparación de que una década atrás Agile fue confundido con simplemente utilizar Post-its® y comprar una herramienta de seguimiento. Esta sobre simplificación de lo que es Agil llevó a adopciones fallidas; DevOps in muchos casos tristemente esta siguiendo el mismo camino.
Nico sostuvo que confundir DevOps con herramientas se origina debido a que:
- No existe una definición única y precisa acerca de lo que es realmente DevOps; a diferencia de Agil donde siempre es posible referirse al Manifiesto Agil
- Los vendedores de herramientas influencian fuertemente DevOps porque ven una oportunidad de mercado ya que para implementar DevOps uno tendrá que utilizar alguna combinación de herramientas
Hablando acerca de la Ingeniería de Software, Nico mencionó que hay poco escrito acerca de cómo crear una tubería de despliegue para poner software en producción de manera segura y mantenerlo corriendo sin incidentes. Aún en el mundo académico Nico sostuvo que este tipo de conocimiento no es parte de las materias troncales de carrera. La razón para esto es que el cuerpo de conocimiento acerca de DevOps es todavía escaso en comparación con otras partes tradicionales de la Ingeniería de Software.
Nico define DevOps como una colección de prácticas que permiten cubrir la última milla de la Ingeniería de Software en un periodo corto y de manera frecuente, siendo esta última milla el poner software en producción. Estas prácticas pueden ser divididas en dos categorías: prácticas humanas que promueven la colaboración entre developers e ingenieros de producción combinados en un sólo equipo, y prácticas de software como infraestructura como código y despliegue continuo.
Nico también menciono que hay una conexión muy cercana entre Agil y DevOps, siendo Agil el posibilitado y eXtreme Programing la fuente de inspiración para las prácticas técnicas. Para terminar Nico nos dejó con este pensamiento: DevOps es un estado mental, no una metodología, que requiere herramientas de software pero que no es sólo una colección de herramientas de software.
Software Engineering in Times of DevOps
This week I had the great pleasure of interviewing Nico Paez, who is a university professor, consultant, and DevOps technical mentor.
Nico is from Argentina and he has been among the pioneers that started the Agile movement in that country more than a decade ago. Nico divides his time between teaching at college and consulting with companies where he applies DevOps to real-life products. Following his years-long passion, Nico decided to talk about “Software Engineering in Times of DevOps”.
One of the first things that I remember from my interview with Nico is that he emphasized that DevOps is not about tools and rigid processes. He made the comparison that a decade ago Agile was confused with simply using Post-its® or buying a tracking tool. This oversimplification of what Agile is has led to failed adoptions. DevOps in many cases sadly is following the same route.
Nico stated that confusing DevOps with tools originated because:
- The is no unique and precise definition of what truly is DevOps; different from Agile where we can always refer back to the Agile Manifesto
- Tool vendors are heavily influencing DevOps because they see a market opportunity as for implementing DevOps one will need to use some combination of tools
Talking about Software Engineering, Nico mentioned that there is little written about how to create a deployment pipeline to safely put software into production and keep it running without incidents. Even in academia, Nico stated that this type of knowledge is not currently taught in mainstream curricula. The reason for that could be that the DevOps body of knowledge is still scarce compared to other parts of traditional Software Engineering.
Nico defines DevOps as a collection of practices that allow covering the last mile in Software Engineering in a shorter time and very frequently, with the last mile putting software into production. These practices could be divided into two categories: human practices that will foster collaboration between developers and production engineers merged into a single team, and software practices like infrastructure as a code and continuous deployment.
Nico also mentioned that there is a tight connection between Agile and DevOps, with Agile as an enabler and eXtreme Programing the source of inspiration for technical practices. Inc closing, Nico provided this thought: “DevOps is a mindset, not a methodology, that requires software tools but is not just a collection of tools.”