The one thing that gets difficult as a programmer is that there are too many general purpose languages out there. I love doing everything in C#, yet I am curious enough about Java that I am always interested in learning more about it and its API. There’s also my lengthy quest to become a C pro, and then I have a list of to-learn languages like Python and Rust/Swift. I'm not even speaking about just being familiar. The goal of course, is to always get to know the language well.
Also, don't get me started about functional programming! I've always wanted to learn LISP or Haskell. I've barely dabbled in Scala in the past but I have no credibility to say that I have knowledge in this area of software development. But how about... JavaScript... does that count?
Then there are concepts... I'm always curious about computer graphics, algorithms/data structures, operating systems, architecture, more web development, etc.
I have come to a conclusion that the fastest way to learn is to actually just learn as you go along. Meaning, putting yourself in a situation where you have to figure something out in an unfamiliar technology would probably be the easiest way to pick it up. But what if you want to make sure you're not skipping any important? Create a lot of projects. Have fun.
An even better question, how does one become confident enough to narrow down their list of technologies and become more specialized without worrying about missing out on the coolest things?
How does one maintain an "outside" life while fulfilling the awesome, yet brutal grind of day to day activities as a developer?
These are questions I am still trying to find answers to. :)