I've had two main areas of interest in my IT career. Professionally, I've been a network guy. Designing, building, and supporting IP networks is what pays my bills. On the other side, I'm a Unix geek. Building, tinkering, and hacking code on Unix systems and related open source software has always been fun and challenging for me. Recently I was reflecting on my career and realized that my Unix and open source experience has played a big role in my career as a network engineer. Here's some of the ways I believe network engineers can benefit from Unix experience.

Leg up in understanding Unix-based network operating systems - From Arista's EOS to Juniper's Junos, lots of network operating systems can trace their roots back to open source Unix. Sure they all have their own CLI shell that mostly hides the hard, Unix-y center, but underneath it's still there. Being able to understand process management, memory management, file system mount points, heck, even the root user and what it's capable of gives a network engineer an immediate advantage on these OSes even though they might not have seen them before.

Scripting and automation - Part of Unix culture is being able to create scripts and bits of code to help administer a system or automate a repetitive task. Those ideals are really valuable in the networking world too. Having the ability to create scripts which help manage network devices makes a network engineer more efficient and all but eliminates the likelihood of human error. Knowledge of PERL, shell scripts and even PHP enables the creation of tools for doing bulk config changes, mass backups, and automated reporting. This enables an engineer to concentrate on high-value tasks such as building out the network rather than tedious, low-value (but still important!) tasks.

Hands-on experience with ports, packets, and protocols - Considering that Unix is a very network-centric operating system, it's very hard to learn Unix and not pick up network knowledge at the same time. Learning what a TCP/UDP port is, understanding how sockets are opened and closed, even something very simple like memorizing the TCP/UDP port number of common services (Pick a random port number and ask a Unix person what it's used for. I bet they know the answer) are all byproducts of working on Unix systems.

Most Unix systems also come with some sort of firewall software. Cutting your teeth on these firewalls can gain you valuable experience and knowledge in understanding traffic flows, writing firewall policies, and further understanding of the TCP 3-way handshake, windowing, and sequence numbers. That knowledge will help you in both managing enterprise firewall systems and talking with security/firewall teams in a language that they understand.

Lastly, since Unix boxes are able to run just about every network service under the sun β€” ftp, smtp, dns, dhcp, tftp, www, ntp, snmp, various databases, and so on β€” it's convenient (and dare I say fun??) to play with these tools and gain experience and knowledge of these services and application layer protocols. This experience is invaluable when it comes to troubleshooting issues in a production environment because you're able to understand how the service works right from the lowest network layers all the way up through the stack to the application layer. This understanding combined with firewall experience can be a killer combination when it comes to provisioning and troubleshooting.

Professional advancement - So far I've talked only about the technical and knowledge benefits of being a network engineer and Unix geek but there's a whole other aspect: career advancement. Unix experience allows you to set yourself apart from others by solving problems they can not, bringing value to your team and department by way of writing scripts and tools, and demonstrating deep understanding of ports, packets, and protocols. By standing out from the crowd you make youself more valuable to your employer which increases your job security and also your chances of promotions, raises, etc. WIN!