Why a Network Engineer MUST learn Python ?

This is specifically for those Network Engineers who are still in doubts if they will need programming skills in their network engineering career or not. This is also relevant to Data Center, Voice, Wireless, Security whatever network engineers.

Like many of you out there, I am a Network Engineer. We have spent much of our professional lives learning about networking technologies. We’ve invested countless hours studying for certification exams, designing customer networks, learning about product capabilities, network scalability, network management and operations. Oh, network operations…dare we count the number of sleepless nights spent in maintenance windows, supporting P1 cases, escalations and performing complex troubleshooting.

I’m proud to be a network engineer, and I can safely say that dedication to the networking craft has paid off. So, how am I supposed to feel when I hear people say that networks are “holding us back?” That application deployment and speed of provisioning are compromised by “archaic and complex network processes?” What are they getting at? This is the world that we have come to know and love.

If I stop for a minute and try to understand these complaints, I quickly discover I have experienced all of them, in one form or another, throughout my career. You know what I am talking about my fellow net-heads:

  • That 500-entry access list that you dare not touch for fear it will cause some unexpected and catastrophic problem.
  • Trying to figure out what the heck this undocumented, 1000-line running configuration means.
  • The never-fulfilled promise from my networking vendor(s) that different product families, sold by said vendor(s), will one day have common configuration and management interfaces (APIs).
  • The management GUI that only exposes half of what my hardware can do because of that same lack of good APIs.
  • The sluggish performance I experience because device management GUIs have to connect via SSH/Telnet and use CLI parsing or screen scraping to compensate for the lack, again, of common management APIs.

As proud as I am of what I know about networks, I have to admit that sometimes it feels like I am working at dial-up speeds in the era of broadband. It is true that network operations are stuck in the past. But there is good news — very good news. It won’t be that way for long. The world of networking is changing.

Do you think programming is boring or just not for you? What do you do every day? You program a switch or a router or a firewall; it doesn’t look or feel like it but that’s exactly what you are doing on a discreet, per-device basis.

If programming sounds boring , hard and complicated, let me tell you it’s not; things have moved on, modern languages are powerful, relatively simple to learn, write code in, read and understand. If you can get your head around OSPF or BGP you certainly have the powers to understand something like Tcl or JavaScript.

We continue to learn one thing or another for our jobs and this may sound you can put off but you cant ignore to learn Programming . Put it at the top of your list or risk irrelevance sometime soon (and sooner than you might think). Adapt and survive or fall by the wayside.

Recently, the industry has been making strides around three very disruptive concepts: Software Defined Networking, Network Virtualization and Network Overlays. Software Defined Networking and Network Virtualization provides a complete set of tools to help customers move towards the network automation , ease of management and orchestration.

Efficiency. Let me ask you: what do you prefer – learn 5 different CLIs or 1 programming language? Let’s count, Cisco, Palo Alto, Checkpoint, Juniper, Fortinet, etc. What if you need to deploy each of them and bunch of switches and routers? Add some other bits to a scaling picture for the greater emphasis of usefulness of а scripting language here.

The future is now. Yes, it is already happening. Today everything in the networking industry is changing so fast and every new (security) networking project involvе bulk devices configuration / automation instead of box by box setup.

I hence encourage you to take a course at Python for Network Engineers.


Marcos Hernandez, Network Virtualization Engineer | CCIE # 8283