Will Network Engineers Become Programmers?

I know numerous engineers who decided to pursue a career in networking because they didn’t want to deep-dive into programming. Will that change when the Software Defined Everything takes over the world?

TL&DR summary: Of course not.

Making a networking expert a reluctant (and potentially bad) programmer makes as much sense as over-promoting him and making him a suboptimal boss (some people, myself included, just aren’t good at managing others).

If you need a custom-tailored network automation solution, pair a networking expert (who knows what needs to be done) with someone with programming skills who can translate those needs into running code – the networking expert becomes just another subject-matter expert (SME) working with the programmers to document the business needs (of networking department).

Will the networking expert become part of the programming team? It depends. For large projects it probably makes sense to embed experts with networking skills into programming teams, for longer-term low-intensity development projects you might add a programmer or two to your networking team, or merge development and operations.

Regardless of the approach you take, remember that you should treat the network automation tools like any other mission-critical application – the network automation requirements have to be properly documented, the project prioritized, and executed using the regular project management and quality assurance tools to ensure you get what you asked for in reasonable timeframe (internal IT projects tend to stay in indefinite limbo as everyone works on more important immediate problems).

On the other hand, if you’re a generalist working in a small shop, then it’s high time you get acquainted with the automation tools, and learn a bit of programming – once you master scripting, your life becomes easier on multiple fronts, including desktops, servers, operating systems, virtualization, and eventually networking.

Jason Edelman published a blog post focusing on the same dilemma a few days ago. Definitely worth reading.

12 comments:

  1. Though network engineers need not learn to program in the language of
    the machine (c, c++), I guess it will be useful to program in the language of the
    domain that provides high-level objects and APIs specific to the domain (python as of
    today).

    Another interesting recent trend seen especially in the datacenter world is where network engineers are themselves adding features onto network boxes that allow them to do so, using very minimal programming effort.
    https://www.nanog.org/sites/default/files/wednesday_general_field_openrouter_39.pdf

    --
    -Thejas
  2. Ivan, thanks for the mention. You bring up good points on being a generalist at a small shop or embedding experts at the larger shops, etc. On a related note, Najam Ahmad (Facebook) recently talked about what they are doing these days and mentioned they are doing internal pairing between teams, essentially pairing up a network engineer with a software developer to better understand what each does and to ensure there is some level of cross-training going on. And of course, it helps the network engineer articulate requirements better too. It's also worth noting they have a dedicated software team for networking! Different size, diff requirements, and you paint a good picture for the Enterprise to Commercial segments.
  3. There is a symmetric question - will programmers become the network engineers ;)
    Replies
    1. They should - at least to a CCNA-like level (without the router configs and other garbage, of course).
    2. Petr: For hiring, we look for good programmers first, that have at least minimum understanding of networking. We think, that should be ok, as their mindset allows them to learn network engineering topics fast.
      Just think of the abstractions of OpenFlow, or the OpenDaylight northbound API. They do that for breakfast...
  4. We already are programmers and have always been. The languages we speak are IPv4, IPv6, OSPF, IS-IS, MP-BGP, MPLS, Cisco IOS variants, Junos, the list goes on; basically all the cool stuff that actually moves data from box to box around the web. Networks have always been "software defined." Will some abstraction layer swallow us all up? Perhaps someday, but Openflow and ACI/OnePK/whateverCiscoiscallingit have yet to show me anything that makes me fear becoming obsolete.
    Replies
    1. The only language you've highlighted is Cisco's proprietary IOS, hence not much use to you outside of an all Cisco environment, everything else you mention appears to be a 'protocol' many of which are dynamic in nature. So while you are right that networks have always been defined by software, you've missed the point behind Open Networks.
    2. Network Engineers are more Architects, Project Managers and Problem Solvers. They are the USERS of the Network. Do they need to write low-level codes like C and others? To some extent yes, but do they have to become programmers?
      That's like saying 30 years ago that all accountants should become programmers!!!
      Does Windows and MAC users have to write code?
      It's the age of Software Stores! If you have a need, you purchase a ready-made software.
      Will small businesses and enterprises hire "network programmers" while they can purchase off-the-shelf solutions? That's like getting back to the 80's!!!
      Network Engineers will always remain the USERS (Admins) of the Network Infrastructure.
    3. Network Engineers are more Architects, Project Managers and Problem Solvers. They are the USERS of the Network. Do they need to write low-level codes like C and others? To some extent yes, but do they have to become programmers?
      That's like saying 30 years ago that all accountants should become programmers!!!
      Does Windows and MAC users have to write code?
      It's the age of Software Stores! If you have a need, you purchase a ready-made software.
      Will small businesses and enterprises hire "network programmers" while they can purchase off-the-shelf solutions? That's like getting back to the 80's!!!
      Network Engineers will always remain the USERS (Admins) of the Network Infrastructure.
  5. I agree with Jeff, in one manner the IOS or various network OS's of our platforms are the scripting languages. I used to do some ASAM or C level libnet network related programming but for special cases. I agree that mastering a scripting language does help as I am working on python myself. We also do work with automation tools in some ways, the Cisco works, prime, or IPAM systems etc. We have to know protocols cold, the specs and standards which when teamed with a solid coder provides great value. I remember when the snmp revolution was suppose to automate and control everything but you can do so much with ASN. And I second Jeff's last sentence for us experienced veterans we learned one major important, evaluate, wait and select what NOT to learn.

    Example, I didn't bother with ATM outside of certification knowledge or one or 2 installs but that was it. remember when ATM was going to take over the world...

    So I will read up on it, maybe play a bit with OF but not dive into it until things settle down, mature a bit.
  6. I come from the other side. I'm a programmer who works on network related software. Agree we need to also learn networking. Your comment "at least to a CCNA-like level (without the router configs and other garbage, of course)" seems like a good balance. Also info sources like your blog are a big help.
  7. Remember that SDN is just another marketing hype so that Cisco and other vendors can sell products and meet quarterly earnings for their stock. Realistically since this is the new buzz word, everyone is going to push in that direction. Ultimately a lot of network engineers like myself who have no interest whatsoever in being a programmer will have to change careers and go in real estate or whatever makes real money since most of these jobs will be outsourced to India for $2.50/hr since they can do both bad networking and bad programming at the same time.
Add comment
Sidebar