I have an intuition here that learning to code might be almost necessary for what you want. It’s only an intuition, and it’s not very strong. You may feel like your current understanding is higher than this intuition would predict, and I wouldn’t contradict you. But it seemed worth sharing.
My feeling is that trying to understand these things without knowing how to code, would be like trying to understand the classification of finite simple groups without having sat down to play with some examples of groups. One could probably get an intellectual understanding of a group without playing with them, but playing with them will give an intuitive understanding that will be super helpful for understanding a “simple group” on an intellectual level, let alone an intuitive one. And so on.
(The rough hierarchy here, as I see it: a “group” is a collection of objects closed under a binary operation satisfying certain properties (examples include integers with addition, real numbers with multiplication, states of a rubix cube with side-twists). A “finite group” is probably easy enough, a “simple group” is one with no “normal subgroups” except the ones considered trivial. To classify these groups requires us to understand “isomorphisms” between groups: the goal is to take a relatively small collection of groups, and say “any finite simple group will be isomorphic to some group in this collection”.)
And so my worry is that the foundation you need will need to be intuitive, and not just intellectual; and the way to get an intuitive understanding would be to work with code. (Which is also more than just writing it. Like half the things you name are related to the problem of “running code on a computer different than the one it was written on”.) Not necessarily to a high skill level, but to some extent.
Unfortunately, if this is true, it’s not likely an easy road. I think I’d been programming for some time before I felt like I understood what an API was. (Not just programming, but actually using APIs.)
I have an intuition here that learning to code might be almost necessary for what you want. It’s only an intuition, and it’s not very strong. You may feel like your current understanding is higher than this intuition would predict, and I wouldn’t contradict you. But it seemed worth sharing.
My feeling is that trying to understand these things without knowing how to code, would be like trying to understand the classification of finite simple groups without having sat down to play with some examples of groups. One could probably get an intellectual understanding of a group without playing with them, but playing with them will give an intuitive understanding that will be super helpful for understanding a “simple group” on an intellectual level, let alone an intuitive one. And so on.
(The rough hierarchy here, as I see it: a “group” is a collection of objects closed under a binary operation satisfying certain properties (examples include integers with addition, real numbers with multiplication, states of a rubix cube with side-twists). A “finite group” is probably easy enough, a “simple group” is one with no “normal subgroups” except the ones considered trivial. To classify these groups requires us to understand “isomorphisms” between groups: the goal is to take a relatively small collection of groups, and say “any finite simple group will be isomorphic to some group in this collection”.)
And so my worry is that the foundation you need will need to be intuitive, and not just intellectual; and the way to get an intuitive understanding would be to work with code. (Which is also more than just writing it. Like half the things you name are related to the problem of “running code on a computer different than the one it was written on”.) Not necessarily to a high skill level, but to some extent.
Unfortunately, if this is true, it’s not likely an easy road. I think I’d been programming for some time before I felt like I understood what an API was. (Not just programming, but actually using APIs.)