Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This question already has an answer here:

I am confused if one should read books thoroughly (sometimes they are very bulky and if they contain many aspects of the technology they can be 1500 odd pages or even more).

I have also read some blogs like: Programmers Don't Read Books -- But You Should, which make me further confused as almost all of them say that one should learn the technology by creating apps and try to learn all the concepts which come in between the development process. But what if someone doesn't get that kind of exposure on the projects? Then how can one become sure about knowing almost all the concepts of a technology, such as ASP.net?

This might be a dumb question but I am just a newbie. Thanks, Gaurav

share|improve this question

marked as duplicate by gnat, Martijn Pieters, Jim G., Joris Timmermans, Bart van Ingen Schenau May 15 '13 at 8:35

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

2  
I've found it easier for me to learn using a video series and then going back through a book to see if I can learn anything that the videos didn't cover. –  The Muffin Man Jul 5 '11 at 3:46
1  
1500 pages books are reference manuals. Of course you don't have to read them thoroughly, just refer to the relevant sections when needed. –  SK-logic Jul 5 '11 at 10:23
1  
rockstar-programmers... really? :S –  Ed Woodcock Jul 5 '11 at 14:21
    
I put in an edit request to remove the rockstar-programmers tag, as it doesn't appear to apply. –  Zoot Jul 5 '11 at 15:36
1  
<rant>I really hate the whole "Rockstar Programmer" thing. That's like saying "Superstar DJ Geologist" or "Hollywood Star Civil Engineer". Making out like programming is just a talent thing, not something you work really hard to be good at, belittles our profession massively too. Anyone who calls themselves a rockstar anything is massively deluded (unless they're actually a rockstar, in which case they probably don't spend much time on internet forums). </rant> –  Ed Woodcock Jul 6 '11 at 14:13
show 2 more comments

15 Answers 15

up vote 26 down vote accepted

You should do anything that works for you.

Blog posts tend to overgeneralize solutions.

You are confused because there is no one and only way to learn.

I learn by practice too, but it's the method that works better for me.

Another method may be more suitable to you. You should try many and pick the one that provides you with best results.

share|improve this answer
add comment

Absolutely not.

However I have to qualify that statement by saying it never has been nor is it now adequate by itself. You have take what you are learning in the book, follow the labs in the book, apply it in your work, etc.

When you encounter something you don't understand in the book (which is inevitable), or a related question comes to your mind as a result of something you are reading, pursue that question. Don't let things that you are unsure of slip past you because underestanding them will add to the whole picture of what you are learning.

I have found SO as an invaluable resource for me as I learn more through books. I consider SO my personal tutor and mentor. In fact I just passed the 70-536 (which I thought was a very hard exam), and my study materials were three books, and asking questions on SO.

Books guide, but they must be augmented

share|improve this answer
add comment

One of the joys of programming now, as opposed to thirty years ago, is the rich variety of information available to programmers. There are product manuals, blogs, videos, podcasts, Google, StackOverflow, chatrooms, and even books. You should be using all of these. You can't make a hard and fast rule by the type of media: some books are terrible, some videos are great, and visa versa. As a beginner you may have a harder time figuring out which sources are first rate. Get recommendations from your peers, your mentors, your teachers, your bosses, and StackOverflow.

With regard to those bulky books: it's still a matter of judgment on your part. Some of those bulky books are just a dumbed down rehash of the reference documentation. But to tell the truth, I sometimes need a dumbed down version of the documentation. Some of them really are better written and have better examples. Sometimes I skim them to get an overview of the available facilities ("Core Java"). If I'm transitioning to a new technology, I may read them cover to cover ("Learning Python"). Sometimes for a really core skill, I read them cover to cover, and do all the exercises ("The C Programming Language"). Some I keep on hand as reference material ("The Art of Computer Programming").

share|improve this answer
add comment

While there are excellent programming books out there, one important thing you must have in mind is that there's also a whole lot of crap programming books. Just because it was printed in a book, it doesn't mean that the author has a clue about what they are trying to teach. Some books may actually be downright harmful, teaching out incorrect/obsolete programming standards, poor style or code obfuscation.

This is one of the major problems of the software industry. Particularly because programming teachers tend to have a religious belief in the truth of the books they are using. So the poor programming students do not only get some would-be programming guru author telling them nonsense, they are getting the nonsense verified as truth by their teacher. Then eventually later on in their career, a real programmer has to make them unlearn it, and it is all just one big waste of everyone's time.

This of course equally true for internet sources, though by their nature one tends to regard them with a whole lot more scepticism than a heavy, professional-looking, printed book.

share|improve this answer
add comment

It depends on how you go about it.

If you just read the book, glance at the code examples, and go about your merry way you won't learn a damned thing other than how to waste your time.

In addition you need to make sure the book you are reading/learning from is actually a good book. Just search for the word "books" on here or Stack Overflow and you will find countless examples of terrible books to read. You will also find good books.

All in all the best way to learn from a book (in my opinion that is) is to go along with the code examples and example projects in the book. I personally will take what it is teaching and change things and mess around with it to make sure I understand the point it is trying to teach and that I can implement it on my own.

share|improve this answer
    
Hi Glenn, I just wonder, do the good programmers read those bulky books end to end whenever they have get to work on a new technology as we as programmers many a times get different technologies to work on. –  Gaurav Pandey Jul 4 '11 at 19:02
    
@Gaurav I can only really speak for myself but I personally will go through an entire book if time allows. I do have another close friend who does the same thing. On occasion however I do skip a section if I find I will not be using that particular item or if it is something I already know. –  Glenn Nelson Jul 4 '11 at 19:16
    
Thanks for your time, it will really help me to find my own path towards learning programming :) –  Gaurav Pandey Jul 4 '11 at 19:23
    
I disagree, if all you do is read the book you haven't wasted your time. By reading the book you may not know the details, but you now know where to find the answer if a need for the details ever arises. 90% of the importance of going to college is learning how to find answers to your questions. Knowing what information is contained in a wide variety of books is crucial in that endeavor. Also, while you may not know the details, usually it is enough to at least have a clue about a topic, which just reading the book provides you, if you don't know the information exists then it may as well not –  Dunk Jul 5 '11 at 14:34
add comment

You'll certainly need to read books when "certification" becomes a requirement. The problem with not reading books is that you only gain knowledge in the area that you are focused in. Reading books and certification help you get a broader view. You might learn things you will never need or use, but understanding new concepts, frameworks and patterns might help you to get rid of some old "golden hammers".

I never looked forward to reading those thick books, but on the other hand it's hard to regret the "wasted time" once through, especially after passing an exam.

share|improve this answer
add comment

I don't think it's obsolete. I can't imagine learning C++ without at least 1 or 2 books.

share|improve this answer
add comment

I stopped buying books after entering the "proficient" and "expert" skill levels. I have found that, while there are tons of books on the basics, it is rather difficult to find books that explain more advanced concepts. In that regard, the Internet has been an invaluable tool, as it picked up where the books stopped.

One of the problems with books is that they can become obsolete very quickly. At the end of the day, however, it really just depends on what you are trying to do, and your skill level.

share|improve this answer
    
I classify myself as proficient and expert in a fair number of software topics and yet just about everytime I read a book on these topics I learn something new that makes me all the more proficient and expert. I can see your viewpoint if all you are talking about is reference material since that is easy enough to find online, but there are books that cover theory, techniques and best practices that you can probably find on the internet, but it is very helpful that somebody already went through the trouble of taking all that information and organizing it to make life easier for the developer. –  Dunk Jul 5 '11 at 14:48
add comment

The book is the second best first step to learning some completely new (and alien to you) technology/language/framework. (the first best is a guru colleague to teach you personally, but that's not often available).

Of course there are caveats. Not just any book. Almost certainly not one of "the bulky ones". These are good for reference, when you know your way around the new tech but need to find some nooks and crannies, and you don't read them whole, just the parts you needs.

What you need is a thin'ish book with some obscure, non-flashy title which introduces you to the tech in a friendly and patient manner. To find the title, search for or ask a question here or on stackexchange. Of course it doesn't have to be paper. It may be an online guide. It may be a series of magazine articles. Still, the overall form is ~200 pages of text and examples taking you from clueless newbie to beginning intermediate. Then you need to start writing your own, using references and gaining mastery through experience.

share|improve this answer
    
At least in the .Net world, I rarely see a book under 700 pages. –  Morgan Herlocker Jul 5 '11 at 17:04
    
@ironcode: If someone asks you they want to learn .Net from scratch, would you choose to recommend any of these 700+ page books to them as the preferred way? (maybe you don't know the right ~200-page book for .Net. Or maybe it doesn't exist...) –  SF. Jul 5 '11 at 18:41
1  
I typically recommend C# Step by Step which is 645 pages long. Even then, that book is realy just a primer. I think books are a terrific way to learn a platform, but it definitely takes a lot of reading to get anywhere near a thorough understanding. –  Morgan Herlocker Jul 5 '11 at 19:31
add comment

It depends on what you want to learn.

On the one end of the spectrum are easy to understand subjects that change fast. For example, html falls into this category. Most programming frameworks want to fall into this category (but some don't). Nobody would buy a book about such a subject - the book is probably out-of-date before it's even on the shelves and you'll grok it in a day just by playing with it anyway.

At the other end of the spectrum are complex subjects that are hard to understand, have to be learned step by step (because each step builds on the previous steps) and change slowly. Examples include machine learning, AI, symbolic math, physical simulations (especially if you want to simulate field theories like ART), or building compilers. (note: I'm not an expert in these subjects, so some of them might be easier than I think, but I doubt it.) I know of no way to learn such subjects except by reading books, unless you already have a firm understanding of a closely related subject.

In a nutshell: Yes, books are still relevant. They are usually slower than blogs or wikis, but on the other hand they can teach complex subjects in a structured manner, and they are better reviewed than internet resources. Pick the information source appropriate for the subject.

share|improve this answer
add comment

Books are absolutely not obsolete.

It is quite a fallacy to believe that just because you don't plunk down cash to get information from the internet then the information is free. Time is money. Why should I waste my time trying to organize the scattered bits and pieces of information from the internet when for $30 I can make use of the work that somebody else spent a year or more creating and putting everything together in a logical and cohesive manner.

As they say, the most expensive things in life are those you get for free.

share|improve this answer
add comment

If by books you mean physical books or ebooks, then indeed there is often alternative.

Let's say you want to have fun with Python. You can buy "Dive into Python" book, or you can go to http://diveintopython.org and read latest, most up to date version on-line.

Then you'd continue with Django. There is printed book, which covers 0.96. Current version of Django framework is 1.3 and changed a lot since 0.96. So you go to https://docs.djangoproject.com.

Same thing for Twisted, the printed book is of 2005, totally obsolete by today. Instead you go to http://twistedmatrix.com/trac/wiki/Documentation and get all you need.

share|improve this answer
add comment

I haven't bought a dead-tree-book about programming since high school (though plenty of theoretical cs books), but have a collection of really helpful e-books and several favorite blogs.

My style is to search for the information I want when I need it, I'll read a full article but rarely a full book unless the subject is brand new. We all learn differently, though.

share|improve this answer
1  
If you only search for information when you need it, then how do you learn about technologies that you could really use to make life simpler but don't know it even exists let alone know that you need it? –  Dunk Jul 5 '11 at 14:41
    
You can't search for something you don't know to look for. :P It's not like I'm blind to information I'm not looking for, it's that I don't go read a book when I just want to know the most efficient string replacement methods, for example. I'll get that, and most of what I want to know about technical details, from the online docs as needed. There's no point in reading a chapter about something you're not going to do for several months, you'll forget the details by the time you want it. (Or at least, I will.) –  Hydrangea Jul 5 '11 at 19:30
1  
So you don't read for the sake of being well rounded and posessing a wide breadth of knowledge. You just learn what you need at that moment to get your job done. I hope you aspire to be a manager because as a developer those young kids are going to pass you by and management is going to wonder why they are paying you as much as they are when some 20 something kid knows more than you and brings innovation along with them. –  Dunk Jul 6 '11 at 18:00
    
There's no call to be insulting. I never said I didn't read, simply that paper books about programming specifically aren't the best medium for me unless the language is so new I want a guided introduction to it. You're extrapolating an awful lot from that. Paper isn't the only way people share knowledge, y'know. –  Hydrangea Jul 6 '11 at 20:07
    
I agree I'm extrapolating, but that's because I know several developers with the same opinion as you regarding books. Their capabilities and skill set demonstrate a profound lack of breadth. They are only useful (if you can call them that) for a limited range of tasks which might be acceptable at some companies but is not too valuable at companies that work on a wide variety of projects. It is hard to place people on projects when they only have knowledge in a very limited set of technologies. These same people were also amazed when they got laid off because there was no work for them. –  Dunk Jul 6 '11 at 22:07
show 2 more comments

I seem to either read the first or last few chapters of technical books. Either I know absolutely nothing about a topic and need a comprehensive introduction to get started, or I have decent knowledge about something and need to know some high-end technique. I sometimes wish publishers would come out with a "The Last Three Chapters" line, so I could buy a book that only covered some advanced, esoteric topics without having to get a whole book on a topic or technology that I already know.

share|improve this answer
add comment

A good book will have a continuous narrative, and this can be incredibly valuable for learning a new language/library. Topics are introduced in way so that they build on each other. This style is obviously not limited to books, for example Shaw's "Learn Python the Hard Way," but I find it more common in printed books. It is a contrast to the unordered jumble of questions you might find on Stackoverflow. In my experience, a good book will help introduce me to a language, and then I will transition to using SO as I get more comfortable.

share|improve this answer
    
your post is rather hard to read (wall of text). Would you mind editing it into a better shape? –  gnat May 14 '13 at 21:57
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.