r/C_Programming • u/Roronoa-Ryuma-Zoro • 7d ago
What should I do ? (Begginer help)
I'm currently in my second year of college, and I'm a little confused about what career direction I should take.
The part of programming I enjoy the most is lower-level/system-side work. I started with C and socket programming, building servers and learning how TCP/UDP networking works, and lately I've been going deeper into things like Linux networking, packet parsing, Ethernet/IP/ARP/ICMP, eBPF/XDP, AF\\_XDP, NIC queues, drivers, DMA, etc.
The problem is that almost nobody around me in college is doing this kind of work. Most people are focusing on web development, app development, AI/ML, or standard DSA preparation
I've also heard people say that "there aren't many jobs in low-level networking" or that networking careers mostly involve configuring routers/switches or working with networking hardware.
That's where I'm confused.
I definitely prefer programming/software engineering work. I'm not particularly interested in being a network administrator or doing primarily hardware/router configuration.
At the same time, my practical goal is still to graduate with a strong software engineering job. I don't want to spend the next 2–3 years going extremely deep into an interesting niche only to discover that there are almost no entry-level opportunities.
So I'd really appreciate advice from people working in this area:
What kinds of actual software engineering careers exist for someone who enjoys C, sockets, Linux networking, servers, eBPF/XDP, packet processing, etc.?
Are these mostly experienced/senior-level positions, or are there realistic entry-level opportunities as well?
What companies/industries typically hire engineers for this kind of work?
Should I continue going deep into networking/systems, or keep this as a specialization while also learning more conventional backend/software engineering?
What skills would you recommend building over the next 2–3 years if the goal is to be employable as a software engineer while still staying close to systems/network programming?
Are there particular open-source projects, projects of my own, internships, or areas of computer science that would be especially useful?
I'm not expecting to work specifically on XDP just because I'm learning it now. I'm mainly trying to understand whether the broader direction — systems programming + networking + performance-oriented software — is a sensible career path.
2
u/Same-Replacement-938 7d ago
I do have interest in low level mostly operating system, compiler and low level compiler dev. If you are in india I would suggest that you should go embedded systems position
2
u/Character_General361 6d ago
I recently did C programming to esp32. I know you can because of the Arduino idle, but with C you understand more and it's more fun if you like the language. And in the past I wanted to reverse engineer C, I don't know if there is still another way. But you can go deeper into those avenues. C is the best, it's just hard to find the niche
2
u/Roronoa-Ryuma-Zoro 6d ago
Yeah I also like C so much but I Don't see much opportunities for freshers in these type of things .
1
u/Character_General361 6d ago
You could add it as an extra skill, and in the course of work you improve and look for more opportunities. You can!
1
1
u/lordlod 6d ago
There are absolutely jobs in this space. I work there, and have done for many years. A lot of my friends work there, it is an interesting sector.
There are more jobs in web development, but also more people.
Career advice while in college:
- make friends
- party
- do the work
- chase things that interest you, there are jobs everywhere
1
u/777omp 6d ago
Yeah you can definitely build out a career in this path. FWIW, I’m a Network Engineer by trade but in my current role I work on the software side of networking and I have coworkers that have been doing C/C++ work in networking for their whole careers (20-30 years).
Industries vary, but I’d expect the bulk of positions available to be at network/hardware vendors and adjacent industries. When you’re browsing job boards, look for titles like “Network Software Engineer” or “Network Developer”. Use these listings to get a better understanding of what other skills you might want to develop.
I might be a little biased due to the bulk of my career being in network engineering but it’s an absolutely fascinating area of tech to be in!
1
u/pfp-disciple 6d ago
My recommendation is to be well rounded. Keep the extremely low level stuff, maybe as a hobby, and learn the parts that use it. Maybe look at writing a minimal tcpdump alternative, or even a wireshsrk alternative if doing a gui looks interesting. You could do look to see about maybe mixing languages to "use the right tool" for each part (you might find Qt better for a GUI)
1
u/BartvanIngenSchenau 6d ago
If it is the low-level stuff that attracts you to the network engineering, you should also consider if embedded systems are interesting to you.
1
u/internet_safari_ 6d ago
Something that is surprisingly common to deal with that many people lack skill in is things like parsing and writing data to files, parsing files vs parsing data streams, etc. I don't have much career advice or anything but yeah I think this is a little issue amongst programmers and it's very relevant to networking.
I think a medium sized project that would be useful for this is to make a basic TUI text editor. Start without ncurses. Use a terminal in "raw mode" and ANSI escape sequences. Handle saving an existing file, writing a new file, editing, etc. Then maybe take a look at ascon-c on github or another simple reference implementation for a cipher and make an encrypted save feature, then editing those (decrypt, edit, maybe save to an also encrypted temp file, swap, flush). Name your encrypted with a .enc and make your own file header stating the cipher used.
13
u/Innowise_ 7d ago
We wouldn’t move away from this just because it looks niche. C + Linux + networking is a solid combination for systems work, especially around infrastructure, performance, security and distributed systems.
The entry-level pool is smaller than web, though, so we’d keep the specialization but add the boring fundamentals employers can actually hire for: Linux, debugging, concurrency, Git, testing and some C++ or Rust. eBPF/XDP can stay the interesting layer on top rather than becoming the whole career plan.