Tackling the Programming ApproachAs we move into the future, we keep developing advanced technologies and tools to meet new demands and we engineers also need to adapt. Many technologies are being replaced by new ones, like MPLS replacing Frame-Relay, and VoIP taking over PSTN. But it's not just networking but technology in general. Witness the rise of the android and the fall of the giant Nokia.  We have to accommodate and embrace emerging technologies and tools.


We engineers –  oh sorry, “Network Engineer’s” – need to be prepared for a very big change: Software-Defined Networking (SDN). For those who are not familiar with it, SDN is the network automation approach in which we separate the data and control planes. Think about it like a switch topology, where we have 5 switches interconnected to each other, and every switch is running with its own data and control planes. Now just think, what if we centralize the control plane in the topology? This sounded unrealistic until very recently. Now we can achieve this and other functional advantages like increasing the efficiency and decreasing the manual overhead using SDN.


As I talk with my colleagues about SDN, I sense a fear of the “programming”. One of them said, “I cannot do programming because it’s totally different from networking and that’s why I chose the networking industry, so I wouldn't have to program.“ Indeed, this is a conundrum in many network engineer’s minds. My own experience: I can still remember the first time I was accessing a telnet session of a Cisco router in my Cisco Network Academy program. It was an amazing feeling and why shouldn’t it be? I was configuring a router for the first time in my life. I had never considered choosing networking as my professional career, as I loved coding (C/C++) at that time and really thought I wanted to be a programmer. As I progressed through my CCNA course, I was amazed to see and learn about networking technologies. At some point, I realized I liked this field and chose it as a career path but the biggest challenge was adapting from programming to networking. Two different paths and one choice.


But I think networking and programming are similar at a high level. And one can use a similar approach to learning them.


We have to learn the programming language commands to write a program in the same way we learn about basic configuration commands to run a router in a network. When we first physically setup our network, we use commands to give an IP address on an interface and keep in mind the packet flow from source to destination. Similarly, a program executes from top to bottom. A program is just a group of commands like a configuration file on a router, which loads during boot up. So if you are studying BGP, RIP, C, C++ or python, the concepts will differ, but the approach remains the same.


Learning programming and networking is just like moving to a new country with different laws. Maybe the cities or roads are new, but the approach to life is same as it was in the previous country.


“Fear Kills Dreams”


Change will keep on coming in one form or another, so we’ll need to keep on learning and be ready to adapt. SDN is coming and we engineers should be ready when it arrives in mass. So who is going to begin to learn programming today?


If you want to know more about SDN & its impact, check below links:
SDN Networks and Network Programmability change more than just the network
SDN: Fight or Flight - The Syndrome of New Technology and the Impact on Networking Careers
SDN Recorded Seminars on the Cisco Learning Network


Cisco also announced some SDN trainings, so have a look at them, too:
Experience the Next Network Evolution with Cisco Network Programmability Training


Suggestions are always welcome