Do you find that it is better to learn through reading books or to just jump straight into a project and pick up what you need to know using the web, or some combination of both?
closed as primarily opinion-based by gnat, user40980, GlenH7♦, Kilian Foth, World Engineer Oct 22 '13 at 0:48
Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.
False dichotomy; I routinely work on a project while reading a book.
I will say this: if you just read a book without actually programming anything then you are not gonna learn the language. Now whether you're reading from a book or from the web while working on your project matters little; obviously you want a good resource and not a crappy one, but there are both good and bad learning resources in both book form and on the web.
Well, assuming you already know how to program, and are just jumping into a new language, I'd recommend just starting and using the web. You're really just playing around with features and syntax, and it's easier to do that if you're actually doing something. Not to mention that you'll retain the knowledge longer if you actually use it for something.
If you're new to the whole idea of programming, it'd be better to read a bit first. There are a lot of bad habits that you'll be glad you avoided. I got started by reading other peoples code, and it's left me with some weird quirks to the present day (25 years later), despite my later formal education.
The most efficient way to realize an investment in theoretical knowledge is to put it into practice. If you only read books, it will take you far, far longer to actually understand the concepts. You may never achieve a practical understanding. On the other hand, if you only write projects and increase the bounds of your knowledge, you will merely ingrain the level of understanding you currently have.
Find a balance between the two that works for you. Experiment with your experiments so that you can learn how to learn and improve your skill at improving your skills.
TL;DR: You have to do both. Read books to expand your theoretical understanding. Ship things to turn theoretical understanding into practical understanding.
I think it would depend on the type of learner you are. If you are 'see than do' type of learner, then perhaps reading a chapter in the book then trying to apply what you learned might be best.
If you are a 'learn by trying' type of person, then maybe try doing something and look up stuff as you need it.
How strong are you at programming? Are you learning to code from scratch or do you have a language to draw from. Learning to program is more difficult than learning a new language. Once you have a language as a reference and you have a knowledge base for programming to draw on, learning a new language becomes easier.
If forced to pick one, I would jump into a project. Many books on a language are similar, but you may have picked one that had a special section and would read that first. Maybe you're more interested in the video capabilities of an iPhone or database interaction in .NET.
This is one of those times when a quality mentor is useful.
I like to work through a book while writing code for each concept in the book. Depending on whether the book has good examples, I'll either use the examples in the book or program my own. I find that I retain the knowledge better if I'm coding and taking notes along with the book.
After reading through the book, I'll tackle a lager project. I find it easier to switch to online documentation at this point.
To have maximum knowledge retention, you need to process the knowledge multiple times in several different ways.