Programmers Don't Read Books -- But You Should

One of the central themes of stackoverflow.com is that software developers no longer learn programming from books, as Joel mentioned:


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2008/04/programmers-dont-read-books----but-you-should.html

Without programming books I would be cluelessā€¦ but Iā€™m part of your generation Jeff - the ā€œold guysā€ who learned to code in the dark ages before 24 hour internet access was a given. As such, I still use books (as well as the net). I simply canā€™t get comfortable trying to snuggle up at night with my laptop - books work much better in that respect.

Ugh. Did you see the (unofficial) documentation for writing software for (jailbroken) iPhones?? There is one book, I think, but what is available the most are VIDEO TUTORIALS ON YOUTUBE. Even more for tutorials explaining users how to jailbreak. Looks like people canā€™t even be bothered to READ online. They need a step by step in a freaking video.

Sheesh.

I think there will always be a small group of developers willing to pay for well-written material, online or on paper, but hopefully the net will deal the death blow to the hated ā€œX in Y daysā€ category.
With fast searching and Intellisense I donā€™t need to thumb through poorly written books to find parameters for API calls or quirks of this or that library.

When I saw your bookshelf (Basic Computer Games - oh, the hours typing those into my Apple II and the pointless hours playing Horserace!) I turned around and looked at mine and, no, despite all the information at my fingertips I still like my Meyers, Stroustroups and so on. I did notice I havenā€™t bought any in a while even though I liked the Pragmatic stuff.

What are the numbers on your ā€œDesign Patterns?ā€ - didnā€™t return it to the library?

I must confess, that I avoided books about coding for years. After I made my passion to my job, I began to read books. Mostly about GUI design, defensive design, usability and performance. I fully agree to you: Programmers must read books!

Iā€™ve always loved computer books. When I was a teenager (looooong ago) my brother remarked that Iā€™d have to write books myself, because Iā€™d already read most of the computer books out there. I havenā€™t come close to reading everything out there, but I do write a lot of computing books (11 at last count.)

I was an elitist too, for a while. I never owned any Dummies Books, and I nearly turned down the offer to write one. Now Iā€™ve written two. A series isnā€™t bad or good. Any author has the opportunity to treat any work as a task or as a masterpiece.

The technical publishing industry is full of well-meaning English majors who find themselves editing programming books while working part-time on their novel. Many of them become quite proficient at technical work, and many of them actually care about quality. I canā€™t really blame the people. When they find an author with technical skills who also cares about the craft of writing, they do what they can to support her or him. Itā€™s very hard to find anybody who has the technical skills and communication ability. (Of the two, I find writing ability more rare.)

Truth is, thereā€™s not a lot of incentive to write great technical books. Youā€™ll earn a lot more money by being reliable than correct. If you just keep pumping out copy, youā€™ll sell them and make back your royalty advances. Itā€™s the rare tech book that makes any money past the advance (only one of mine so far, but Iā€™m very optimistic about the latest one.)

Writing an excellent book, and writing it well doesnā€™t pay the bills.
It takes too long, and if the marketing department doesnā€™t understand it, youā€™ll get no support. It doesnā€™t matter how good the book is if it doesnā€™t get to Amazon and store shelves. I earn as much (or more) putting a buy-through link on my site to amazon as I do writing the book in the first place. Why would anybody sane write the book if marketing it on a web page is just as valuable?

Still, a part of me believes that quality matters, that the marketplace will eventually recognize excellence, and that even the industry really wants to promote quality (as long as it sells.) Iā€™m hopeful that positive Amazon ratings will eventually turn into meaningful sales, and that even people who buy Dummies books deserve great writing - a combination of useful skills and insightful fundamentals. Iā€™m going to keep writing book Iā€™m proud to have on my shelf. (None of mine are on your shelf, but maybe theyā€™re on the back shelf - grin.)

Ahl ROCKS. Iā€™ve written two game dev books trying to be true to his spirit but actually teaching something along the way.

Iā€™d love to rectify the horrible state of programming literature out there. Iā€™m a graphic designer and would love to apply informational graphics that explain computer programming concepts in a visual way. But alas - I am a novice programmer not capable of doing it on my own. If anyone out there wants to team up with a designer who gets geeked out as much as you about technology, let me know. You can find my contact info at www.conartistry.net. (donā€™t want to post my email here for privacy reasons)


now for my rant

Finally, someone who sees the horrible state of programming literature out there! I have been trying to learn computer programming for years and have gotten nowhere because of the shitty ā€œbooksā€ out there. 99% of the programming books donā€™t make sense to a newbie as they make congnative leaps and skip over minute, but important information. I am a graphic designer, and also love technology and want to know how gizmos work. Despite my interest, dedication, I have not become proficient in the ways of the coding.

As a designer, I think visually and am trained to communicate clearly. These two characteristics are not common among a large percentage of engineers. Not to stereotype here, out of all the engineers Iā€™ve met personally, although they are great people, usually dontā€™ have a good aesthetic sense, and they tend to communicate in a way that I percieve as unclear. Perhaps they make sense to other engineers. I think There are relatively few people who possess design and programming skill sets (compared to those who only have one skill set) at a high level of proficiency. Therefore engineers probably think and communicate in different ways from us non-engineers. A good computer programming book also must be written by someone who is a good teacher. One must possess the knowledge, be able to write well, AND have the ability to teach. There are very few people who can do all this at once. Thats why the books all suck.

The rare moments where I did find a good book, it was written by two people with similar interests, but different educational or vocational backgrounds. And sometimes Iā€™d find a good book written by a designer/programmer. I even read one or 2 good computer books by a programmer. ā€œSo heā€™s read all these books, why canā€™t he program?ā€ you might be asking yourself (if youā€™ve read this far). The answer is this: programming is just hard. It may come easy to some, but not me, I just dontā€™ think in the way that I need to write code. I may think that way one day, but Iā€™m not there yet. I have yet to meet or read work by someone like me who is a good programmer, a good writer, and a good teacher. I canā€™t just read and make sense of this stuff on my own, I need the aid of a teacher or friend to explain things in a way that I understand.

Youā€™re right, this is the fact that hate most from our field. People who depends on their knowledge and forget feeding it from time to time.

And yes, it will always be better to have a paper book of 900 pages than a big pdf file to read in a screen. Guys, pay for what is worth, and books are.

I donā€™t see your copy of KR, ā€œThe C Programming Languageā€. Very slim book and it teaches you C quikly without any tomfoolery.

Iā€™d like to read more programming books but theyā€™re actually pretty expensive, IT doesnā€™t attract the brilliant salaries it used to.

I totally agree with you, with no books thereā€™s no proper programming

I write programs for Java ME and well known in narrow circles so many people ask me what to download to start programming. My usual answer is that first you buy books for language basics and they better be real paper books, not online. People who listened to me agree later that I was right and about others I usually donā€™t hear anymore.

My entire dev/test and ā€œprogram managerā€ team participate in a monthly book club. The books weā€™ve read so far: http://www.amazon.com/Carpoint-nbsp-book-nbsp-club/lm/R2VUI9C9YAYDDY

But itā€™s hugely challenging to find a new book each month. I look forward to stackoverflow.com fulfilling its promise!

Now, Iā€™m no expert, more of a hobbyist trying to turn a passion into a job (somehowā€¦), but:

I love programming books.

I like the ā€˜howā€™ style of books (Programming Ruby, and The Ruby Way in particular), are very nice. Also books that introduce a framework are interesting (I have Beginning Ruby on Rails E-commerce) are nice. They serve as quick introduction (good language introductions include a reference of the language, too) into a topic, and allow me to ask the right questions, and help me in getting to know the problem domain or language domain.

And I also like the ā€˜whyā€™ books. Or books covering a certain area in depth, too. They can be especially useful if they cover libraries like the .NET library (it is huge, I have little to no clue where to look to get to know the features), similar the Java library.

And lets face it: API/library documentation on the web can be nasty, too.

However, there is a real issue in finding good books. And for that, I rely heavily on recommendations by others, more expert than me.

I think I have almost all books Jeff recommends in my Amazon wish list.

Iā€™ve also noticed, that the quality of a book depends highly on the publisher, too.

And the ā€˜For Dummiesā€¦ā€™ books are a real mixed bag, Iā€™ve noticed. They can be real hit and miss (The SQL book is next to useless, while the Crystal Reports book was a tremendous help to me).

I can see the point in reading timeless books, but rarely there are some amazing ones you can learn a lot of.
I bought Omar Al Zabirs ā€œBuilding a Web 2.0 Portal with ASP.NET 3.5ā€, this man is one tricky genious! This was well worth my money.

Books like this are especially useful, if your a part time student that canā€™t afford expensive internet connection while on the train.

Thatā€™s a quite excellent bookcase there. I see many old favorites and many items from my ā€œto buyā€ list in there.

The truly shameful thing about our industry is that there are many practitioners of software development who know how to do it well but there is something of a disconnect with the way people tend to learn software development. Many who teach themselves grasp at disjointed code samples provided by googling for specific answers to specific problems and they tend to struggle mightily with attaining even the smallest bit of maturity as an engineer. Many who learn through formal education at colleges and universities receive either shoddy educations from a system that has discovered it can make more money by lowering standards than from producing competent professionals or they receive inapt educations which leave graduates poorly trained for the real world (i.e. software engineer hopefuls who learn computer science instead).

The result is that for every honestly good software engineer there are dozens (or perhaps even hundreds) of coders practicing shoddy cargo cult programming techniques or churning out software through copy-paste combined with random code mutation. The result is also that for every individual who tries to extol the virtues of good, well tested software development methodologies there are dozens (no, definitely hundreds) of snake-oil salesmen peddling quick-fixes and magic bullets.

We are indeed in some of the darkest days of software engineering to date, yet there is still much hope. There is an impressive number of people who know the better ways to develop software, and they are starting to find their voice, starting to organize, and starting to influence others at an ever accelerating pace.

Jeff, you read my mind.

The first programming language I applied ā€œprofessionallyā€ was PHP. Iā€™ve decided I need to come back to something like C++ to get a better foundation, and for this I am reading Thinking in C++ by Bruce Eckel.

Before downloading this book (I know, hard copy is better etc) I ran Bruce through your search and it seems youā€™re a supporter. Can you vouch for his book too?

Jeff, you wrote: ā€œI believe the same text is present in the original 1993 edition of Code Complete, but I no longer have a copy to verify that.ā€ I own a copy of that edition, and definitely, the text is present. It appears at the end of page 760. The chapter it is in is ā€œPersonal Character.ā€

Congratulations for your work,
Best regards,
Introspectre

Apparently programmers arenā€™t buying technical books anymore then. The internet has made information abundant albeit generously redundant and infinitely variable in quality just like the invention of the printing press in itā€™s day. Itā€™s no different to the bound pages of the literary world just bigger and faster. The internet is far more searchable, you can seek your info-fix in a finer grained manner. A book needs to be sourced, opened and digested. A web page can be sought appraised and used or ditched with a fraction of the effort. A book is a banquet where as the internet can be grazed. But you canā€™t take the internet as conveniently to the bath or your bed. Also books donā€™t disappear in a puff of smoke when some navvy chops the line to your local exchange by mistake! Stereo typically hackers have little regard for bathing and bedtime. But thanks to printers you can turn bits of the internet into your own tailor-made book for off-line consumption, itā€™s like on-demand TV. Yeah ā€˜On-Demandā€™ thatā€™s what itā€™s all about.

You should get Knuth, though, because its just a pleasure to read something so authoritative and comprehensive.

I would also add to your list of reasons the fact that authors are barely paid if at all for writing books. You probably went through that too. This state of affairs is not specific to computer science and although you can argue that writing is a call, the fact is that receiving a couple of thousand dollars for six months work raises definite barriers to serious writing projects.

I must be the exception to the rule - I read books constantly. Not just about programming, either - math, physics, electronics (or in fact anything remotely related to computers)ā€¦
Iā€™d like to hope that there are a few more out there like me.