Both in Code Complete by Steve McConnell and The Pragmatic Programmer by Andrew Hunt & David Thomas, they allege that most programmers don't read programming-related books as a habit, or at least not often enough. Does this still hold? Are programmers who do read such books still rare?

I must admit that only quite recently did I start reading (and now I can't stop; it's burning a whole in my wallet!). Before I was actually against it and argued that it's better to write programs than to waste time reading about it. Now I realize that the best outcome, for me at least, is to do both.

EDIT: I actually meant any kind of books that on way or another was related to programming; be it either on a particular language, technology, pattern, paradigm - anything as long as it may benefit you as a programmer. I was just referring to Code Complete and The Pragmatic Programmer because that's where I read that programmers don't usually read such books. It would have looked stranged if the title just read "Are programmers who read books still rare?"

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
If this question can be reworded to fit the rules in the help center, please edit the question.

16 Answers
16

Everyone seems to be answering this question personally, as in "I do read such-and-such." However, as a person hanging out at this site, you are already a cut above your "average" programmer IMO. So this skews the numbers dramatically. To answer the question directly: yes, programmers that read books are a rare breed. I've worked with dozens of programmers, and only know two or three that would pick up a book to solve a problem. Most of them would search Google for a particular program, or just stare blankly at the screen hoping for divine inspiration. :-)

And the "theory" books such as Pragmatic Programmer and Code Complete are even more rarely read by average programmers. If a programmer is going to read a book, it is more likely to be a technical book on the specific language, framework, or technology they are working on. The "soft" books are not even on most programmers radar.

I can't stop growing my Amazon wishlist. The most recent book I've been working through is Clean Code by Robert C. Martin (Uncle Bob). Recently a bunch of programmers in my area even formed a book club, so that we can learn best practices together and exchange our experiences. I don't think I'd be the same programmer if I did not read books on the programming craft. There's a great wealth of material out there and it is nice when somebody condenses it for you and gives you a starting point before you go experimenting on your own.

I read them, so add 1 to the your sightings list. (How many before we are off the endangered species list?)

Seriously, I'm surprised that the top vote-getters at the moment are the people saying they see little value in programming books. There are certainly some I wish I hadn't spent the money on, but there are several which have totally opened my eyes to new concepts & techniques and which made me a better programmer. For instance:

The Zen of Code Optimization by Abrash - I think this one is the main reason I am a real-time programmer today.

Ruminations on C++ by Koening & Moo - The real value of iterators and the STL did not click until I read this one.

Refactoring by Fowler - Taught me how to structure and restructure code.

Extreme Programming Explained by Beck - Even though I never completely drank the agile kool-aid, this book changed the way I think about requirements, testing, and managing the development process.

I learned how to code in school, but I didn't learn how to code well until I read some great books.

Whilst interviewing developers I've noticed that the ones who perform better at the technical tasks (both verbal and practical) and (far more importantly) understand the reasons why they're doing what they're doing are all developers who read at least the occasional book. I don't think that that's entirely a coincidence.

Although you can certainly use Google for quick answers and blogs can be excellent for indepth coverage of specific things, books I think give you a more co-ordinated view of the topics they cover. Also, by providing the information in a different context they help knowledge stick in people's heads better. Even if it's something you already know I think it's valuable to have something which validates that knowledge.

Finally, if someone is reading books about the subject they're working in then it almost certainly means that they're genuinely interested in what they're doing and not just plodding through things - for knowledge based or creative jobs this is very important if you're after the best staff.

I assume you're talking about books on the practice of programming and software development rather than on specific technologies...

Personally, I tend to avoid these books because so few of them have anything useful to say. For every pair of pragmatic programmers, there's a hoard of authors pushing their personal methodologies / prejudices / grand unified theories... and while it can be great fun to listen to them argue in a podcast, reading their books is only somewhat more entertaining than reading their shopping lists... and probably less useful. You'll get a lot of the same advice on forums and... whatever this place is... with the added advantage that disagreements get argued out between people who actually believe them rather than between the author and his strawmen.

The meat in Code Complete, Mythical Man-Month, etc. are observations that most experienced readers are at least subconsciously familiar with already. This makes them most useful for reinforcing assertions, and teaching intermediate programmers.

The biggest problem I have is that the technology specific books tend to be obsolete in a couple of years (e.g. not many people writing Visual Basic 6 these days) so I've found that investing on those books that can become obsolete tend to be a bad investment, even more so when with how much information is available online these days. Likewise, some of the books on such things as design principles tend to be ignored in favor of some of the really good sites out there such as A List Apart.

The reason to read books is to improve your own knowledge and skills. That implies two things: (1) you have to recognize you have room to improve, and (2) you have to want to improve. Many of the programmers I've met had ego's the size of planets. A large chunk of the rest were happy to coast along.

Partly it's to do with the expense and impracticality of paper books. Think of the numbers you used to read something as gospel only to find it was subjective, or perhaps out of date. Even reference manuals date quickly, given the ever-changing nature of our world.

I'm not knocking technical books per se, but gone are the days where they were your only source of information on a technical subject. We get our information from a variety of sources now.

I'll confess to missing them somewhat, but for me at least, times have moved on.

I once gave a presentation to a room full of 50 or 60 developers about some .NET related stuff (they all worked for the same company).

Microsoft was sponsoring the talk and gave me a couple of copies of David West's "Object Thinking" book (by Microsoft Press).

Coincidentally, I had just read that book and found it a very nice read. I even recommended it to the audience explaining that I had some copies to give away and that if someone was interested all they had to do was to ask for one.

Several people came over to browse the book, but none of them, I repeat, no one, not a single person decided to keep it.

I would still like to pick up a book to learn the basics of a language. This way I can look at it and get an idea of what I'm doing any time of the day/week and not have to worry about a laptop. Once I've read the book, then I'll start learning with code.

I don't buy as many programming books in paper format as I used to. I have a subscription to Safari Books Online, where for the price of one book a month, I get unlimited access to the full text of thousands of programming (and other) books from publishers like O'Reilly, John Wiley & Sons, Addison-Wesley, and others.

I also have a first generation Kindle and sometimes buy programming books for it; however I think the large Kindle DX (which came out after I got mine) would be a better platform for technical material.

(Wow, 5 upvotes and 5 downvotes — this opinion seems to be more controversial than I imagined!)

I don’t read books such as Code Complete or similar, nor do I feel that I “should”. What does that mean, anyway? What happens if I don’t?

First of all, I don’t think such books make me a better programmer. They might work for other people, but not for me. The factual information they contain is not very detailed or technical, so I already know the vast majority of it. The rest is opinions that I may or may not agree with, but which I certainly won’t slavishly adopt.

The only programming-related literature I’ve actually found interesting to read are purely technical documents with an absolute minimum of subjectivity. My favourites so far are the C# language specification 4.0 and the Unicode standard 5.0. Other people find this a very dry and boring read, but I find that it engages my mind, and it potentially provides information that I didn’t already know.

Update 2010-Oct-07: I just had The Pragmatic Programmer pointed out to me, so I looked at the first few pages on Amazon. In the section “Who should read this book?” it says: “Perhaps you feel frustrated that you don’t seem to be achieving your potential. Perhaps you look at colleagues who seem to be using tools to make themselves more productive than you.” Uhm, no. None of that applies to me. I am frustrated because my colleagues are much less productive than me (and they don’t care). I feel that I’m achieving my potential (what little of it I have, anyway). So yeah. No point in reading this book. Just a case in point.

The Unicode standard? Really? I can see a mountain of great information that can be mined from the C# standard, but Unicode?
–
Robert HarveySep 24 '10 at 1:35

1

@Robert: I’m surprised you say that. The C# spec is only about programming. The Unicode standard provides a wealth of real-life information about the world’s writing systems, their history, their relation to languages, their geography and their cultural baggage, in addition to all the programming/technical stuff.
–
TimwiSep 24 '10 at 7:41

2

-1 If you think that Code Complete or similar kind of books doesn't teach you anything... :-/
–
KhelbenSep 24 '10 at 7:51