The networking industry is currently going through major changes. We are moving–or at least trying to move–from managing devices one by one via CLI to networks where we automate, be it via scripts, automation products, or software-defined solutions. What does this mean for the “modern” network engineer? What are the most important skills to have? How am I supposed to keep up with everything that is going on around me? Will I even have a job? I will provide some guidance and give you my thoughts. My strategy, which seems to be working fine so far, is to keep a balanced approach.
So… Is the network engineer going away?
Are networks going away? No, they are not. Are they in fact not increasing in size, throughput, and importance for every year that goes by? Are they not the glue of both the internet, the LAN and the WAN? Yes, they are. So obviously network engineers aren’t going away. They can’t. There will always be network engineering. What is changing? As always, not just in this era, things are changing, new technologies appear, and old ones disappear. This is nothing new. What is new is that automation, interacting with APIs, and programming are skills that may be new to a lot of us.
Knowing all of this, what skills should a network engineer have? What do I need to be successful in this field? You may be surprised but here is my list of things that will make you successful in this field. Let’s start with the “soft” skills.
Ability to write - The better you are at writing, at communicating in written form, the more successful you will be in your career. The higher you can go on the career ladder. Do you think I got to where I am today by just being good at technology? No, my communication skills are far more important. You need a combination, of course, but when you write something, always think about your audience, the intended reader, and their level of knowledge. The ability to write documentation, articles, Wiki posts or even just well-formulated e-mails is far more important than you may realize. It’s something that always stands out when you are communicating with someone.
Collaborative demeanor – You may have heard the term “busting silos”. A network engineer today must know a little about a lot. This means that you can’t be isolated in your own little bubble. You must engage, communicate, teach, and learn. All of this requires human interaction. It’s not enough any longer to be smart and stay away from other people. We can’t do it all or learn it all on our own. Many of us in technology are natural introverts. I know because I was one. That doesn’t mean we can’t change or even as in my case that you can't enjoy being more of an extrovert. It comes with experience, and as you get better at something you also start enjoying it more. But the first step is to be willing to take that leap of faith and put yourself out there.
Analytical thinking – Now, this is a skill you can’t really learn on your own. It comes with experience and knowledge, but there are still things you can do to make yourself a better engineer. When learning a technology, always understand the WHY, don’t focus too much on the HOW. Why was this technology invented? What problem does it solve? What problems does it not solve? Why does it not solve those problems? Is this technology similar to a different one? What’s different about this technology compared to this other one? Is there another way of solving this problem? Why or why not? Be curious. Always be analyzing different scenarios, their outcomes, and how you can improve a solution. Don’t gold plate, but be aware of different ways of solving a problem, and don’t think that your solution is always the best without understanding someone else’s solution first.
At this point you may be thinking, “get on with it, what are the technologies I need to know?”. I’m trying to get a message through here. A message built on a lot of experience and my own career. Don’t disregard the soft skills, they are the ones that really set you apart from your competition. OK, let’s now focus on technologies and areas where you will need expertise.
TCP/IP – You may think I’m weird for calling this out. It’s easy to forget that with all the hype of SDN, intent based networking, public cloud, our payloads still consist of UDP, TCP and IP. This is not changing. At least not anytime soon. Do NOT skip the fundamentals, not basic, knowledge that you will need to be successful in your career. Guess what, maximum segment size, MTU, TCP windowing, round trip time, fragmentation, retransmits–these are all things that matter regardless of what era we live in. This will not change with new technologies as long as we stay around using TCP/IP. Some technologies may help you a bit by auto adjusting values, but you still need to know how and why these different aspects of the protocols work.
IPv6 – We are running out of–or have already ran out, depending on geography–IPv4 addresses. This means that IPv6 is here or is coming. That doesn’t mean that IPv4 is necessarily going away. Not for a long time. However, you will need to understand IPv6. What is different compared to IPv4? How does it assign addresses? How can I get a system on v4 to communicate to a system on IPv6? How is an Android phone different compared to an iPhone? How do I implement security in IPv6? If you haven’t already you should start enabling IPv6 in parts of your network to get the operational experience that you need with this protocol. You may not need it today, but one day you will.
APIs – APIs, or better known as Application Programming Interfaces, is something that developers are intimately familiar with but that can be a bit new and scary for a network engineer. We have for a very long time focused on using CLI to interact with our devices. However, this is not very efficient. As a network engineer, you will likely not, contrary to popular belief, write code all day. However, because we are moving away from the CLI, you should build an understanding of APIs. What is Netconf? What is Restconf? What is JSON? What is XML? You should understand what an API is, what a northbound and southbound interface is, and how to interact with them. For example, with something like ACI, you can do almost everything in the GUI, but for mass implementation you will want to use APIs. Scary at first, but there are great tools like Postman to see what calls are made to the APIC, which make things a lot less scary. You can then start building your own scripts or leave it to someone with more coding experience to help you out if you can explain what APIs to consume and what parameters to set.
Coding – While I don’t agree with the popular belief that all networking engineers will be programmers, you still need to know a little coding. However, when you think about and learn coding, the most important part of coding is to start developing a programmatic way of thinking. Knowing how to take a problem, make into smaller parts that are more easily solvable, modularizing and thinking of different ways of solving the problem. This is by FAR more important than becoming a Python expert. Python is the natural language to start fiddling around in. It’s fairly easy to learn, so it doesn’t hurt to have a basic knowledge of Python, but also look into learning a bit about Git, CI and CD. Just to understand what they do and what problem they solve. However, your main focus should still be networking. Knowing a bit of coding can help you be more efficient, though, and focus on more interesting problems than, for example, to generate 100 switch configs where only the IP addressing is different.
Security – Security has gone from something that’s “nice to have” to “must have”. For the first time I’m seeing even people at an executive level understanding that security is not an option, it’s a requirement. Why are they only seeing this now? Money. It’s all about the money. When your production is down because of a crypto locker virus, what happens? Money stops flowing in. Who cares about money? Management does. So even if you are a network engineer where your main focus is not security, you should understand how to build secure systems. Think about different attack vectors, how can you protect each layer? How do you detect that someone is in your network? What do you do when you’ve been “owned”? If you took my advice above, to learn TCP/IP properly, then you’re already ahead of the game. Security is about protocols. It is also about understanding systems, applications, and their interactions. This means that you need to have that broad skillset but also expertise in a few different areas.
I’ll never be able to cover everything in a post, and maybe you feel something is missing. But if you think about what I’ve tried to communicate in this post, you’ll have a very strong foundation for becoming and staying a relevant network engineer also for years to come. Thanks for reading!