I did my engineering(computers) few years ago. Now, I am working as a backend helpdesk. It's a position where you are everything that doesn't write code. lol.
I mainly deal with backend engineering (no coding, just debugging, example why slow, find out if there is network issues causing failures of distributed transactions etc). I work with linux, sql, nginx http web servers, docker, kubernetes etc...
Thus I've huge requirement to brush up my computer networking, web security, distributed systems, operating systems concepts.
- Whenever I re-read the textbooks that were taught to us in college, I learn nothing, because I know everything written there.
- Thus I figured out that best way to learn was to use tcpdump/tshark/wireshark and learn to read packets and read the books whenever confused.
- Then I figured out that if I learnt penetration testing and ethical hacking in depth, I can indirectly re-learn all the concepts of computer networking.
- The fact is ccna is too unnecessasry for my position and network+ is too basic. - Another thing I figured out is reading books like system design, distributed systems are also helpful.
I know all this makes me look like a troll. But I'm serious about learning. Please tell me what should I do, how should I proceed?
Let's take networking for example, there are two ways which you could learn by doing, a bottom up approach focusing on the foundational tech, or a top down approach. Each are valid and have pros and cons.
1) Bottom up. Pick a project in a language of choice like transferring text/audio/video over the network between two peers. Write it using TCP, figure out why that's a bad idea for live streaming, do it again in UDP. You'll have to learn how to program against socket interfaces and other fundamental network stuff.
2) Bottom up extreme edition: write the underlying TCP/IP stack also.
3) top down. Write a toy networking application using something that provides an abstraction over sockets like ZeroMQ. Then you turn your toy application into a behavioural test suite by swapping out the calls to zeroMQ with your own library which is API compatible. Your library passes when the toy application works again.
Then you go read the zeroMQ source to figure out all the concepts and edgecases that it's normalising for you that you didn't think to consider in your replacement. This means you still employ the fundamentals needed in the bottom-up approach to get things working, but after reading the source you're also mapping out things which were unknown unknowns to you so you have a better mental map of where you might have opportunity to learn more.
If you are interested and want to know more about it just DM me, I'm a Pentester.
Hope it helps!