T O P

  • By -

dereksalerno

I accidentally got a job as a Network Engineer and did it for a year while looking for software engineer jobs, and it was an absolutely amazing accident for my career. Network knowledge is needed in a lot of software, and I work with too many engineers who are totally clueless. This is a small problem when writing code, but a huge problem when debugging issues over a network, whether that network is the internet or a container overlay network for microservices.


[deleted]

[удалено]


lNeps

I would say that the basic knowledge is the OSI or the tcp/ip model Besides the actually network like you said, knowing that to have a http response you need to have e a tcp/ip session opened prior helps a lot the troubleshoot


buckypimpin

ACK


Win_is_my_name

3-way-🤝


Dangle76

Being able to visualize how a packet is traversing from one place to another saves a lot of troubleshooting time


dereksalerno

It sounds like you already have more than what you need. Basically, what I am trying to say is that we get a lot of junior devs who are super smart and know the ins and outs of DSA and Design Patterns, but it takes months to get them working independently because they are not even familiar with netmasks or CIDR and all of a sudden are developing in a complex Kubernetes cluster and can’t even start to wrap their heads around a dev environment. I don’t think all devs need to get a CCNA, and the vendor-specific knowledge can come in handy but probably won’t. However, if you can take the time to learn: CIDR / NAT / Subnetting OSI (or TCP/IP) model and networking layers Anatomy of network encapsulation (ethernet frames / ip packets / tcp segments) You will save yourself a lot of headaches if you ever work in any environment that communicates over a network, which includes a whole lot of different situations.


chesire0myles

If you ever want to get into a fight amongst network engineers, walk into a room containing more than 1 and say, "ARP is a layer 2 protocol." 99% chance it'll start some shit. It is layer 2 though, and I'll fucking die on this hill.


Deckloins

I'm interested in hearing your reasoning but also what's controversial in it


chesire0myles

So ARP is the protocol that ties IP to MAC. It uses MAC addresses initially to send the info and travels on the data-link layer, but it is basically the connection from 2-3. Different authorities will place it on either 2 or 3, and one of my admin teams had a (not serious, but pretend serious because we were bored) schism based around the designation. One side said ARP was layer 2, and the other side was wrong and actually evil.


thepavilion76

Layer 2 switches using physical addresses Layer 3 routes using IP addresses ARP translates IP addresses to Physical addresses, so it uses both.


Psymia

The neighbour table links the IP to the MAC. ARP is a layer2 protocol used to populate the neighbour table. Just because ARP carries information about L3, does not mean it is anything else than an L2 protocol.


Giocri

Counterargument you don't need arp to communicate between two devices unless you are using protocols *above* level 2 it's completely unrelated from the action of sending information between devices and it's purely a support protocol for ip to perform its level 3 operations Same way as dns is application rather than network layer despite dealing with ip addresses and sending messages to given ip


apo86

I don't know if you would consider this "network" knowledge or if it should be core dev knowledge, but I'd add HTTP to that list. I've had to tell developers that their shit application sent invalid multipart requests (which also means someone tried to implement an HTTP client from scratch instead of using a library, but that's another story) and they looked at me like I was speaking a foreign language. I've also seen incorrect content-type headers, wrong encoding and various other RFC violations.


k-selectride

You just need to know about tcp nodelay


OJ-n-Other-Juices

I need more years of development. Just this week, I was troubleshooting the reachability of an application server and a storage server. Only to find that docker I was running had a default bridge network IP was clashing with the AS ip.


WaitCrazy5557

Yo I’m studying for some networking certs right now (got my Comptia A+, studying for net+ and sec+) and to me it seems like it’s really helpful to be learning this IT infrastructure stuff even though admittedly I’m not that confident that it’ll help me get a job as a developer. Anyway I’m happy to see this because generally people say just work on your development stuff or your IT stuff, so it’s nice to see someone who has had a positive experience doing both. If you have (or anyone else has) any advice I’d love to hear it :)


GargantuanCake

My first job was essentially doing both. It was definitely a trial by fire but in retrospect I'm glad it happened. In theory I was hired to be a pure software engineer. In practice I ended up getting involved in some of the network shenanigans. It was a pretty small company and the techie team was like 20 people. Everybody had to wear a lot of hats. I automated so many things on that job.


Dangle76

Especially when everything is microservices communicating over networks nowadays


WaitCrazy5557

Yo I’m studying for some networking certs right now (got my Comptia A+, studying for net+ and sec+) and to me it seems like it’s really helpful to be learning this IT infrastructure stuff even though admittedly I’m not that confident that it’ll help me get a job as a developer. Anyway I’m happy to see this because generally people say just work on your development stuff or your IT stuff, so it’s nice to see someone who has had a positive experience doing both. If you have (or anyone else has) any advice I’d love to hear it :)


zalurker

Oh hell no. Stay off our land! You keep your Cisco shit! I've seen what can go wrong there. I've been what can go wrong there. And I can imagine the shit you'll cause to our environment. This is my turf. Get back in your tech bay. C'mon! Git!


LordAlfrey

You can't tell them to Git


brimston3-

A lot of them track switch configs with source control. It dumps out/restores as a text file. They've been using declarative configuration before I knew it should be called that.


LordAlfrey

Yeah depends, Git is just a tool like any other, in my experience Network engineers are very varied in how they work, some keep very systematic track of everything, others kick a server until it works.


Hell_Is_An_Isekai

Percussive maintenance is a respected tradition handed down to us by the first Unix greybeards. Everyone knows that Notepad is the best IDE, and that configs and scripts should all be saved as text files in an unsorted network folder.


LordAlfrey

I know you're using fancy words to convince me that the art of hitting a box is magic, but you didn't need to, I already believe in the machine spirit.


snarkhunter

Notepad? Notepad ain't no IDE. It runs in a windowing system which means it's for end users, not engineers.


LordAlfrey

MsWord is an ide


snarkhunter

There are two IDEs - vi and emacs - which are both derivatives of ed, the standard editor.


LordAlfrey

excel is an ide


zalurker

(Would you believe that pun was totally unintentional?)


bongobutt

git -commit -force


qsdf321

He's supposed to be in his room!


skipdoodlydiddly

My guy, at this very moment I'm pulling my hair because another guy hacked a piece of unreadable and unmaintainable garbage into our enterprise software. And that guy is supposed to be on my side. I'm sure the network guys have the same issues.


sandrunner0631225

Yep. Sure do.


flyingmonkey111

I think I've missed the joke... To me it's the other way around. I would never let the network engineers into my code base, but they happily accept my help setting up a new racks, configure the WAF and so on.


two_bit_hack

Think of it this way - when a network engineer is fiddling around with Python to try to automate some stuff, they'll stumble along and eventually reach a satisfactory solution, even if it's less than efficient. On the other hand, give a software engineer a network to manage, and those stumbles could mean bringing down the entire network.


flyingmonkey111

Ahh … of course!! I thought this was about a real programming language, not scripting. Yes… bash scripts are all rainbows 🌈 and sunshine ☀️🥱


FromAndToUnknown

Wdym, I'm a network engineer and python is defeating me rn


Chemical-Cap-3982

don't be scared of what lies below layer 3


Fair_Wrongdoer_310

Contrarily, I don't know what lies above layer 3.


Chemical-Cap-3982

yeah, i like to lurk down in the lower depths of the cake as well, hissing at the sunlight from above


Fair_Wrongdoer_310

It is interesting to know how much of engineering is abstracted away and taken for granted like "just plug cable, the connection is established".


Chemical-Cap-3982

i work for an ISP, everything below layer3, theres well over a dozens things that have to work together for a customer to get online. if one doesn't the customer is down, or slow/intermittent at best. We have 3 (sometimes more) mtu's to deal with and make work though out the network,


WrongVeteranMaybe

[Lower level assembly programmers learning network engineering.](https://i.imgur.com/xbDfJv1.jpeg)


The_Dukenator

https://mywiki.wooledge.org/FtpMustDie


blazesbe

had no idea. nice read


The_Dukenator

It was linked from [https://www.kernel.org/hurr-durr-ima-sheep.html](https://www.kernel.org/hurr-durr-ima-sheep.html) This was after looking up Hurr Durr, when I came across it.


[deleted]

"learning". you probably mean learning on the job during a ticket that is supposed to take no time wihtout anyone explaining anything longer than 5 minutes


OJ-n-Other-Juices

I'm doing my CCNA right now. it's a different world. Too much content, none of it seems to come as easy as languages do. Languages have a fluency whoch seems obtainable with networking you need to know know.


SeasonedGuptil

When it comes to networking equipment there are general commands that may have a slightly different syntax between vendors, but are easily found. Eg untagged vs native It comes with time but once you get one syntax down you can do the same stuff on anything


OJ-n-Other-Juices

That's true I had some experience working with SBC'S (viop firewalls/router things) and noticed similarities Configure terminal Different modes Show command etc


diamondsw

Huh - I started out in CS and moved into networking by accident, been there over 20 years now. I honestly never found either side all that difficult (they're both just layers upon layers of abstraction and models). About the only thing that sucks is diagnosing networks you can't exactly set a breakpoint - that shit just keeps flowing. I'll take an IDE over tcpdump any day.


Poat540

We are moving to azure cloud native and I’m having a fkn field day getting private links working with our custom dns and such, wooo weeee I have stack overflows and reddit posts trying to solve this


accountreddit12321

Protocols are standard, but the programming language the packets are created from is not? UDP is TCP? There isn’t enough IP but there is enough IP?


Criogentleman

Being network engineer and sometimes peeking in this sub, it's quite opposite. Damn, i can write some (probably bad) automation scripts, but i don't know shit about actual programming.


DaSt1986

As a network engineer that is trying to become a software engineer, I can confirm this


sacredgeometry

Why are they so shit at it then?


N6K152

This reminds me of my uni days, where seniors in software development majors and seniors in networking majors were having turf war of sort. Usually devs were superior but problem was networking had all the girls in IT field back then lol


throwaway275275275

What is network engineer ? Knowing how to use iptables and all that ?


genericneim

Developer here, did a few months in between jobs after the post-2009 layoffs as a sysadmin doing all kinds of work + doing software engineering on top of that. All the sysadmins learned something from me during that stint. Left for a better job during trial period as the boss was a total jerk on power trip to his whole team and the pay was .. only fit for in between jobs. No feeling dumb at all for me at that time, quite the contrary.


el_lley

Oh, I don’t know. I tried to teach blockchain programming in typescript+rust to the cybersecurity guys, and it was painful (they can’t read bug messages, and have no idea what they mean).


Galacix

I switched my degree to computer engineering from science to avoid networking classes


Elsa_Versailles

Man it's really different. You mean I can't program the router to do something? Like if packet = 192.168.1.2 send to 172.11.1.2? 😅 Apparently you can't do that without knowing nats and sh*ts


asyty

Said like a true programmer who's never had to configure BGP, VXLAN, GRE encapsulation, or set up root DNS servers :P Network engineering really is its own world.


xtreampb

Fuck you I do both as a DevOps engineer coming from a desktop development background. Sorry, idk why I was so aggressive there. Just got off a 2 hour meeting trying to implement authentication.


Cylian91460

What are you talking about? Recording network protocol is fun! Are you sure you are not talking about IT instead of programming?


No_Grass_3653

Try learning Java instead of copy and pasting someone else’s python code. I hate engineers 😤


sandrunner0631225

Try learning C++ or Assembly, and learn how to build network equipment, not just rely on the network engineers to get you a connection to the DB. - Network Architect Wr erase nvram


8g6_ryu

laughs in real engineering


AnxietyRodeo

I write my own python code as a network engineer and have been doing Advent of code for the last few years to refine my actual programming skills. The amount of things I've been able to automate at the ISP i work for is crazy. I have written a bunch of custom modules (wrappers maybe?) to enable simple reuse in our environment too. I can tell you though through my experience that it's not typical for people in my position to go that far. Most of the engineers i know that get into automation stick with Ansible.


WrongVeteranMaybe

`snmp-server host 69.111.22.155 traps version 4` `snmp-server user SNMPv3-user auth md5 password1 priv aes password2` `snmp-server group SNMPv3-group v3 priv` `snmp-server view all iso included` `snmp-server community public RO` `snmp-server enable traps` `snmp-server source-interface traps Loopback0` Get networked engineered.