As a junior programmer, how much time should I spend focusing on new libraries o
ID: 642276 • Letter: A
Question
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?
Explanation / Answer
You should use libraries when you actually need them. There are too many libraries to learn and learning them deeply without a real need is a waste of time IMHO. Read books, blogs etc. to gather information about libraries, programming techniques etc. Eventually you'll have an "index" in your head so that you know which libraries/techniques could be used to solve a certain problem or where that information could be found. There's no need to memorize how to actually use a certain library. You will forget it, if you don't use it regularly. Just remember what to use/where to look for. You can find an up-to-date usage example in a couple of minutes. Code real projects and use suitable libraries when needed. Read about new things when not coding and apply when it seems suitable for a problem.
In .net I would use the latest stuff if there aren't any restrictions in the target platform. E.g. writing a bunch of loops and ifs to filter collections is just stupid, if you can use LINQ. Try to choose best tool for the job. Don't force use of a new tool, if it doesn't fit.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.