I recently replied to a comment that I think warrants a full blog post.
I’ve been here at Cisco working on programmability for a few years. Brian Turner wrote in to say, essentially: Hang on! I became a network engineer precisely because I don’t want to be a coder! I tried programming and hated it! Now you’re telling me to become a programmer!
As I said in my reply, I have a lot of sympathy for him. It reminds me of a story.
Back when I was at Juniper, I met with the IT department’s head of automation to discuss using some of his tools for network automation. Jeremy was an expert in all things Puppet and Ansible, and a rather enthusiastic promoter of these tools on the server/app side of the house. He had also managed to get Puppet running on a Junos device. I was meeting with him because, frankly, the wind seemed to be blowing in his direction. That said, I did not share his enthusiasm. He told me about a server guy he had worked with, Stephane. When Jeremy proposed to Stephane that he should use automation tools to make his life easier, Stephane vehemently rejected the idea, and the meeting ended with Stephane banging his fists on the table and shouting “I am not a coder!”
Flash forward a couple years and Stephane ended up the head of automation for a major company. Apparently he finally bought into the idea.
Frankly I had no desire to become a coder either. When I interviewed at Cisco, most of my discussions were around the controllers I was working with at the time, data center fabrics, etc. When I arrived, my new boss assigned me as his Principal TME for programmability. I never claimed to be an expert in this area. Two months later I was presenting to Tech Field Day, and experienced automation guys like Jason Edelman and Matt Oswalt on how to run Puppet on a Nexus switch. Three years later and I’m known as a NETCONF/YANG guy. I’d barely heard of them when I started.
As I replied to Brian, Cisco doesn’t want him or anyone to learn Python or YANG or whatever. Think about it from my perspective in product management. Implementing YANG models for all of IOS XE is a massive undertaking. Engineering devoted a huge amount of effort to pull this off. Huge. Mandating YANG models for their ongoing development burns cycles. Product marketing and engineering would never prioritize this unless we thought there was a high probability someone would use it. In other words, we don’t want people to use it so much as customers want us to develop it. We have demand for programmable interfaces for network devices, and hence we’ve delivered on it. My job as a TME is not to push NETCONF/YANG on anyone, but to provide the enablement to make it easier for someone to use this technology if they themselves want to.
As I often say in my presentations, the why is important. Why do some customers demand these interfaces? Well, because they know Notepad is a horrible automation tool, and it’s what 90% of network engineers use. If you want to configure 50 switches, you’re going to configure one, paste the config into Notepad, tweak a few values, and then paste it into the next switch. Do this 48 more times and tell me if this is the best use of your time as a highly skilled network engineer. You can write a script to do this and save yourself a lot of trouble. Or use Ansible to do it. Or Cisco DNAC. Whatever you want. But if you want any of these tools to work efficiently, you need a machine interface, which CLI is not. If you don’t believe me, try writing a script to do regular expression-based parsing of CLI outputs. It’s a lot easier with YANG.
The point is not for network engineers to become programmers. The point is to add some tools to your toolbox to help you focus on what you do well. One weekend spent with a Python course and one more weekend with a DevNet course on YANG will give you a tool you can use to make your life easier. That’s it. Some customers may take it a lot further, of course, and go way into CI/CD workflows and that’s fine. If you want to do 95% of your work in CLI and write a few scripts to do the other 5%, that’s fine. If you want to use Cisco DNAC to do almost everything, knock yourself out. It’s about what works best for you, as a network engineer.
I often point out how lousy my code quality is. I’m sometimes ashamed to show the code for some of the scripts I’ve written. I’m not a coder! That’s a point I often make. I don’t want to be a full-time software developer. I’m a network engineer. So for Brian and all the other CCIE’s out there, keep doing what you do best, but don’t close yourself off to some additional tools that will make your life easier.