Avatar

At a recent network programmability workshop one of the attendees asked, “Why is Cisco teaching me Python?

I was leading a workshop for a group of senior network engineers at a large financial company that was organized and sponsored by a member of their cloud leadership team.  This made the workshop and audience a bit different than most of the DevNet Express, Cisco Live, and DevNet Zone events I had been supporting for the last year.

Hank Preston presenting about programmable networks at Cisco Live in Melbourne, Australia
Hank Preston presenting about programmable networks at Cisco Live in Melbourne, Australia

It was different because at the Cisco events the audience “self-selected” to attend the workshop or presentation.  The audience in those events was already convinced of the importance of learning topics related to programmable networks – like Python, JSON, REST APIs, etc.  However, in the case of the financial company sponsored event, the audience was in attendance because their management TOLD them to attend.  Or at least that was the case for several of the audience members.  To be fair, at least half this audience was excited to be there and had already been experimenting with many of the topics.  Nonetheless, it struck me that this was an entirely fair question

As you might expect, a question like that generated quite a bit of discussion on the topic.  We may have fallen a bit off schedule, however I think the time was well spent.

Well… Why Is Cisco Teaching You Python You Ask?

So what is the answer you wonder… well simply put (and this is exactly how I answered it in the workshop), Cisco is teaching you Python for the same reason Cisco taught you subnetting, the OSI model, and fundamentals of spanning-tree and routing.  Because understanding Python is critical to your success as a network engineer, and Cisco wants to help network engineers be successful.  

Now, not everyone in the audience bought the answer immediately.  “Why is it critical?” was asked several times.  “I didn’t become an network engineer to become a programmer” may have been said a few times as well.

The argument was made that even though network automation was clearly the direction of the industry (no real disagreement on that front) there were many many tools available for them to use to automate the network without writing any code.  And if the time came when they DID need to code something directly, their organization had software developers that could do that work for them.  Those points are definitely true, and for some engineers that maybe an approach that works for them and their company.

However, I feel I’m a much better engineer because I learned the details behind subnetting rather than rely on “The Subnet Calculator” online to explain the difference between Layer 2 and 3 communications. I understood WHY I configured portfast and BPDU guard.  In the same way, I believe the best network engineers in the future will be able to:

  • build their own Python scripts (or curate and modify scripts they find)
  • query the APIs for their network devices, controllers, and management systems
  • contribute to key Open Source projects that are becoming the foundation of network automation

For those reasons I’ll continue to lead programmability workshops with customers, make network programming basics videos, as well as build and deliver all the amazing NetDevOps content on DevNet, at Cisco Live, and at other events around the world.

What do you think?

Are you on “Team Python” as you look to build your own career?  Or do you think all this focus on programmability skills is a flash in the pan?  Tell me in the comments or on Twitter/LinkedIn.  Let’s keep the discussion going.