I've tried learning reverse engineering before, but I found it overwhelming and wasn't able to make much progress. I'm interested in systems programming and would like to know whether it's a realistic path for me. What topics should I learn first, and which books, courses, or practical resources would you recommend? I know a little C already, but my experience is still limited.
2 Answers
A structured hands-on course can help keep the learning process focused. The pwn.college material is useful for practicing Linux, memory safety, assembly, debugging, and binary exploitation, but make sure you understand the fundamentals rather than just completing exercises. Books like “The C Programming Language,” “Computer Systems: A Programmer’s Perspective,” and “Operating Systems: Three Easy Pieces” are also solid choices.
First, clarify what you mean by “systems programming.” It can include C and C++, operating systems, processes and threads, memory management, filesystems, networking, and low-level debugging. A good starting path is to become comfortable with C, pointers, arrays, structs, manual memory management, compilation, linking, and using a debugger on Linux.

I know a little C, but clearly need more practice. I’ll work through the fundamentals first instead of jumping straight into reverse engineering.