This is probably a pretty personal question - I suspect people learn in different ways. (And I know far fewer technologies than people seem to expect me to. If you're a web developer, you probably know more languages than I do, to start with...)
If you know you're going to need to know a language/platform well (rather than "just enough to get by") then I'd recommend starting at the basics, and layering the knowledge. That's far more effective in my experience than diving straight into a mobile app with a cloud backend, all written in unfamiliar languages and deployed using a tool you've never used before. When something goes wrong, if you have a solid foundation, you can generally work out where to go from there. If you're mired in 10 different technologies which are new to you, you may well have no idea where the problem lies at all - or how to diagnose it.
Diagnostic skills are really important to me. If I'm going to do any work in a particular area, I want to be able to do at least one of three things pretty easily: a) run tests; b) use a debugger; c) write logs. Ideally all three, but having at least one is important.