Interview – Interview with Mr. NAPALM David Barroso

Posted by

Hi David Barroso,

Welcome to Networkcareer!

Where do you work and what’s your role?

Hi, I am a network systems engineer at Fastly. For those who never heard of Fastly before, Fastly is the CDN of choice for services like Github, Twitter, Vimeo, Reddit and many others and as such we operate one of the largest global networks out there. As you can imagine having customers like those and having the Internet as our main theater of operations comes with many challenges so my roles at Fastly are two; on one side ensure POPs can be deployed and operated consistently at scale with little or no human intervention at all and, on the other hand, I am also part of the team architecting our customized control plane.

What kind of roles and work did you do before arriving at Fastly?

I started my career many years ago at a small company that provided professional services. There I would basically do whatever was needed; go to the datacenter and rack equipment, install and configure an Active Directory, build a load balancer with keepalived or lvs, configure a LAMP stack, Tomcat, manage Windows, Linux, HP/UX… you name it. Gosh, I even had to deal with Oracle RAC (disclaimer: I had no idea what I was doing most of the time). Then I started shifting more towards a network engineering role and started getting my hands dirty with perl and expect to solve some compliance tasks (is this ACL configured? is this IP properly filtered? etc.). Later I started fiddling with python as I was trying to migrate our customers’ inventory from our internal wiki to django and even automated some provisioning tasks.

Then I moved onto a network engineer role at NTT where I was designing and building datacenters networks across Europe. I even got to deploy an openflow network back when it was openflow 1.1. Don’t ask me about that, I have been through hypnosis trying to forget. And then, right before Fastly I was a network engineer at Spotify where I had the opportunity of starting the NAPALM project and hacking switches to turn them into edge routers.

What have you learned in your career so far that you would like to tell the younger you?

Learn how to sit properly before it’s too late or get yourself a standup desk. Jokes aside, when I landed my first job in the IT world I was merely 20 and I was still in college. The company was quite new and we were in total around 7 engineers. The company grew quite fast and at the age of 24 I wasn’t done with college yet but I was already leading a team of 7 people. That didn’t end well, I was far too young and inexperienced to lead a team where I was in fact the youngest member. After a while we decided that I should step down and become and individual contributor again so I moved to a developer role where I started working on building a django app to manage our inventory and even automate some simple tasks like vlan provisioning. This was around 2010 and as you can imagine that experience I got by pure chance as a python developer came quite in handy later on in my career.

In summary, don’t be afraid of change. There is always a lesson to learn and even poor decisions can lead to great things so try to get the most of any situation regardless of how shitty it looks like.

What are the most important skills you have picked up in your career so far?

To not rely solely on recipes. Best practices and recipes are great, don’t get me wrong, but they should be taken as guidelines not as ultimate truths. Also, combining different areas of technology to build a solution to a specific problem. Having the possibility to fix a problem in the right tier instead of being limited to only the network tier has become the most useful skill so far.

What’s your opinion on degrees? Are they useful for someone in the networking industry?

It depends. I think our industry has a problem with titles; they have completely lost their meaning and value. It’s interesting to talk with people with titles like senior something engineer or something architect that don’t have a basic understanding of first order logic, finite state machines or don’t even know what an interruption or a file descriptor is. So if you got that sort of knowledge without attending college it’s completely fine by me, I don’t care about titles/degrees/certifications, I have met many brilliant engineers without a degree that knew stuff like that way better than people with a degree but I still think mathematics and computer/OS architecture are important for engineers.

So, if we were to classify people into technicians and engineers I’d say that for technicians there is no need to hold a degree if they don’t plan to advance in their careers but for engineers I’d say that, although I don’t think degrees are valuable per se, I think the fundamentals you learn are.

What about certifications? Are they losing their value?

When I was at NTT I was preparing for my CCIE, I had passed the written exam and I had studied for the lab for a year or so when I decided to accept a job offer from Spotify and move to Stockholm. The whole thing of changing jobs and moving to a different country made me stop preparing for a few months and by the time I had settled in and had time to study again I realized how irrelevant the CCIE was for my current position so I decided to stop preparing for it and focused on other skills like python, devops and linux as a whole which I hadn’t been working on that much since I moved to NTT. The thing is that when you move to certain type of networks knobs are forbidden for many reasons; for example, you may need a dual vendor strategy to drive down prices and simplicity might be preferred over complexity in order to speed up deployments and simplify operations. So certifications, which mostly focus on knobs, become quite a waste of time. There is some theory as well in certifications, true, but there are probably better ways to learn that theory.

Is the skillset of network engineers changing? What skills are important to have in the coming years?

As always, it depends, but as a rule of thumb I think the network engineer is going to have a similar evolution to the one that system administrators had a few years ago. Back in the day you had people that knew all configuration knobs for tomcat, other people that knew every single directive of apache, etc… Nowadays, you have instead, SRE teams where expertise is usually broader in terms of applications and maybe not as deep but they all have good understanding on how to operate linux, a programming language or two and what tooling is there for things like configuration management, syslog collection and analysis, key-value stores, etc… They also have a good idea of what can be done although maybe without knowing specifically how to do it. The thing is there is no point on trying to remember every single directive of every available in-memory database if you understand the problem you are trying to solve, you can always rely on documentation and IRC/slack/mailing lists for obscure knobs/configurations.

So if I had to guess I’d say that network engineers in the future will have a good understanding of network fundamentals from the physical layer up to the application layer, some degree of expertise in some of the most common network protocols like BGP/IS-IS/OSPF or LACP and then some knowledge that would overlap with the SRE skillset I described above. I want to believe that in the future we will have a better understanding of things as a whole and we will leave the pointless trivia where it belongs; the documentation 😉

What skills are important for Network Architects?

Well, the figure of the network architect is a bit ambiguous in my opinion. I have worked with network architects that knew everything about the physical layer; optics, distances, waves, muxers, etc. and had no idea how things worked from the L2 upwards. Other network architects I have worked with could probably recite half the RFCs for MPLS but wouldn’t probably be able to distinguish a SMF from a MMF. In some other cases the network architect was mostly a sort of project manager promoted from a network engineering background. My point is that it’s hard to generalize but I think the network architect in the future might look more like what some companies call a [technical] product manager gathering requirements from the business and giving them to engineering to build a solution or for some bigger shops maybe a protocol designer or the traditional physical layer designer.

Regardless of if you are working on the physical or the logical layer or what protocols are your bread and butter, what’s clear is that architects will require a better understanding of how software works. Not necessarily be a programmer but understand the different API types, structured data vs non-structured data, what data can you tap into and/or manipulate yourself programmatically, etc. as this type of questions will be required to be properly answered by vendors as we pick the right hardware or software to solve a particular problem.

Will the need for networking experts go away? Is it better to be a generalist than an expert?

I don’t think it will go away but I think the concept of an expert will probably change. Nowadays an expert is someone with a CCIE, someone that knows how to do something as “useful” as redistribute EIGRP into BGP and then into OSPF and then back into EIGRP without causing a routing loop. That will probably change and a network expert will someone that knows how to build networks that can be easily operated and that scale. For most shops my guess is that person will look more like a generalist with a strong networking background; someone that can easily build an ELK stack, start sending logs to it and fix the network based on events. You will still need to know how networks work to be there but your concern would probably be in the most common use case rather than on the obscure one that requires you to know that exact one knob.

What do you think of soft skills? Do we need them in the networking industry? If so, which ones are the most important?

I think all of them are important and more relevant than ever. Long gone are the days where silos were effective and you could do your job hiding in your corner with little interaction with the rest of the organization. This new world of clouds, devops, orchestration, etc. requires of interdepartmental collaboration and even if you are not still there chances are that you could greatly benefit of other people’s expertise as you try to wrap your head around all the new tooling necessary to be effective at your job.

With SDN, orchestration etc. can we throw the “traditional” networking knowledge out the window? Why or why not?

Aren’t we past SDN yet? It’s been ~10 years since people started talking about SDN and ethernet is still ethernet and IP is still IP. We are certainly building networks differently (l2 vs l3, mpls vs vxlan , centralized vs distributed firewalls/load balancers) but the OSI model is still pretty much there and the fundamental protocols of each layer haven’t changed much and won’t suffer dramatic changes in the foreseeable future. If things were easier to change we wouldn’t be trying to bypass L3 and L4 limitations with things like QUIC or segment routing for example.

Should someone in the networking industry learn to code? Why or why not? What is your language of choice?

I think people needs to get comfortable writing scripts and using libraries. No need to become a full time developer but solving simple problems with a script should be second nature for most. Lots of tasks can easily be solved more reliably and faster with a few lines of code. Even tasks that are not to be done many times can benefit of the consistency of being solved with code when you are dealing with large amount of data. Imagine having to add a circuit ID to the description of your interfaces. This might be a one-time task but if you start copy pasting and handcrafting the configuration chances are you will end up messing up some interface description. With code it should be quite easy to do reliably and would even allow you to run again in the case you detect some circuit IDs in your CSV file were wrong or missing. I mostly write in python due to the speed of development and flexibility but I also write some golang where efficiency matters.

What’s your best advice for staying updated in the networking industry? How do you stop the sipping from the firehose?

I think attending conferences or at least watching the recordings is a good way of seeing what other people is doing and getting ideas of your own. Other than that twitter and independent blogs are also good sources of information if you follow the right people. Just make sure you follow people that knows what they are talking about and that are diverse enough so you can get different ideas.

Before we close out. What would you want to give as a final piece of advice to the NC readers?

Get involved with the community. One of the things that made a difference for me was working with NAPALM. I have learnt a lot working with many different people from many different organizations; seeing how they write code, how they test things, which tools they use, etc. It’s been certainly a great way of learning. So I’d encourage people to find an open source project they think it’s interesting and try to lend a hand, you will learn new tooling, new tricks and you will build yourself a network of contacts and a reputation that might be the key to land that new job you might or might not be looking for. And if you are a complete newbie, don’t worry, most communities are quite friendly and will gladly help getting you up to speed if you ask nicely 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax