Which one is better -
a) Read all books/blogs/... about the relevant technologies related to a project and start working
b) Read books/blogs/... on need basis as you keep working on your project.<p>Which works or doesn't work?
Thanks...
Like most broad technical questions, the answer to "A or B" is "yes". :P<p>You need to have read at least _some_ of the material to even know where to start and how to find more information when you hit a problem.<p>On the other hand, having practical experience with the technology will help you filter out "need to know" from "obscure trivia".
Frequently in computer programming work we will not understand all about a project until we begin implementing it. This is part the inherent or essential complexity of creating software described by Fred Brooks: "The complexity of software is an essential property, not an accidental one". Brooks found that prototyping software was instrumental in understanding a project's needs and problems. I have found Dr Brooks' insights to hold true, so I would recommend approach B. Otherwise you might be studying things you don't need to know (premature optimization).
I am in the B camp. It is probably less efficient in the long run but I personally find it more enjoyable and easier to learn and grasp new technology by jumping right into it and then refer to manuals and guides to accomplish the needed tasks.<p>The issue I frequently run into with this method is wasting time on less efficient tools and or rebuilding or starting over after gaining the knowledge I could have obtained first.<p>But I'm definitely in camp B as a sink or swim type personality.
B. It's iterative. Knowledge doesn't stick until you see how it's applicable. By doing, you see the applications and learn faster.<p>A is useful in some situation, namely when you can't start or don't want to start yet. A big enough project may need a year of reading before you even start.<p>Generally you should read enough until you are highly motivated to do the work. And once work slows down, read some more.
Read <i>some</i>, then move on and learn new things as you need them.<p>Jumping in completely cold can lead to huge wastes of time because you don't know what you're doing. So read that book on a new language, follow the offical tutorial for a new framework, go over the docs etc. But make sure to time box that learning and then move on to doing some real work because otherwise you can get stuck on the learning phase forever.