Use Your Networking Knowledge to Design Automation Solution
I’m getting plenty of emails from not-so-very-young networking engineers trying to make career transitions. I got this one from a CCIE in his mid-40s:
Would you think the SDN and Data Center paths would be suitable for a long standing engineer?
Absolutely. It's just networking, although it's sometimes disguised a bit.
This article was initially sent to my Network Automation mailing list.
For example, when you start deploying VMware NSX at multi-gigabit scale you need ECMP between Distributed Router and a group of Edge Services Routers, and it becomes a pure routing challenge.
I'm not passionate about programming though I learned a few languages (obsolete now) at university in 1987-1992.
Don't believe "we're all becoming programmers" mantra. You do need to focus on computational thinking and automation though. For example:
- Split the things you're doing in smaller tasks;
- Describe each task in well-defined steps;
- Figure out how to verify each step (or each task);
- Figure out how to verify that the whole procedure succeeds (= testing);
- Develop error handling (= fallback / rollback / graceful degradation) plans.
After you've done the heavy lifting (and only someone intimately familiar with networking and having significant operation experience can do it for a large-scale network), any whizkid with Python, Ruby, or whatever skillz can turn it into a script, and will usually do it much better than you would. Why should you do that?
Will I have a niche working on SDN but avoiding full on programming? I'm keen to still work with the tangible things like hardware, designs and implementations.
Of course. While I hope we'll start using cookie-cutter approach to building small networks (yeah, sure), and a lot of undifferentiated stuff will move to the cloud (I'm amazed at how fast the migration of email to Office 365 is taking place), someone will still have to design large networks, test the whole stuff, and prepare the template configs to be deployed by an automation solution.
However, it helps if you know the tools and understand how they work even though you won’t use them yourself. That’s why I created a series of webinars and online courses that should help you make the transition from a traditional networking engineer to an engineer familiar with network automation:
- Network Automation 101 and Network Programmability 101 explain the concepts, gotchas, and how-to-get-started ideas;
- Network Automation Tools is an overview of open-source tools you can use;
- Ansible for Networking Engineers is a 10-hour deep dive into how Ansible (the most popular network automation tool) works and how you can use it to manage network devices;
- Network Automation Use Cases describe some common network automation scenarios;
- Building Network Automation Solutions online course gives you the big picture and walks you through the process of building a real-life solution, from small hacks to data models, device- and service configuration, troubleshooting and testing, and full-blown deployment.
My appraoch has been all the troubleshooting notes and list of commands you use to gather facts lets build that into playbooks.
Or whatever you do repeatidly (hourly, daily, weekly) lets look through that and see where Ansible and tools can help.
After they see those things in action they get the idea and more start flooding in. Its all about starting slow
Are you passionate about math? I'm pretty sure you're already using math to design and maintain networks. Programming is another tool that you should have available in order to perform your job.