Programming is an interest and profession of mine. In order to deepen my understanding of computers and broaden my skillset, I try to learn something new everyday. I eventually realized that if you peek under the surface of most tools, the same few concepts come up over and over, which include single purpose, loosely coupled components... hierarchical state machines and data flows... interfaces and abstractions... states as graph structures like trees, tables, maps, etc... caching vs. computation... serial vs parellel processing. From front-end to back-end, through low-level programming to distributed cloud systems, programming is about managing evolving structures of state and processes through hierarchies of functional abstractions.
The book that seems to teach these fundamentals the best is "Structure and Interpretation of Computer Programs", by Gerald Sussman and Hal Abelson. I undertook studying it because I recognized that understanding the fundamentals fully once would provide precision and efficiency at navigating all languages, tools, and stacks I encounter in the future.