I have written a few articles on how to learn a programming language before, for example, How to self learn Python? and Some resources to self learn Python. Currently, when I try to find out how to build a web application, I started to reflect on my approach.
Then, I started to realize that to learn the tools you need to build something, first, you need to learn through a project (actually building something); second, you need to learn the software framework, Augular for Web, Pandas for data processing, Sklearn for Machine Learning, for example; third, go through the basic “you need to know” for the programming language you are going to use.
Unless you want to be a real software engineer (inventing the framework maybe), all we need to do is to transform some business requirements into applications. I think it is more effective to learn through a project using some framework designed for that purpose.