a companion discussion area for blog.codinghorror.com

Programmers Don't Read Books -- But You Should


I’ve been wrestling with this train of thought for the past couple months. Not only are many developers not reading, some are refusing to embrace technology. I’ve met developers who don’t own computers, refuse to even use IM etc, and who don’t read period. When talking with these developers you discover that most of their practices rely on voodoo, superstition, and 3rd party information. It’s terrifying!

I’ve been toying with the Knuth books, they look so fun, but in reality I don’t know how practical they would be. :slight_smile:


For anyone using visual basic for windows .net programming, by far my favorite book is:
Visual Basic 2005: The Language


Jeff, I notice on your snapshot of your bookshelf that you have all four of Tufte’s self published books. I’m willing to be that a large percentage of your audience (read ‘programmers’) don’t know what Tufte is all about. I’d love to see a note on why Tufte is an absolute must read for all programmers (especially if contemplating any sort of computer/human interface).

Thanks for the blog. I look forward to reading it everytime a new article (?) appears.


…and one more thing for Daren…
I have read Norman’s TDoET (The Design of Everyday Things, originally published under the name The Psychology of Everyday Things until Mr. Norman realized the bookstores were improperly shelving it with the Psych books). A great book and another must read, if you ask me.


Thank you very much for this post.
I set out looking for some great literature on the WHY as opposed to the “Do this and that and Boom!” This post came at just the perfect time.



I have been programming for over 25 years now. I remember back in the early days that the only way you could learn anything was from books. We didn’t have the internet to go to and lookup how to perform certain functions, etc. Luckily that habit has stuck with me over the years and I now have a rather decent sized library (including a couple of old machine language books for the Commodore 64 and 1 book for the Timex Sinclair). Maybe one day I’ll open a museum and make my years of being a pack-rat pay off.


I have yet to meet a good programming book. I own a dozen or so, and I have found some good references now and then, but aside from the introductory books I’ve not found one that can teach anything.

Nowadays there is so much online as far as reference material for various languages that it seems almost silly to buy a paper version which will be outdated in a few months anyway.

I read a great deal, but I have never seen a programming book I find useful outside of reminding myself of syntax or features I’ve forgotten the proper name of.


When I do read books its for: beefing up for certifications, tired of reading off a screen, very brand new programming concept languages (like linq and WCF), or when I don’t have Internet access.

I also think you forgot to mention one good reason why most programmers don’t buy books. The stale fish concept. Most tech books can’t update themselves and who wants to date themself by having books on languages that are extinct.


I’m reminded of a good analogy:

Reading on a monitor is like reading the small text on a light bulb while its on.

It hurts my eyes and gives me a nasty headache to read 100’s of pages on a computer screen. Books are no problem though, and in fact it’s been proven that people are typically able to read books faster than text on a screen while maintaining the same level of comprehension.

This is why books will never go away - at least not until we can create some sort of ultra-crisp elecronic print that doesn’t require a backlight.




I am really not sure how it is possible to gain absolute knowledge without reading books…


@Jan Willem de Birk

PHP gets no respect because it’s simple and nobody gets paid big bucks to setup a web site on a LAMP server. No, see, corporate web sites require an application server. And a web server. And an Oracle server. We need tiers! Each tier needs its own server! Ok, so PHP can do tiers, but it all runs well on a single server and you only need to separate when you get big. I thought you wanted a real enterprise web application? Enterprise applications all have many servers.

Scalability. Don’t forget about that. Ok, so you only sell a dozen widgets a day on your site now, but what if you’re the next Amazon.com? You can scale your tiers and sell ten million widgets a day! First we’ll scale the data tier because the advanced connection pooling doesn’t actually help. Two more in a cluster ought to do it. Then we’ll scale the application tier because the application server provides advanced session and failover management. That management adds some overhead, so we’ll get two more servers instead of just one more. Alright now this cool template abstraction we used for the web front-end tier is pretty slow so we’ll add another server there, too.

Man, it’s a good thing we didn’t choose PHP for this because PHP doesn’t have an application server to manage all this scaling. Some people talk of the “share nothing” approach to scaling, but I’ve never done that and I think it’s voodoo.


your pretty much right, I have been coding for 10 years and I learned basically from trial and error(oringally went through all the intellsense options till I figured it out :stuck_out_tongue: ) and the internets.


Another thing I’d like to bring up:

I wish I didn’t have to work, so that I could spend serious time reading tech books.

On week days, after a long hard day, the last thing I want to do is more tech stuff at home. I do some reading and programming side projects on weekends though - but if that’s all I have it takes a year to do anything that I otherwise could easily have finished during a summer break (if I was still in college).


“The Mythical Man Month” should be on the top list, why you haven’t included it?


Learning principles from a book is good. But the best way to learn how to be a good programmer is to maintain and make directed changes (user specified requests) to your own code. After a few years maintaining your own code you learn how to make it easier to change. After 30+ years of programming I am still learning how to make code easier for the programmer coming behind me to maintain it.

@mistone… you got it understood.

@jeff… you ever live in cary,nc?


I work in a company where they’ve build an entire Enterprise server out of PHP. I help develop on it. The company sells their software (not only the server in PHP, but also some C++ stuff) to everyone who needs a media solution (publishers, newspapers, etc). And believe me; it works. I bet that 8 out of 10 papers/books/magazines you read (either online or printed) are made with that software…

So in my opinion; everything is possible with PHP. And it sells, once proven :wink:


Hey Jeff, how about some comment modding or maybe even paging?

It’s getting a little crazy here, 90+ pages of comments for a single blog.

I do agree with this one, I think the big difference between picking up a book and just trolling the internet is that a good book will provide information you can use but may not have looked for.

For example, there is a guy here who became our new DBA. At first he made some improvements just by regularly reading a few blogs and picking up some tidbits, but it wasn’t until he read a few good Oracle books cover to cover that he really took it to the next level.

Googling for code samples is typically reactionary. You’re looking for a solution to your problem, and you’ll only find results that fit into your search criteria. There may be some great solutions that you haven’t even discovered because they don’t fit what you’re looking for in that narrow list.


A startling number of people commenting here seem to have accepted the fantasy that knowing how to look things up is as good as knowing those thing.

This is a dangerous fantasy because it severely limits how you think about problems. If you represent all your knowledge as a tree, the stuff you google for can only form the leafs.
As an example, if I need to change how my drives on my Linux machine are mounted I’ll look up the syntax I need in “man fstab”. Easy. Because I already know the exact piece of knowledge I’m looking for, and there’s no appreciable sub-knowledge. (The second item on a line is the mount point. I can’t learn that in any more depth.)
If I didn’t ALREADY know the name of the file system table, it would take a few minutes of awkward searching to find it, but I’d still be close to the knowledge I need.
If I didn’t ALREADY know that there WAS a file system table I would have to start my research by first researching the mount command. Not only are we increasing my research time for a simple task, but Already we’re pulling back to the point where we’re running the risk that it wouldn’t even occur to me that the data I needed to change was stored in a human-editable file somewhere.
If I didn’t ALREADY know that I had more one device in my filesystem that could be mounted and unmounted, etc, then my problem (which can be solved with a one-line change in the fstab file) could seem insurmountable. I would not even occur to me that the correct solution might exist so I couldn’t search for it. I would probably wind up thinking up some convoluted solution involving symlinks or something. (Assuming I was aware of their existence.)

This sort of coding-by-google approach has filled the archives of thedailyWTF.com. Are the people who write the code featured in TheDailyWTF some sort of knuckle-dragging low-IQ cavemen? I suppose some might be, but most of them just lack an understanding of their field, and depend far too heavily on just-in-time googling to figure out whatever crazy thing is in their heads because they DON’T KNOW THE CORRECT THING TO LOOK UP.


Thanks for the article. It’s good. I have blogged about it, adding my own comments, here.