I’m excited to announce that I passed the DevNet Associate (200-901) exam, and with that I’ve joined the DevNet Class of 2020!
To start with, for those that don’t know, DevNet is the Cisco Developer Network, focused around developing solutions in the network space. It focuses heavily on programability and automation of numerous Cisco products. The DevNet Class of 2020 includes everyone that passes a DevNet exam during the inaugural year of the program. Originally, the program was slated to end December 31st of 2020, but it was extended to February 24th, 2021.
I found this exam to be simultaneously one of the most challenging and fun certifications I’ve attempted. With a near 20-year career in IT I’ve never really done much programming. I’ve made a few HTML sites over the years, and the odd batch or PowerShells script, but never anything more than that. In many ways this exam broke into a lot of new areas for me. For network engineers looking to get into automation I thought this was a great way to start, and for people new to IT this is a great way to get into the automation and programmability mindset early on.
How I prepared
First things first. Learning Python. Coming from the network background this took some work, but it really wasn’t too bad. I started with some YouTube videos and books. One site specifically that I used a lot was automatetheboringstuff.com, as well as the YouTube videos from the same author.
I found the repetition of the labs got boring after a while, so I started to look for beginner projects. One project that I worked with was a Python clone of the classic Pong game. However, instead of just duplicating the code I worked on adding additional functionality. Players could enter their names, and select their paddle colors, as well as set the game speed and score limit. I added some input validation to make sure the entries didn’t cause the game to crash. For me, it was important to actually work with the code and play with the options instead of simply copying what someone else said.
Once I felt I had a decent handle on Python I started reading the DEVASC 200-901 Official Cert Guide, which of course hit a lot of the same Python info I was working with already, but added depth. The book goes into a lot of other things like Git and API configs. Which, of course, meant getting Git set up and testing committing, branching, and merging code.
The Cisco DevNet site has access to sandboxes that can be used to test out API calls. Since I don’t have DNA Center, ACI, Meraki, Webex, FMC, etc. all running in my basement it was really good to have access to the sandbox. I worked through learning the API methods via curl, Postman, Python, and SDK. This meant a lot of repetition. The authorization methods between the Cisco platforms changes, and that means the way you interact with the API needs to change.
Looking back, I wish that I had merged the Git exercises more with the API work. I could have built out a repository of all the tests I was working with. So, as a recommendation, use Git early, and get in the habit of using it.
I also watched the Pluralsight videos by Nick Russo. Personally, I found those difficult to follow. Coming in to programming fresh, there was a lot that I felt was skimmed. This meant I spent a lot of time pausing videos to duplicate scripts. There’s a bunch of files attached to the courses, but I felt it was important to actually write the code.
In addition to Python, Git, and APIs, you also need to know the different data formats. The main ones would be YAML, JSON, and XML. Again, not coming from a programming background this was another stumbling block for me. The different sources I used all covered this, but it took some work to really understand it. It came down to just going over the formatting and syntax a few times until it really made sense.
If that wasn’t enough to learn, there’s also the automation frameworks. Things like NETCONF, RESTCONF, YANG, Ansible, Puppet, Chef, NSO, etc. More to learn. More terms. More syntax.
But wait, there’s more! Docker and VIRL/CML. Learning about the tools to build environments programmatically, and how to make them work. Yet more terms and syntax.
The exam also covers the software design methodologies. Things like Agile, Lean, Waterfall, etc. The DevOps ideas. Testing methods. Luckily, no syntax, but more terms.
The final topics were (for me) the easiest. Basic network security and network operations. Things like attack types and remediation mechanisms, subnetting, and other layer 2/3 functionality. Since this is stuff I’ve spend years working with these topics were a breeze. However, for someone new to network operations the process of learning the layer 2 and layer 3 configuration can be a bit more complicated. Luckily, this isn’t the CCNA. You don’t need to configure STP or OSPF. You just need to know what the terms mean. If you can articulate what a switch and router do, what the OSI model is, and you understand how subnets work then you should be OK.