https://github.com/kamranahmedse/developer-roadmap#back-end-roadmap
find what you want to learn, pick a book or course finish it. (I'd suggest tutorials from the corresponding websites usually for languages).
There are way too many resources currently for technologies. seeing reviews and deciding is usually a challenge. About a decade ago, there were few books, many articles, some documentation and very few Video courses. In recent times, the documentation is usually very very exhaustive for languages and databases.
1. to learn theory of say databases, read the specific books, for theory on coding concepts - MartinFowler has good definitions. (you need to decide the solution based on the tradeoffs across various solutions. ex: document database vs relational database).
2. to learn practically, start coding/making an app, when you hit a problem, find a solution and read through around the problem. (or attempt to over optimise)
3. To learn how large companies do it, see
highscalability.com . These slowly become patterns or ready-to-use software solutions. (If you want to understand how to do it in a large scale environment, you have to simulate that environment and load test etc., )
For an intermediate developer, learn new/different languages, learn how databases work. for ex: an index on a database table solves a problem, but you need to understand it also brings in other problems like space usage and more memory consumed. These problems are usually only applicable at scale.