So because I’m new to this whole blogging at Packet Pushers thing (and blogging in general), I’ve been trying to decide on my place in the grand scheme of things. There are a lot of folks here that do a great job of deep-dives, vendor happenings, and general overviews. I could do those, but what’s the point of rehashing what this site and 100s of others (Google FTW) do?
In the military, you typically have NCOs (Non-commissioned officers) that will set you correct you when you’re wrong and if you’re lucky you get that one that can put you on the path to a solid career, or at least to be a successful soldier.
One of the things I missed in my career in IT, though, was a true mentor, until the past couple of years really. I started working with a guy who was, in my opinion, an engineer’s engineer. He could work in virtually any area of networking. Route/switch? Knows it cold. Security? He can lock it down. Voice? Let’s get talking. Wireless? Who needs cables? I learned more working with him in a year than I had in the past few years. I really wish there were more like him out there.
So what I’m setting out to do is not necessarily be a mentor, (though if there’s some of you who need some help or advice, I’m more than willing. I like to help), but to give a little guidance as we navigate the waters of the network world.
So what’s the first step? Well even if you never decide to branch out from your own little corner of the network world, you should learn scripting and how to use Linux or Unix. Seriously, if you’re a network engineer and you can’t bang out a script to do some updates or navigate your way around a Linux box, you need to remedy that post haste.
Why should you learn *nix? Well with the move to SDN, knowledge of Linux/Unix systems is going to become important to how you do your job, as there’s a lot of *nix “flavor” in these controllers and some are just straight up variants. You need to know how to navigate, configure, and move around the CLI. With some of the talk that Microsoft is putting out there about Windows 10, I foresee a lot of companies possibly moving in that direction. Plus you can grow a beard and call yourself a wizard.
So you say, “Ok, but there’s so many different ways to script I just don’t know where to start.” Well TCL (Tool Command Language) is a good place to start. Also you can do TCL scripting right in IOS if you didn’t know, so each individual device has their own thing going. Extend that out to the Expect extension of TCL and you’ve got a pretty simple yet powerful way to do those boring and yet all too prolific tasks you have to do as an engineer. You can use it in Windows or *nix environments, so you don’t have to worry about what system your company gives you. Pushing changes, but you don’t have Prime or some other configuration manager? Script it. Need to check for certain configurations on a bunch of devices? Script it. You get the idea.
Now after you get that under your belt, then you should look at Python. Python is extremely powerful. There are so many products out there that have Python API’s, that knowing how to write in Python will be useful in day to day operations. Cisco has its own API, as well as Juniper, Ansible, and a multitude of other vendors.
Granted, there’s a ton of pre-canned applications or scripts you can download from the net that will do all this for you. A lot of good folk have laid the ground work and you can reap the benefits. If you choose that route, well, alright then. There’s more benefit in learning this than just automating tasks though. Learning to code introduces a different way of thinking. You learn to look at problems in a different light, and it helps in troubleshooting. You can build customized tools for your organization, because not every solution that’s out there fits just right. Considering the cost of some of those network management systems or controllers that are out there, your company may not be ready to foot the bill. Also, don’t forget, it gives you a reason to grow an awesome beard.