As a junior programmer, how much time should I spend focusing on new libraries or language features, as opposed to learning how things worked before those libraries came about? How dangerous is it to learn these libraries before I can understand the details of their implementation, or even fully appreciate the problems they solve?
This came up as I was doing a bit of research on Reactive Extensions. One thing I do know about .NET events and asynchronous programming is that they're kind of a pain, so I can sort of intuit what's exciting about the framework, and even some cases where our own product could probably benefit from it. But I have not yet spent much quality time with events or asynchronous programming in general. I find I have to remind myself about things like delegates, lambdas, even what the IEnumberable and IEnumerator interfaces look like, before I can really get the RX concepts. This makes me apprehensive about spending time learning the framework, out of a worry that I won't truly understand it, or I'll end up using it inappropriately.
I have similar feelings about LINQ, though in that case it's more about not fully understanding how it's implemented. I'd spent more than enough time with collections to understand and love what LINQ can do right out of the box, but not enough time to understand how it does it, or the best ways to use it. Not knowing what's going on behind the scenes makes me nervous about doing something grossly inefficient, or just plain dumb.
This makes me think I need more time with the foundational stuff that led to the development of these libraries - but that leads me to think that I'd probably get a higher ROI, and help my team more, if I spend what little time I have to learn new things getting acquainted with the stuff that would make all our lives easier.
Though I'm coming at this from a .NET perspective, I'm sure there are analogs on other platforms. I guess the real question is, can you ever get the most out of a "paradigm shifting" feature without having spent some real time drudging through the old paradigm?