Something I’ve been told a lot is that I tend to pick things up faster than most. I don’t know if that’s true — maybe everyone does exactly what I do. Maybe there’s a better way. Regardless, I have a pretty good idea of how I learn things, so here’s what that is.
The way most tutorials, guides and lessons work is by breaking things down at a high level into easily digestible chunks. I hate this. I feel stuck at the surface. I’m being told how, but not why. Maybe I’ll be able to do the mechanics of something, but that’s a slow way to expand my knowledge. What I try to do is see past that and find the concept that underlies everything. Once I’ve got that, there might be some specifics to figure out, but I’ve basically learned it.
Here’s some examples.
Let’s say you’re learning scales on guitar — major, minor, pentatonic, whatever. Don’t worry if you play guitar or not, that’s not important. The way this is often taught is by learning five distinct box shapes that you can play in different positions on the neck.

The thing is this — a scale isn’t a shape. A scale is a pattern of intervals. For the pentatonic major scale, that’s whole-whole-m3-whole-m3. Understanding guitar isn’t the point here. The point is that if you know where your root notes are, there aren’t five shapes. There’s just one shape and it repeats up and down the neck. This also means you can play it by going down the neck instead of just up.
By looking at it this way, you’ll also see that the minor pentatonic scale isn’t even a different thing. The intervals for the minor pentatonic are m3–whole–whole–m3–whole. They’re just starting 1.5 steps lower, which is where is the relative minor for your key.
Now I can play that scale any way I want anywhere on the neck, and the shapes don’t matter at all.
Briefly, some computer related examples. How does C work? It’s just mostly about memory and byte manipulation. That’s really all it does.
What is the magic people talk about in Ruby on Rails? That’s just using Ruby’s ability to add methods and change things at runtime to generate things like edit_user_path or whatever, which Ruby can do because it has a dynamic runtime. If you understand what a dynamic runtime and metaprogramming are, there’s no magic at all.
Maybe this is all incredibly obvious, and I’m embarrassing myself by pretending this is a skill at all, but it’s what works for me to learn things on a fairly deep level fairly quickly.