Su próximo trabajo puede ser "programador de redes": ¿qué necesita saber?

Un nuevo tipo de trabajo se está creando en la transición SDN: el programador de red.

Se ha dicho que SDN combinará los mundos de la programación y la ingeniería de red. A medida que esto sucede, los ingenieros se enfrentarán a un nuevo título laboral –programador de red– que requerirá que construyan un nuevo juego de habilidades.

Hasta ahora, los profesionales de red no habían tenido que saber programación profunda. Estamos acostumbrados a lidiar con un entorno estructurado cuando se trata del sistema operativo en el hardware que controlamos. Si yo tengo que construir una red para un cliente, sé que mis equipos de Cisco, Juniper o HP tienen un sistema operativo integrado en las cajas, y que estos sistemas tienen reglas y una estructura. En ese sentido, la ingeniería de red se parece a la ingeniería de sistemas, excepto que en lugar de Windows como sistema operativo, usamos el IOS de Cisco, por ejemplo.

Pero con SDN, empezaremos a implementar controladores que dirigen decenas de miles de puertos con la habilidad de proveer virtualización de la red. Un nuevo tipo de trabajo se está creando en la transición SDN: el programador de red. Este será una persona que necesitará tener un amplio y profundo conocimiento de ingeniería de red, así como un amplio conocimiento de al menos un poderoso lenguaje de programación tipo C (C, C++, C#, Java, Objective-C). Este rol será responsable de la programación de los controladores SDN (la interfaz) y los componentes relacionados.

Entendiendo el turbio mundo de la programación

Cuando se trata de programación, y de acceder y lograr cosas utilizando paradigmas de programación, el mundo es un lugar diferente. En programación, estoy trabajando ostensiblemente con ciertos sistemas, y tengo las reglas ya sea que esté en Windows usando PowerShell, en Linux con un Bourne Again Shell (BASH), o en Python utilizando OS X. Las reglas de estos lenguajes son altamente fluidas en su aplicación.

La programación le permite utilizar las reglas y la sintaxis del lenguaje para lograr un resultado, pero no hay reglas particulares que le digan cómo debe obtener su objetivo. Como ejemplo, tome una construcción de programación llamada loop (ciclo). Asumamos que quiere hacer un loop usando el lenguaje de programación C. Puede utilizar un loop for, un loop do/while, o un loop while, y todos estos pueden tener diferentes condiciones. Puede hacer (do) algo mientras (while) existen las condiciones, por ejemplo. Cuál de ellos usará, qué condiciones probará y qué resultados obtendrá son altamente flexibles.

El problema para mucha gente de redes es que estamos acostumbrados a lidiar con variabilidad en muchas áreas de lo que hacemos, pero no en el sistema operativo o en los mismos comandos. En programación tiene mucha más flexibilidad para darse un disparo en el pie en el camino a donde sea esté yendo. De hecho, en programación es aún peor que eso: Realmente está construyendo el camino a medida que avanza.

El primer paso para ser un programador de red: Scripting básico

Así que, ¿dónde empieza un ingeniero de red a aprender programación y a aplicar estos conceptos a la red? La respuesta a eso es muy personal, pero yo sugeriría que la primera cosa que debe aprender son las bases del proceso de pensamiento o la lógica que subyace en todos los lenguajes de programación. Los ciclos que describí antes existen en una forma u otra en todos los lenguajes de programación, y tienen razones para que todos existan a la vez. Tiene que aprender cuándo y por qué utilizar cada uno de ellos.

El reto

El problema para mucha gente de redes es que estamos acostumbrados a lidiar con variabilidad en muchas áreas de lo que hacemos, pero no en el sistema operativo o en los mismos comandos.

Para la mayoría de ingenieros de red, es mejor comenzar con algún shell de Linux (el BASH es el más ubicuo) y el scripting de Microsoft PowerShell. Ambos tienen herramientas y recursos disponibles para ayudarle a aprender, ambos son muy poderosos, y ambos son propulsores en el mundo de TI por las herramientas y ecosistemas que los soportan y que son soportados por ellos. Ambos también le enseñarán lo básico de la lógica de programación, desde las declaraciones variables y loops, hasta las pruebas de casos lógicos y el control de funciones.

Más allá del scripting básico: lenguajes interpretados

Más allá del scripting básico, si quiere entrar en algo un poco más poderoso, su mejor amigo en este punto probablemente será un lenguaje interpretado. Python en particular parece ser la opción más popular en el lado de la red, engendrando todo tipo de proyectos que incluyen uno de los más interesantes, Pyretic, que es parte del Proyecto Frenetic.

Los lenguajes interpretados tienden a ser altamente portátiles y bastante fáciles de usar. También son poderosos en su propio derecho, e incorporan de manera más que suficiente a los ingenieros de red hacia el futuro vislumbrable en el contexto de SDN y programación de red.

Al final del día, el conocimiento de scripting básico y programación es algo bueno que tener, sin importar dónde está usted ahora en las TI, o dónde se ve usted en el futuro. Siempre he dicho que cualquier tarea que tenga que hacer más de una vez es algo que puedo poner en un script, y veo que eso se volverá una tendencia entre muchos profesionales no programadores de TI.

La transición a SDN no es algo de lo cual hay que huir, o estar asustado. Es una oportunidad de crecimiento y aprendizaje. Para algunos de nosotros, es una posibilidad de utilizar herramientas adormecidas o movernos hacia nuevas posiciones que no existían antes. De cualquier modo, escoja un camino y explore lo que la programación puede hacer por usted. Creo que estará sorprendido de lo útil que son algunas habilidades extra en esta área, incluso en el contexto de la configuración tradicional de redes sin SDN.

Acerca del autor: Teren Bryson es un ingeniero de red profesional, programador de VMware y geek de Unix. También es catador de whisky, practicante por mucho tiempo del arte de someter los sistemas de cómputo y telecomunicaciones, hacker del cerebro, estudiante de todo, sobreviviente del cáncer, amante de las cosas que hacen cosas y escritor independiente. Lo encuentra en blog.packetqueue.net y @SomeClown.

Investigue más sobre Virtualización