tiero - Fotolia
That may sound overwhelming, but network engineers are smart. We have to deal with large, complex networks that include an increasing number of functions, implemented with an even larger number of obtuse commands. So, don't tell me that we can't handle learning a few more things that will help make our lives easier and make our networks run more smoothly. Think you haven't been programming? Look at the complexity of a set of network configurations. It is programming, but distributed in a way that makes it harder to maintain than with typical software systems.
Accept the challenge of picking up network engineer skills and begin learning a little at a time, just like you did with networking.
Network engineers' troubleshooting skills are excellent and will continue to be vital. SDN, however, will require them to make some changes to those skills. Networks will be more dynamic, so they'll need automated systems and new tools to collect and analyze the necessary data in real time. Since applications will drive network changes, engineers will have to become more aware of the APIs, examining SDN logs and correlating changes with problem symptoms. It isn't any different than some of the more interesting troubleshooting problems we've all heard about in the past. What will be different is that these troubleshooting techniques will become more common. Network engineers should learn tools beyond ping, traceroute and "show configuration."
Basic software tool skills
Learn how to drive a good text editor. Many editors have more commands than you can memorize, so don't try to learn everything. Focus on a basic set: cursor movement by character, line, word and paragraph; text change and copy functions; and finally, file-save and close-the-editor functions. Once familiar with the basics, add multi-window commands and macros to increase productivity. You can be highly productive with a small set of commands that can be learned in a few hours.
Continue your network engineer skills development by getting some Linux OS experience. Many of the new hardware platforms (Cisco's NX-OS, Arista's EOS and the Cumulus OS) use Linux for the control system. Learn the basic file system structure, where the system configuration files live, and how to change them. Start with a focus on changing networking parameters, enabling or disabling server processes (DHCP client and server modes), connecting to the Linux command-line interface (CLI) via Secure Shell, and executing a graceful Linux shutdown. Learn how to create and modify cron jobs so you can create scripts that repeatedly execute at times you specify. A basic understanding of Bash scripting will round out your Linux education.
Develop some software experience in one of the languages that is used in SDN, such as Java, Python or C/C++. The concepts and skills in one language will generally translate to others. Python is an easily learned scripting language. It contains object-oriented functionality, which will enable you to learn about that method of programming, though you certainly don't have to use it to get started. Learn how to use pipelines of commands to integrate multiple small tools and scripts together to accomplish larger tasks. A good example is to rename a long list of files, perhaps removing a ".txt" suffix and adding a ".cfg" suffix.
Finally, most of the open source projects use Git to maintain their code, so it is important to learn how to use it to store, retrieve and archive software projects. Each project typically has a developer mailing list where you can track software updates, and often a user mailing list for using the software.
This is a big item, because it involves culture change. Network engineers have learned to program the network one box at a time. Now they need to change how they configure, monitor and manage networks. Most networking groups seem to resist automation because they fear a mistake that breaks the network faster than they can fix it using the CLI, one box at a time.
Start by automating the checking of device configurations, using a Network Change and Configuration Management system to automatically check that certain functions are properly configured in all network devices. First, make sure the Simple Network Management Protocol and AAA configurations of all devices match your template. Then, check configurations that are specific to a class of devices, like core routers or access switches. (Note: See Device and Interface Tagging to simplify device and interface grouping.)
Once you have automated device and interface configuration validation, use the automation systems to push out configuration changes. Get comfortable with the process by executing simple changes like password updates. Automate configuration changes on a few devices and then expand the scope if it works well. If it doesn't work, troubleshoot, determine the cause, fix it and re-run it. In the beginning, it may take more time than if you did it manually, but the experience you gain will allow automation of more functions, and you'll quickly begin using automation to deploy all configuration changes.
SDN will drive automation to an even greater level. For example, an application will inform the SDN controller of its needs and the SDN controller will implement the change. Understanding what is happening and being comfortable with the process will be critical.
As you acquire new network engineer skills, unfamiliar words and concepts will appear that you'll need to learn. (I recently stumped an experienced tech writer with the word "idempotent;" look it up if it is new to you.) This isn't any different than learning some new networking technique like front door virtual routing and forwarding. Before long, you'll be as comfortable in network automation and scripting as you are at traditional network configurations.
What training and skills do network engineers need to accommodate increasingly software-based networks?
Why CCIE status is no longer enough
SDN means cultural changes for networking staff
How network programming skills can help your career