Data centers

09:06 AM
Kirk Byers
Kirk Byers
Commentary
Connect Directly
Twitter
LinkedIn
Google+
RSS
E-Mail
50%
50%

Programming: An Essential Skill For Network Engineers

As software takes over the networking discipline, engineers who don't learn to code a general-purpose programming language will be left behind.

I'm going to start off with a disclaimer: I teach Python courses to network engineers, so I have a vested interest in programming. Nonetheless, I regard the following as true.

In 2011, Marc Andreessen wrote an article called "Why Software is Eating the World" (subscription required). In it, he predicted:

    Companies in every industry need to assume that a software revolution is coming. This includes even industries that are software-based today. Great incumbent software companies like Oracle and Microsoft are increasingly threatened with irrelevance by new software offerings...

    In some industries, particularly those with a heavy real-world component such as oil and gas, the software revolution is primarily an opportunity for incumbents. But in many industries, new software ideas will result in the rise of new Silicon Valley-style start-ups that invade existing industries with impunity. Over the next 10 years, the battles between incumbents and software-powered insurgents will be epic.

During the last few years, we have seen the rise of software-defined networking. Cisco has launched both its onePK API and its Application Centric Infrastructure, and VMware has countered with its NSX overlay-underlay networking model. Network engineers are increasingly using DevOps tools like Ansible, Puppet, and Chef. Additionally, Amazon Web Services, OpenStack, and other software platforms are making the software-defined data center a reality. Finally, white-box switches have the potential to standardize and commoditize networking hardware.

Networking has joined the software-eating-the-world buffet
But what do all these changes imply for network engineers? Is it all business as usual, and do we just need to continue pounding on our CLI? Or is this a fundamental change in the networking industry?

I think that it is a fundamental shift, and that programming skills will be increasingly important for network engineers.

Many of us have seen the great advances that server engineers have made in automating their environments; network engineers need to keep pace. But in order to keep pace, we need better methods of programmatically controlling equipment, better tools, and an increased use of network virtualization. Network engineers also need programming skills to use the new tools and the new programmatic access.

Now, I am not saying that you need to be Linus Torvalds or Guido van Rossum, but you must be fairly proficient in a general-purpose programming language. (Python and Ruby are good choices.) You need to add this important skill to your tool belt.

For many of you, this is not entirely new. Lots of network engineers have known how to program for years and years. Network engineers have been hacking together shell, Perl, and Python scripts for quite a while. But the requirements of network engineering and the job market are now requiring more -- more network engineers with programming skills and a broader and deeper understanding of programming.

Obviously, not all network engineers need to learn to program, but it is a valuable skill to have (and will be increasingly so). There are certain jobs, roles, and companies that will be immune to this, but for many of you, it's in your interest to acquire or improve programming skills.

But can't I just use the tools other people create for me?
Yes, but if these are DevOps tools like Ansible, Puppet, and Chef, then these tools themselves have numerous programming constructs built into them. For example, Ansible has lists, dictionaries, loops, and conditionals. It actually has multiple forms of these, if you consider both the main script (the playbook) and templates. Additionally, if you want to be proficient at automating tasks in your environment, you will need to write your own glue scripts and potentially add your own code to DevOps tools. These tasks require programming skills.

But can't I just buy a large network controller with a GUI that does all this for me?
I am sure vendors will be happy to sell you a very large, very expensive network management package. However, this hasn't worked very well in the past. If a vendor could accomplish this on a broad scale, that would be great.

Additionally, many of the large management programs will result in increased network virtualization (VMware NSX, OpenStack), including virtual switches, virtual routers, virtual firewalls, and virtual load balancers. These virtual network devices can be created, configured, and destroyed programmatically.

Finally, a management program would still need to integrate into your environment and workflow. This integration would often involve programming.

But can't I just think like a programmer?
Learning and doing are closely related. I doubt that you will be able to reasonably understand programming practices without learning how to program (at least to a certain extent).

By all means, use tools. Find the best tools you can. But one of these tools should be a general-purpose programming language.

Time will tell if I am right or not -- making predictions about the future is a dangerous game. If programming skills are important for network engineers, then they will allow you do your job significantly better, and your market value will increase. The evidence I see so far indicates that these skills are important, and that they will be even more important in the future.

As the owner of Twin Bridges Technology, a bootstrapped technology business in San Francisco, Kirk teaches Python courses for network engineers and writes about network automation at pynet.twb-tech.com. He is a long-time network engineer himself (CCIE #6243), has extensive ... View Full Bio
Comment  | 
Print  | 
More Insights
Comments
Newest First  |  Oldest First  |  Threaded View
<<   <   Page 2 / 3   >   >>
Jerome Amon
50%
50%
Jerome Amon,
User Rank: Apprentice
8/15/2014 | 8:51:00 PM
Programming: An Essential Skill For Network Engineers
Personally, I've always practiced several software development languages  (web, scripting, programming, --  C,C++,C#,WPF,JSE,JEE,Android,JavaScript,HTML/CSS,PHP,TCL,VBA,VBS,Batch, Bash,PS,JavaFx,.....) and i see its importance when i configure network equipments via the CLI or when i manage systems or when i  make a network design -- and also gives me more assurance  with the advent of SDN.

Special emphasis should now be given to the "Software Development" module in the training program of network engineers (at school).
Jerome Amon
50%
50%
Jerome Amon,
User Rank: Apprentice
8/15/2014 | 8:03:59 PM
Programming: An Essential Skill For Network Engineers
Also, in the case of software dev project that must run on a  network computing or Telecom net, a network engineer with a good skill in programming could  be suitable for  this job, for example when talking about IN -Intelligent Network, VAS - Value Added Services , ..

I have a friend (telecom & Network Engineer) who works for an IT solutions integrator, he told me that, the corporate give him almost all soft dev project which must operate on a  network, because of his high skill in programming -- he is able to write the code according to the network caracteristics.  A Network engineer with strong  programming skill gets more opportunities!
Jerome Amon
50%
50%
Jerome Amon,
User Rank: Apprentice
8/15/2014 | 8:02:39 PM
Programming: An Essential Skill For Network Engineers
Also, in the case of software dev project that must run on a  network computing or Telecom net, a network engineer with a good skill in programming could  be suitable for  this job, for example when talking about IN -Intelligent Network, VAS - Value Added Services , ..

I have a friend (telecom & Network Engineer) who works for an IT solutions integrator, he told me that, the corporate give him most soft dev project which must operate on  network, because of his high skill in programming -- he is able to write the code according to the network caracteristics.  A Network engineer with strong  programming skill gets more opportunities!
Jerome Amon
50%
50%
Jerome Amon,
User Rank: Apprentice
8/15/2014 | 7:29:48 PM
Programming: An Essential Skill For Network Engineers
Hello to all,

@ Kirk, great article.Thanks.

Programming skill was always good for a network engineer, I would say mandatory  for the success in his job. A network engineer in a task of defining a network design  for a company should consider the softs that will be used on the network and there have a good background in software development is a plus.

This is also true  in telecom domain, when we talking about design, optimization on the radio interface, some applications installed on smartphones make mostly what we call "push"   (queries update for example --) which consume  resources and has a significant impact on network performance. We consider this during development work on the radio interface; without knownledge in app soft dev, i think poor design or inadequate parameters settings can be found.
calbert234
50%
50%
calbert234,
User Rank: Apprentice
8/13/2014 | 6:47:07 PM
Re: Languages Of Choice?
I am a telecommunications tranmission engineer. I have a little knowledge of java and I will like to know which programming language will be beneficial to me. thanks
calbert234
50%
50%
calbert234,
User Rank: Apprentice
8/13/2014 | 6:32:59 PM
Programming Advice
Hello Kirk,

I am a transmission planning engineer for a telecommunications network. I will like to get some advice on which programming language will be useful to me. I have a little experience with java.
Technocrati
50%
50%
Technocrati,
User Rank: Apprentice
8/12/2014 | 7:29:29 PM
Re: Engineers Take Heed: Time to Program
@Susan     Thank you for your kind words of encouragement. I do believe I am in a decent position for the future but of course, the final mile is always the toughest.

And I surly will keep my eye out for more of Kirks' work as well as others here at Network Computing.   And I will let you know how the quest is going. : )

Have a great day and thanks again ! : )
Susan Fogarty
50%
50%
Susan Fogarty,
User Rank: Strategist
8/12/2014 | 8:54:37 AM
Re: Engineers Take Heed: Time to Program
Technocrati, thanks for your candid answer. I think a lot of us have run into similar situations, where our industries are changing dramatically and you come to a point where you really need to shift gears in order to keep growing. I think people like you, with an engineering and programming background, will be in high demand, so you are wise to educate yourself.

Kirk will be writing more blogs here on Network Computing, so please come back and let us know how your journey is shaping up :)

 
Technocrati
50%
50%
Technocrati,
User Rank: Apprentice
8/11/2014 | 9:45:31 PM
Re: Engineers Take Heed: Time to Program
Hi Susan,    Sure, it comes from years of working as an engineer and really having nothing to show for it. I am approaching mid-career and I have to ask myself, do I want to do this in my golden years ? The answer is No.   Do I have more to offer the World ?   The answer is Yes.

I should have done this years ago, but engineering became a comfort zone coupled with bosses who for the most part worked against my aims.

Now, I am ready to take my fate into my own hands, if I have to work ( which I will) I will write code.   And I can't learn it fast enough.

 

My particuliar industry uses all three to some extent so I need to come up to speed on all of them.   Might be a tall task for some, but a necessary evil for me.
Susan Fogarty
50%
50%
Susan Fogarty,
User Rank: Strategist
8/11/2014 | 9:18:17 PM
Re: Engineers Take Heed: Time to Program
Technocrati, thanks for weighing in on this topic -- it sounds like you feel pretty strongly about it. If you don't mind, would you share what made you decide to learn three programming languages all at once?
<<   <   Page 2 / 3   >   >>
Cartoon
Slideshows
Audio Interviews
Archived Audio Interviews
Jeremy Schulman, founder of Schprockits, a network automation startup operating in stealth mode, joins us to explore whether networking professionals all need to learn programming in order to remain employed.
White Papers
Register for Network Computing Newsletters
Current Issue
2014 Private Cloud Survey
2014 Private Cloud Survey
Respondents are on a roll: 53% brought their private clouds from concept to production in less than one year, and 60% ­extend their clouds across multiple datacenters. But expertise is scarce, with 51% saying acquiring skilled employees is a roadblock.
Video
Twitter Feed