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:
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.
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.
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.
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.
MORE INSIGHTS
Comments
alison.diana
User Rank: Apprentice
Mon, 08/11/2014 - 07:53
Languages Of Choice?
Other than Python (given your admitted vested interest!), what other language or languages should programmers learn today?
- Log in or Register to post comments
marciasavage
User Rank: Strategist
Mon, 08/11/2014 - 08:17
Network Computing
User Rank: Apprentice
Wed, 08/13/2014 - 14:47
Network Computing
User Rank: Apprentice
Sat, 08/16/2014 - 12:32
Re: Languages Of Choice?
hello Calbert234,
In my job, we often work with transmission team, and i've remarked how SDN will impact this part of telecom network, more and more telecom vendors propose SDN solutions.
When we see how the number of BTS, NodeB, eNodeB... increase quickly, how the traffic flow coming from many technologies (xdsl,fr,atm,mpls,vpls,wimax,2G,3G,4G...) increase, backhaul all that with some constraints or propose a transmission path become more and more complex.
In my job, we often work with transmission team, and i've remarked how SDN will impact this part of telecom network, more and more telecom vendors propose SDN solutions.
When we see how the number of BTS, NodeB, eNodeB... increase quickly, how the traffic flow coming from many technologies (xdsl,fr,atm,mpls,vpls,wimax,2G,3G,4G...) increase, backhaul all that with some constraints or propose a transmission path become more and more complex.
Network Computing
User Rank: Apprentice
Sat, 08/16/2014 - 12:36
Re: Languages Of Choice?
So,
what i can suggest you, is to increase upon your skills in java, learn
and pratice C/C++, python, ruby, perl -- if i must propose high level
languages; but notice that it also depends of the vendor, so try to get
more information about their SDN solution. (what are the suitable
programming languages to program their equipments)
And, work generally to increase upon your algorithms skill.
Please, try also this link : http://yuba.stanford.edu/~casado/of-sw.html
Thanks!
And, work generally to increase upon your algorithms skill.
Please, try also this link : http://yuba.stanford.edu/~casado/of-sw.html
Thanks!
Network Computing
User Rank: Apprentice
Mon, 08/11/2014 - 08:21
Re: Languages Of Choice?
For
Network Engineers, I recommend that you become somewhat proficient in
one language (as opposed to trying to learn several). For that
language, I would choose something that is high-level and that has a
large active community (and consequently has a broad set of libraries
available). I would also probably pick a language where you can start
being productive with it pretty quickly. For these reasons, I think
Ruby and Python are good choices.
Network Computing
User Rank: Apprentice
Mon, 08/11/2014 - 16:44
Engineers Take Heed: Time to Program
An
excellent and timely subject for sure. And I could not agree more
with the message. Engineers need to be able to program or at least
understand code when they come across it. I have been an engineer for
years and at no time do I take the idea of improving my programming
skills more importantly than I do now.
I am working like crazy to
make up for years of mis-guided effort. I am learning C#, C and Python
currently and my goal is to be proficient in all of the above by the end
of the year.
Ultimately I may just program mainly, but first things first - I have to learn how.
Network Computing
User Rank: Apprentice
Mon, 08/11/2014 - 17:18
Network Computing
User Rank: Apprentice
Mon, 08/11/2014 - 17:45
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.
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.
Network Computing
User Rank: Apprentice
Tue, 08/12/2014 - 04:54
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 :)
Kirk will be writing more blogs here on Network Computing, so please come back and let us know how your journey is shaping up :)
Network Computing
User Rank: Apprentice
Tue, 08/12/2014 - 15:29
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 ! : )
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 ! : )
Network Computing
User Rank: Apprentice
Sun, 12/07/2014 - 15:30
Re: Engineers Take Heed: Time to Program
First
if a network engineer needs to use a General Purpose Programing
language for configuration of a router/switch/loadbalancer/firewall etc
or even create network based app.
THEY MUST BEGIN WITH C, to get a strong foundation. Without this, just forget it. You will not be a strong programmer. Many advocate that C is not required including Brajne Stroustrope, dont listent to him and one can jump direct to OOP, many a times they are like CCIE certified with CCNA knowedge.
Please learn C and UNIX Internals. Thats the trick to mastering C. Do not skip pointers in C. Without mastering pointers, there is no use of learning C, just learn FOTRAN which can do all what C can do except Pointers/anon acccess
Then they must progress to OOPS/OOAD concepts and master the concepts.. Once C is completed and OOPS concepts are understoond, you can progress to Core Java coding and/or Python C++ simultaneous.
Once C , C++ and Core+Adv Java is understood. Then any programming langauage is easy.
Think C as the N+ and CCNA which are the fundamentals.
DO NOT DIRECTLY JUMP TO JAVA or PYTHON, albeit you can and many do and are also encouraged. Do not listen to them.
Appears hard, but really not. I am Network Architect 2xCCIE. Trust me programming is much easier and systems programming is easier too.
Many ask which is the one best programming lang to learn. Should I do C or can I directly learn Java, python or C#. Sorry must build your foundataion from C, dont worry you dont need to learn any assembly languages. Just the C compilation knowledge will make you understand assembly code.
Maybe for IoT, for the embedded devices you need to understand the assembly code but there is usually a C or CPP complier designed for it. Some parts which C cannot program, just get the intermediate file which is complation process produces and add the small piece of code of the assembly and send it to LD/linking loading for the complete program. Also many still use C for embeded devices since its super fast and compact. C++ is also popular with lots of bound checks and intelligent compliers. However C is still used.
But for network enterprise app, you would typically use Java/Python since its easier for larger programs due to objet oriented approach. Only realtime sys app use C,C++ or assembly.
Learn atleast 3 languages C/C++, Java, Python . Not to forget databases.
THEY MUST BEGIN WITH C, to get a strong foundation. Without this, just forget it. You will not be a strong programmer. Many advocate that C is not required including Brajne Stroustrope, dont listent to him and one can jump direct to OOP, many a times they are like CCIE certified with CCNA knowedge.
Please learn C and UNIX Internals. Thats the trick to mastering C. Do not skip pointers in C. Without mastering pointers, there is no use of learning C, just learn FOTRAN which can do all what C can do except Pointers/anon acccess
Then they must progress to OOPS/OOAD concepts and master the concepts.. Once C is completed and OOPS concepts are understoond, you can progress to Core Java coding and/or Python C++ simultaneous.
Once C , C++ and Core+Adv Java is understood. Then any programming langauage is easy.
Think C as the N+ and CCNA which are the fundamentals.
DO NOT DIRECTLY JUMP TO JAVA or PYTHON, albeit you can and many do and are also encouraged. Do not listen to them.
Appears hard, but really not. I am Network Architect 2xCCIE. Trust me programming is much easier and systems programming is easier too.
Many ask which is the one best programming lang to learn. Should I do C or can I directly learn Java, python or C#. Sorry must build your foundataion from C, dont worry you dont need to learn any assembly languages. Just the C compilation knowledge will make you understand assembly code.
Maybe for IoT, for the embedded devices you need to understand the assembly code but there is usually a C or CPP complier designed for it. Some parts which C cannot program, just get the intermediate file which is complation process produces and add the small piece of code of the assembly and send it to LD/linking loading for the complete program. Also many still use C for embeded devices since its super fast and compact. C++ is also popular with lots of bound checks and intelligent compliers. However C is still used.
But for network enterprise app, you would typically use Java/Python since its easier for larger programs due to objet oriented approach. Only realtime sys app use C,C++ or assembly.
Learn atleast 3 languages C/C++, Java, Python . Not to forget databases.
Network Computing
User Rank: Apprentice
Sun, 12/28/2014 - 17:10
Re: Engineers Take Heed: Time to Program
Sam,
Interesting Post.---i'm pretty new to the field ( 3-1/2 yrs) with a CCNP ( route/switch)-...currently working on the CCNA-Voice because of my current job. I figured that Engineers would need to step-up and learn skills outside of their-"Box"...so I've been looking everywhere for advise on how to start programming ( what to learn ,first); and so many people stated to start with Java and or Python ...and to pretty much forget about C, but not really saying why???? I actually remember reading a comment someone made stating that C is "Pretty Much obsolete"
--Pardon my ignorance, i know nothing about programming... but is that true??.----Anyway... you were the FIRST person that stated to Start with C in order build a foundation...completely against what the masses say ; and provided to what seemed like a valid explanation. I dunno about anyone else but to me, that says-something.
---Since i'm new to programming and pretty much all languages look the same to me..( DIFFICULT)..i'm also very thankful that you compared the C-language with N+ / CCNA.---I didn't want to start at a level that i wasn't' ready for; I've seen so many ppl skip the "101-courses" for a given-topic and struggle because the foundation is no where to be found.--thanks again.
Interesting Post.---i'm pretty new to the field ( 3-1/2 yrs) with a CCNP ( route/switch)-...currently working on the CCNA-Voice because of my current job. I figured that Engineers would need to step-up and learn skills outside of their-"Box"...so I've been looking everywhere for advise on how to start programming ( what to learn ,first); and so many people stated to start with Java and or Python ...and to pretty much forget about C, but not really saying why???? I actually remember reading a comment someone made stating that C is "Pretty Much obsolete"
--Pardon my ignorance, i know nothing about programming... but is that true??.----Anyway... you were the FIRST person that stated to Start with C in order build a foundation...completely against what the masses say ; and provided to what seemed like a valid explanation. I dunno about anyone else but to me, that says-something.
---Since i'm new to programming and pretty much all languages look the same to me..( DIFFICULT)..i'm also very thankful that you compared the C-language with N+ / CCNA.---I didn't want to start at a level that i wasn't' ready for; I've seen so many ppl skip the "101-courses" for a given-topic and struggle because the foundation is no where to be found.--thanks again.
Network Computing
User Rank: Apprentice
Tue, 08/26/2014 - 17:52
Re: Engineers Take Heed: Time to Program
"I am learning C#, C and Python currently and my goal is to be proficient in all of the above by the end of the year."
You're brave! Seems like you could get the same effect by just sticking forks in your head for a few hours... ;-) My vote would be to try and pick one language and get good at it, rather than spreading your effort (and focus) across multiples. But perhaps that's just me!
You're brave! Seems like you could get the same effect by just sticking forks in your head for a few hours... ;-) My vote would be to try and pick one language and get good at it, rather than spreading your effort (and focus) across multiples. But perhaps that's just me!
Network Computing
User Rank: Apprentice
Fri, 08/29/2014 - 15:05
Re: Engineers Take Heed: Time to Program
Hello,
@ jgherbert, good, i think it's clear now that network engineer need also to have skill in soft programming in order to survive! but now, don't you think that soft developper need also to renew their skills into networking?
Learn many programming languages is very good and could help because you can choose the appropriate for a specific task based on some criteria (number of code to write, power, platform supported, ...)
But i believe that fundemental in order to be confortable is to learn the differents concepts of programming, developp algorithms reflex , modeling methods ... Doing this will help when learning the language. For a task, have a program writen in Python and another into C, your understanding of programming concept will help you in the structure.
thanks
@ jgherbert, good, i think it's clear now that network engineer need also to have skill in soft programming in order to survive! but now, don't you think that soft developper need also to renew their skills into networking?
Learn many programming languages is very good and could help because you can choose the appropriate for a specific task based on some criteria (number of code to write, power, platform supported, ...)
But i believe that fundemental in order to be confortable is to learn the differents concepts of programming, developp algorithms reflex , modeling methods ... Doing this will help when learning the language. For a task, have a program writen in Python and another into C, your understanding of programming concept will help you in the structure.
thanks
Network Computing
User Rank: Apprentice
Wed, 08/13/2014 - 14:32
Network Computing
User Rank: Apprentice
Fri, 08/15/2014 - 15:29
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.
@ 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.
Network Computing
User Rank: Apprentice
Fri, 08/15/2014 - 16:02
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!
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!
Network Computing
User Rank: Apprentice
Fri, 08/15/2014 - 16:03
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!
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!
Network Computing
User Rank: Apprentice
Fri, 08/15/2014 - 16:51
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).
Special emphasis should now be given to the "Software Development" module in the training program of network engineers (at school).
Network Computing
User Rank: Apprentice
Fri, 08/15/2014 - 16:53
Network Computing
User Rank: Apprentice
Tue, 08/26/2014 - 18:00
Re: Software engineer & Cloud computing
"I
also believe that, it's now a need for a software developer, to have a
very strong skill into network computing -- Having regard to the
furture of cloud computing."
This has been the case for many years now; software developers have needed an understanding of the network on which their software will run - and that was before the cloud was even a thing. Many a good application has been ruined by testing it exclusively on a LAN. It is though even more critical now than it ever was...
This has been the case for many years now; software developers have needed an understanding of the network on which their software will run - and that was before the cloud was even a thing. Many a good application has been ruined by testing it exclusively on a LAN. It is though even more critical now than it ever was...
Network Computing
User Rank: Apprentice
Tue, 08/26/2014 - 18:07
Scripting versus Programming
One
thing that I think is often confused - or at least glosed over - when
this subject comes up is the difference between Scripting and
Programming.
I am a scripter. I might use Python, Perl, bash, VB.Net or something else, but the fact remains that I do not consider myself to be a programmer. I don't want to have a career as a programmer; if I did, I'd have chosen that career earlier in life. What I do want though is the ability to automate tasks, or at least to understand the mechanisms and algorithms necessary to automate. The ability to write scripts to automate processing, analysis of data, querying of switches and so forth has been essential to my job as a network engineer for many years, and now that network devices are offering some more computer-friendly non-screen-scraping interfaces to us, my ability to script now includes the ability to more reliably and effectively manipulate those devices. Hoorah.
Does that make me NetOps? I dunno.
I am a scripter. I might use Python, Perl, bash, VB.Net or something else, but the fact remains that I do not consider myself to be a programmer. I don't want to have a career as a programmer; if I did, I'd have chosen that career earlier in life. What I do want though is the ability to automate tasks, or at least to understand the mechanisms and algorithms necessary to automate. The ability to write scripts to automate processing, analysis of data, querying of switches and so forth has been essential to my job as a network engineer for many years, and now that network devices are offering some more computer-friendly non-screen-scraping interfaces to us, my ability to script now includes the ability to more reliably and effectively manipulate those devices. Hoorah.
Does that make me NetOps? I dunno.
marciasavage
User Rank: Strategist
Wed, 08/27/2014 - 08:15
Network Computing
User Rank: Apprentice
Wed, 08/27/2014 - 17:41
Re: Scripting versus Programming
I
suspect that as with most things, there will be opportunities to apply
scripting/programming skills at a variety of levels. There's no question
though that the more understanding you have of programming logic, the
easier you're likely to find the next generation data centers. Of
course, not everybody's going to adopt that new paradigm, and even for
those that do, there's going to be a fairly long migration period until
all our "old" (i.e. current) methods are pushed out the window.
Network Computing
User Rank: Apprentice
Tue, 09/02/2014 - 13:19
On scripting versus programming...some of this comes down to definition of terms. I view scripting as being a subset of programming. My definition of scripting would be a type of programming whereby you are writing small self-contained programs that accomplish specific needed tasks.
I agree, however, that writing scripts is not new for many good network engineers. That many network engineers have been doing this for a long time.
I don't think it is all that worthwhile of talking about whether network engineers are programmers or not. It is more important to ask what skills you need to do your job well and how much programming that entails (if any).
There also has been some recent discussions on whether "scripting" scales or not (Greg Ferro had a recent article on this). Personally, I don't think this is a good way to frame the issue. We know programming scales...so a more useful question is what characteristics do you need to have to make your programming scale (or to make your programs maintainable). This is more valuable than saying a certain type of programming doesn't scale.
I also agree with John that migration periods take a long time...i.e. the old methods are not going away anytime soon. These kinds of transistions are going to play out over many many years. I also don't necessarily see it as an either-or function (i.e. programming or CLI); I view of it more of an 'and' function (programming and CLI). Just as the rise of automation in the server world has not eliminated the 'bash' shell.