2 ms·
It depends, I think I go deeper than most people. Mostly it's intuition and curiosity based, but trying to reverse engineer what I do... There are usually a lo
by gpm 4y ago
It depends, I think I go deeper than most people. Mostly it's intuition and curiosity based, but trying to reverse engineer what I do...
There are usually a lot of abstraction layers, all of them leaky to differing degrees. I like to have a broad picture of the big abstraction layers pretty much all the way down, and then details proportional to how much they manage to bubble up through the abstraction layers.
For example if I was trying to teach someone how to program in a reasonably high level language (rust, python, etc). I'd (eventually) want them to know that assembly and machine code exists - if we're talking about python also that bytecode exists, but I definitely don't care if they know how to read/write it because there's a strong abstraction layer between the language and the concrete machine. On the other hand I'd (eventually) want them to know not just that file handles exist, but that they're integers allocated by the OS and how syscalls work with them, because the abstractions on top of file handles are quite leaky, and it's often useful to understand what they are when looking at various forms of debug output (especially strace output).
And this is a luxury. If you're learning a technology that you need to use immediately, skip out learning on things deeper in the stack until you have free time and are already productive. Even if you're not in a hurry, generally learning lower level things is motivated by wanting to know how the higher level things work.