How much do I need to know about Networks as a SWE?
Posted by H1Eagle@reddit | learnprogramming | View on Reddit | 8 comments
I was just wondering, do I really need to study things like Topologies, OSI Layers, LANs and WANs, the different protocols like VoIP, HTTP, TCP and understand them on a fundamental level if I'm aiming for a junior SWE position?
I'm currently a 3rd year CS student and I'm aiming for a job in Web or Mobile development and as you know CS degrees are pretty general and theoretical so I'm not really sure what courses I should focus and dive deep in vs which courses I should just aim for passing in. Currently I'm enrolled in Networking class that is based on CCNA1.
I'm just looking for guidance over which topics I should focus on.
mlitchard@reddit
When I was in school I asked my teacher which part of the kernel was most like a user space application, because that’s where I would start if exploring the kernel, he said the network stack. Do you want to just get by or distinguish yourself in a competitive field?
HashDefTrueFalse@reddit
For a junior web dev job you would ideally know the OSI model, roughly how traffic travels over networks, a bit about IP addressing and TCP/UDP, a bit about HTTP message structure, headers, content and error codes, what a router does and the difference between LAN/WAN, and a bit about domains and DNS. You won't be expected to know most of these in depth, but you should know enough to understand that you can't send people links to localhost or give someone outside of your network 192.168... address. :D
H1Eagle@reddit (OP)
I understand, can you give me an example of when I might need to know about the OSI model? Like for example, a problem you had that you needed to know this to pass through or something along these lines
HashDefTrueFalse@reddit
It's mostly just useful for context. If you're not getting anything back from a service you're developing: is it app layer? (hung, IO/CPU bound because of some dodgy code), is it transport layer (do you even have a TCP connection to the remote server? Has the remote just not responded? etc.), is it lower? (firewall/filter? Are you on a different network, or is something unplugged/not configured properly? etc.) Same with name resolution etc.
You won't actually speak in terms of the OSI model often, it's just about knowing how the data gets pushed around, where the boundaries are, what symptoms go with problems at different conceptual "layers". You most probably aren't deploying things manually as a junior. If you deploy at all you'll probably push a button in some pipeline set up for you by someone else.
It's just very useful to know how users access your product. Seniors would rather not give the "this is how the internet works" talk to juniors if it can be avoided. "What's a net mask?" Etc.
(The GNU inetutils and similar are good for looking up info quickly. Playing with those to interrogate your own network is a good way to start learning about how things all fit together IMO)
OpportunityThin5118@reddit
Nah, you don’t need to be a networking guru for a junior SWE role. Nobody’s gonna ask you to recite the 7 layers of the OSI model in a web/mobile dev interview.
That said, having a basic mental model helps: • Know what HTTP is (and what those 404/500 codes mean). • Get the difference between TCP (reliable) and UDP (fast but lossy). • Understand that data goes through “layers” before hitting the server, even if you don’t remember which layer is which.
Stuff like LAN/WAN topologies or VoIP? Honestly, just learn enough to pass the class. That’s more “network engineer” land than SWE.
Where you really wanna put your energy if you’re going SWE: • Data structures & algorithms (still matter for interviews). • Databases & SQL (you’ll touch these constantly). • OS basics (threads, memory, concurrency). • Writing clean code, testing, and version control.
Think of networking knowledge like car mechanics: you don’t need to rebuild an engine, but it helps to know why your car dies when you forget to fill it with gas.
So yeah — don’t stress CCNA-level detail. Learn just enough networking to not be lost when debugging an API call, and focus the rest of your energy on SWE fundamentals.
H1Eagle@reddit (OP)
Do you think DS&A matters outside of interviews?
Plus, how deep should I go into SQL if ORMs exist? Even though I took my first Database course a year ago I haven't written a single Raw SQL statement since then, I always just use Prisma or SQLAlchemy.
ehr1c@reddit
ORMs exist but a) the solution you're working on may not necessarily use one for whatever reason, and b) there will almost certainly come a time when you need to write raw SQL to directly query a database while debugging/troubleshooting an issue.
Happy_Breakfast7965@reddit
You should know high-level about OSI levels and TCP/IP.
You should definitely know HTTP well.
You should know high-level about differences between HTTP v2 and v3.
But you don't have to study it all upfront. Just learn as you go. When you have a task relevant to a topic, do a research.