Could you expand on that if you don't mind? I'm a self-taught programmer currently in the process of realising just how much I miss from theory, my list so far on theory fundamentals includes:
• Mathematics and probabilities, and their applications to CS (e.g. formal methods)
• Design patterns (OOP, functional programming)
• Data structures
• Algorithms, time complexity
• System architectures
• Software strategies: CI, CD
• Database principles: SQL
It may sound naive, but I'm kind of overwhelmed by all this and it's not helping my impostor syndrome, I may make a repo of the list with links to ressources I've identified for learning as it seems like a common struggle, maybe it'll help someone.
None of what you mentioned is theory expect for Mathematics, probability, formal methods and algorithms.
Stuff like design patterns, system architectures and software strategies are like flavor of the week stuff. Opinions basically. Patterns like microservices are bad or good depending on opinion, but theory is always correct.
Theory gets less bang for the buck but it's always what many programmers especially self taught ones are missing.
Theory is so hard that it will be hard to see applicability until you're a more seasoned programmer. Many seasoned programmers get by without ever knowing theory. But you will be a better programmer if you know it.
If I were to recommend one theory to study it would be category theory. If there was any true axiomatic theory for design patterns or how to design programs... categories are it. The study of morphisms is the study of the simplest form of a compose-able module. Knowing this theory you will begin to understand why Some design patterns don't work and why it's sometimes hard to reuse patterns in code that was that not properly designed. Theory doesn't answer all questions but for the questions it does answer you will get a definitive answer and not an opinionated one.
• Mathematics and probabilities, and their applications to CS (e.g. formal methods)
• Design patterns (OOP, functional programming)
• Data structures
• Algorithms, time complexity
• System architectures
• Software strategies: CI, CD
• Database principles: SQL
It may sound naive, but I'm kind of overwhelmed by all this and it's not helping my impostor syndrome, I may make a repo of the list with links to ressources I've identified for learning as it seems like a common struggle, maybe it'll help someone.