It is important to note that the question is not "should I learn any?" but rather "how much should I learn?".
The new Cisco DevNet Certifications help us answer that question. Let me share my journey to that conclusion.
In early February I decided to take the DevNet Associates Exam. I scheduled it for the first slot available once it went live on February 24th, 2020.
I had a study plan
- Vacation & study
- Back from vacation for a week & mostly study
- Day before test nothing but study
The study plan execution was somewhat different
- Study during vacation was contingent on downloading some content before I got to my destination where there would be no Internet access. For various reasons, that download didn't happen and neither did any studying.
- Some unforeseen events took place the week I came back so no studying except for listening to my CBT Nuggets course while I was driving from San Francisco to Los Angeles.
- The day before the test I was still in Los Angeles and the only studying was more listening to my CBT Nuggets course at 1.6x speed as I headed North. I was too tired to make it all the way home so I had to go through San Jose traffic to make my 9:30AM test (listening to my CBT Nuggets course at 2x speed).
Somehow, despite all of that, I managed to pass the DevNet Associates exam and be one of the first 500 people to pass a DevNet exam. Let me explain why.
My true study plan
- Working with network automation since 2014
- The CBT Nuggets course
First, let me give kudos to the CBT Nuggets team. They had one of the few courses available for the Cisco Certified DevNet Associate 200-901 DEVASC exam (that I could find anyway). I recommend this course even if you are not studying for the exam. It was a terrific refresher, learned some new things, and filled in some gaps I didn't realize I had!
I also purchased the DevNet Associate Fundamentals course offered on developer.cisco.com but didn't have a chance to go through it for all the reasons above and its predominantly text based so I could not even listen to content while on the road.
How in the world did I pass?
I came away from the experience with two conclusions.
- The test content accurately reflected useful skills one obtains by doing network automation
- The test and study material are really focused on "teaching you to fish" (from the saying "if you give a hungry man a fish, you feed him for a day, but if you teach him how to fish, you feed him for a lifetime")
Skills I had going into the test from real-world experience and training
The only reason I passed was experience in networking and in network automation. Specifically, experience and familiarity with:
- Serialization protocols (YAML, JSON, XML)
- A network engineers' knowledge of Python
- APIs (REST in particular)
- how to interact with them and how to read their documentation
- RESTCONF, NETCONF, and YANG
- Ansible and how to read Ansible module documentation
- A basic knowledge of Linux and Bash
- Docker basics
- Basic networking
These are all skills I picked up at some level over the last 5 years in the course of automating tasks and workflows for my projects.
Given everything that transpired, I fully expected to fail. Without any of the formal training and material I planned to study, I figured I would get killed in the "Answer the Cisco Way" category alone. Even though I've worked with all of the topics listed above in one form or fashion I was sure there would be some special Cisco spin that I would get wrong.
I was pleasantly surprised and wrong. Cisco did a very good job with this test. It's not a test of the "Cisco Way" or a test of your ability to memorize but a genuine attempt at testing your skill in this area. If you are familiar with the topics on the exam blueprint, know how to use documentation, and have hands on experience with the topics you will be successful.
If you think about it, the only reason I passed was because I have experience actually automating and the topics were ones highly relevant to day to day network automation. The CBT Nuggets course refreshed the stuff I knew and filled in some gaps for technologies I had not worked with directly BUT I could figure out how to work with them because I knew how to use the documentation and I had experience with APIs in general.
The exam looks to test your real world skills and knowledge. It tests your ability to solve a problem with a set of tools and information. These skills will serve you well regardless of vendor.
Use the exam blueprint
I don't advise my study path but do advise getting started on a path that will get you some of these basic skills. You are going to need them.
You now have a blueprint for getting started from a credible and widely recognized source.
I believe every network engineer has been (or should be) asking (struggling with) the following question:
How much of this automation stuff should I know to be successful as a network engineer in this new era of network programmability and automation?
I think this DevNet Associates exam helps to quantify that answer. With this base skill set you will know if you want to move further into programmability & automation (i.e create automation) or if you only want to consume and execute automation. These are the basic skills you will need to do that.
The skills you need (regardless of vendor)
If you have not already, it's time to get going!
- Know Git
- Know your serialization protocols (JSON, YAML, and XML)
- Have a network engineers' knowledge of Python*
- Sign up for Kirk Byers free Python for Network Engineers course
- Sign up for Kirk Byers Network Automation for Network Engineers course (cost)
- INE has some excellent Python for Network Engineers courses (cost)
- Know APIs (REST in particular)
- CBT Nuggets DEVASC course has some excellent content for this topic
- Be familiar with RESTCONF, NETCONF, and YANG
- CBT Nuggets DEVASC course has some excellent content for this
- Be familiar with Ansible and how to read Ansible module documentation
- There are some terrific courses on Udemy, Pluralsight, and CBT Nuggets.
- Sign up for Kirk Byers Network Automation for Network Engineers course
- Find a course targeted at Networking (vs. Server)
- Have basic knowledge of Linux and Bash
- Know Docker basics (concepts, images vs. container, Dockerfiles, basic usage)
- Know basic networking
- I figure if you are reading this you've got this one covered!
* What is a "network engineers' knowledge of Python", you ask? Here is how I answer that question:
Basic python (language, object types, program flow control, using modules) and some familiarity with the common modules used for network programmability.