Inching into Network Programmability with Cisco
In November 2015, I wrote a GoCertify blog post titled Cisco Aims to Future Proof Certs through 'Evolving Technologies'. Therein, I explained how Cisco is adding a new set of questions to the CCIE and CCDE credentials to make sure that those certs keep up with changing times and new technologies.
Those elements may be understood as "new and dynamic exam content" intended to make sure that cert candidates keep an eye on what's new and what's coming, as well as what's important in the here and now. One such dynamic area for these certs, in fact, is called "network programmability," and this is an area in which Cisco has invested heavily and recently.
They have also introduced some certs in this bailiwick, and beat the drum heavily to enlist interest and participation in this burgeoning arena for networking activity. I just got an email from Cisco Learning yesterday, for example, hyping "International Programmer's Day" (Sept. 13, in case you didn't know) that also offers links to a list on On Demand e-learning courses on — You guessed it! — network programmability:
Programming for Network Engineers (PRNE) v1.0
Designing and Implementing Cisco Network Programmability (NPDESI) v.1.0
Developing with Cisco Network Programmability (NPDEV) v4.0
Digital Network Architecture Implementation Essentials (DNAIE) v1.0
Defining Network Programmability
All of this raises two questions: First, What is network programmability?; and Second, Why should you care? For the answers to those questions, I turned to a Cisco blog post from the Enterprise Networks group. Published earlier this summer on May 1, it's titled Defining Network Programmability, and goes straight at those two questions, head on.
Blogger Adrian Iliesiu, an engineer in Cisco's Corporate Development Technology group and a point person in reaching out to developers interested in network programmability, defines the topic as follows:
"Driven by real benefits like time and cost savings, reduction of human error, customization and innovation, network programmability is currently understood as a set of tools and best practices to deploy, manage and troubleshoot network devices."
Because some of these device may be virtual and others physical, this ends up being mostly about creating and using scripts at the command line, and learning and employing APIs designed to provide device access programmatically. Simple enough, right? And an effective answer to the first question.
Things get more interesting with the second question. Its answer depends on understanding how networks are changing and evolving in a virtualized world. Iliesiu speaks to common solutions in addressing increasingly flexible and agile networks where, to use his example:
"(I)n a dynamic DevOps world when entire testing and development environments are built and destroyed within minutes, we expect the network to keep up and be just as flexible" as the other parts of the infrastructures and services that IT now routinely provides on demand.
Thus, he points to a new and emerging approach to dealing with such needs. The solution, he says, is one that revolves "around providing application programming interfaces (APIs), sample code, and reliable software development kits (SDKs)." Thus, network administrators need to understand how to work with such tools, which perforce means that programming must also find a place in his or her bag of tricks going forward.
And that, dear readers, is an explanation of network programmability in about as small and tight a nutshell as I can craft for you. I'd recommend reading the original blog post for more information and details. At least, I'd recommend it highly if you work in or around networking, or plan to do so any time soon.
This kind of stuff is indeed going to become an increasingly important part of how we set up, configure, manage and maintain networks in the workplace going forward.
Cisco's Network Programmability Certifications
Right now, elements of network programmability are creeping into many elements of the Cisco certification portfolio, from the Associate level all the way up to Expert and Architect levels. There are, however, only two Cisco credentials that include the term in their names, and both of them are specialist certifications:
Cisco Network Programmability Developer Specialist: This one is for programmers focused on the network applications layer, which means they work with and create code for Cisco programmable components in devices both physical and virtual. This effort applies most typically to use cases that involve service providers, campuses, and data centers.
The cert and its supporting course focus on Cisco's One Platform Kit (onePK), Open Daylight Controller (ODL), and a variety of Application Policy Infrastructure Controllers (APICs). Some knowledge of Python or C, or another similar language, is needed for candidates to do the work involved in earning this certification and putting it to work.
This item from the course description tells those who want to know what it's really all about: "You will learn how to interpret and produce code to deploy configurations to multiple devices using RESTConf and NETConf and to identify network programmability tools and Cisco virtual platforms."
No prerequisites, outside of programming background and skills.
Cisco Network Programmability Design and Implementation Specialist: This one is for network engineers involved in setting up and managing environments geared to support network programmability, including automation and orchestration frameworks. It's a more general and architectural view of network programmability, from the standpoint of understanding what it's good for, and how it may best be used in enterprise and other heavy-duty networking environments.
The course description says it all in pure, unadulterated technobabble:
"The course will enable candidates to understand SDN controllers including APIC, APIC-EM and OSC, as well as how to use device-level APIs such as Cisco NX-OS, IOS-XE, IOS-XR and ASA OS. They will be introduced to DevOps and Agile software development methodologies, and get started on using automation tools such as Ansible, Chef and Puppet."
Any CCNP, CCDP, CCIE or CCDE certification is acceptable as a prerequisite to earning this credential, so the company wants candidates already quite familiar with Cisco platforms and technologies to earn this credential.
Is network programmability in your future? If you're Cisco certified at the CCNP or CCDP level or higher, then the answer is "Yes." And for those just getting started on Cisco certification at the technician or associate level, the answer is "Yes, sometime soon." Dig in, and enjoy!