There are two ways to learn: by discovery or aided discovery. Discovery means that you learn it by yourself. You experiment, observe, note down the results and learn again. This is the slowest way of learning, but always available.
Aided discovery is learning via books, teachers, leaders who show you how something is done. A lot of people can inactively listen to a teacher and gain information. Information isn't really learning, unless you have understanding. Information is a step towards understanding, which is a step towards discovery and learning.
To truly learn something, you must always be actively trying to discover something.
An easy, foolproof way to do this is imitation. Find someone who knows a lot more about the field you're interested in. In software engineering, this may be books, it may a colleague (even the new guy), it may also be open source.
You start by imitating a master without understanding. I find that slow learners are often the ones who resist this phase. You have to be humble and accept that you don't know anything. As you repeat/imitate something, you'll start to observe why it is done that way.
There are also a lot of minor things that you don't realize you have to think about.
If it's a physical task (e.g. handicraft, musical instruments, cooking), you'll develop a kinesthetic sense of things, like where the frets are, or the proper chopping speed. For things like programming, this is like learning syntax. For project management or safety, it might be reading people's intentions and personalities. People who are experts will do these things intuitively, but not be able to pass it down as well. The fastest way to learn these things is repetition.
After observation, you should start questioning why things are done in a certain way. Quite often, the answer is "because that's how people taught it to me". This is perfectly fine. This are the things that we can change later. Or you might do further research and later discover the true meaning behind it. What you want to learn at this phase are the things that should always be done and repeated, so you don't have to think about them.
When you're learning something new, you're faced with information overload.
Let's take the example of someone who has never seen a computer before and wants to use the Internet. He is afraid of even turning on the computer, worried that he might destroy something. He will not know what a F4 button or PrtSc button is and will fumble around for the Internet button. If this person started off with an expectation to be an Internet expert.. if he tried to figure out all the buttons on the keyboard before turning on the computer, he'd get nowhere (and still forget what the buttons do).
Eventually, once you can repeat the same basics a few times, you move into the phase of experimentation. You start changing little variables because you know how they function. Maybe instead of black pepper in a recipe, you try it without pepper, or with white pepper (especially when you know what white pepper tastes like). Instead of Internet Explorer, you take a risk on the funny sounding Firefox.
This is where you apply your expertise from other fields into your task. A common mistake is to try to apply expertise without knowing the basics. You set yourself back because of the assumptions you make.
After a lot of experimentation (around 10 years or so), you'll have experimented on every possible thing there is to do. That's when you achieve mastery.
Mastery means you know how every single component in the machine works together. You'll have viewed it from many different angles and know how they all work. You can program almost everything without knowledge of machine language or compilers, but you'll never achieve mastery.. which is why degrees are regarded so highly even though they're not necessary.
I doubt this is your goal as of yet, so as a learn quick scheme, I'd simply focus on finding good teachers and getting them to aid your discovery of the topic.