tags:

views:

370

answers:

6

I'll admit it, i'm posting this as a question because i write it as an answer to another question and it was deleted. I think it's a really good question though. How do we pick books, how do we decide which ones are good. So i'm publishing this as a community wiki question.

First off, the reputation of the publisher matters. Not all books from a good publisher are good.

Right now i'd say the best books are coming out of Pragmatic Programmers, followed by O'Reilly, Addison Wesley, no starch, then Apress. So with no other knowledge of the author or subject, i'd choose a book in that order.

Beyond publisher, there's the reputation of the book. You know the book is good if it's got a name other than the title. For example, there's the Camel book, which is really titled Programming Perl. If a book is good enough to get a short hand name in the community, it's a canonical text. And of course if you want to learn that subject, get the book.

There are several primary styles of tech books being published today.

Manuals

There's the manual book, the classic is the Perl Camel book for example, it's not meant to teach you the language, but to document it, it's half walking you through learning, and half reference. In ruby the similar book is Programming Ruby, called the Pick Axe book. A manual is good to have, but won't hold your hand through learning a new language.

Quick Reference

Such as the Vi reference or the regular expressions pocket reference. These are short books which you keep at your desk because it's easier than pulling up another web page as reference. They're only useful after you've already gotten in to something. But on the plus side, they are usually cheaper.

The Tutorial Book

I'm personally not a great fan of this category. Agile Web Development With Rails and the Django book both fall in here as good examples, but so do all of the learn x in y minutes books. If you're not sure what to buy, buy one of these books. But NEVER NEVER EVER buy anything which tells you how long it will take to learn. They are always crap books which are packed with filler.

The Cookbook

A cookbook is organized around a series of recipes for how to accomplish a discrete task. There are cookbooks for every major programming languages and they are useful references, with the exception of the O'Reilly Python Cookbook which has way to many arcane recipes and not enough generally useful ones. In addition to languages, some frameworks and applications have cookbooks, I contributed a few recipes to the Rails Cookbook for example. A cookbook should NOT be the first book you get on the subject, rather it's the kind of thing you get later to fill out your understanding of an area.

The Picture Book

Not everybody learns the same way, so there are tech books aimed at different styles of learning. The picture book genre is relatively new, but can be a great way to learn a subject quickly. There are high and low brow tech picture books in the market. The high brow series are the O'Reilly Head First books and the low brow books are the For Dummies series. I personally quite recommend the Head First Design Patterns book as a compliment to the very academic and dry Martin Fowler books on the subject.

The Academic Style Books

The opposite of the picture books. The biggest academic style publisher in the tech space is Addison Wesley, all of the design pattern and agile development books are published by them. The fundamentals of computer engineering get written first here, then popularized in other styles of books. These are also the hardest to grok of all the tech books. A classic example is the The Art of Computer Programming which everybody owns but nobody reads, in part because all the examples are in pseudo assembly. If you're trying to brush up on your fundamentals you'll get more out of reading these books recommended by Martin Fowler than you'd get out of a 4 year CS degree.

About the Author

I tend to avoid books which are written by the creator of the technology being covered. The first English language Ruby book was written by Matz himself. It was terrible.

The best books are written by the serial authors who know how to cover a topic well. Take for example David Flanagan who's written best selling tech books on java, javascript, and ruby. These are the people who live two lives, one as professional developers and the other as authors and communicators.

What about everybody else? Well look at the blog of the author, is it good? Search for their name, are they a participant in the community. If they aren't, and all you can find are references to the book itself, the avoid it and choose another. Because if they aren't participating, they aren't connected, and if they aren't connected, they are going to make mistakes.

Read Reviews

Not all reviews are useful, one person will say a book is to technical while the next says it doesn't go in to enough depth. Particularly in the tech world we always have somebody who knows more about the subject. Everybody but the technology's core creator has gaps in their knowledge of the tech, and as i already said, the core creator is a very poor person to communicate how things work anyway.

Reading a few reviews can help you get a sense if a book is terrible or not. Mostly it's useful to figure out if a book from one of the better publishers is a lemon.

Read the book - Creative Commons

Many books are written either online as a process or released online under a creative commons license after the book has been published in print. I think this is great that people do this and it's a wonderful way to see if the book is right for you. Unfortunately reading a book on a computer sucks, so most of us who don't have nifty ebook readers have to get the dead tree versions anyway.

Buy lots of tech books

And i don't just say this because i'm an aspiring tech author myself. :-) Seriously, the cost of a book is about the same as going out to dinner, some books are a nice dinner with wine, some are a burrito. There is a lot written in tech books which simply isn't covered the same way in online documentation. A lot of work when in to preparing the book, editing, some fact checking, trying to put together a whole work which communicates an understanding of the subject.

In Summary

I think of it this way. A conference talk gives you a sense is what the technology is, it describes its shape. The blogs tell you wants going on now with it and how to solve many problems which arise. A book tells you how to use it. Look at the source tells you how it works.

+5  A: 

I have to disagree on the reviews, Amazon's reviews are very helpful and have not yet let me down. That's my first stop when looking for a book for a subject I am not familiar with. Most importantly I can read the comments and gauge the intended audience.

DavGarcia
+1. On average the Amazon reviews are very good.
Mitch Wheat
what I mean is!: the averaged-out tone of the reviews is usually a fairly good indication of the quality/usefullness of a book.
Mitch Wheat
I'd add that I also use Amazon's reviews to decide which books to buy, but I tend to look the rating overall, the number of ratings as a measure of the reliability of the overall rating, and the comments themselves to see if there are any consistent complaints. Page count is probably my last factor.
Dan Rigby
A: 

First of all, you have to ask yourself as why would you need a particular book? Do you want to become a better programmer? Do you want explore the innards of a particular programming language? Do you want to think in that language? If the answer to these quesito is yes, then you will have to read the book written by the language designer himself. I agree that this should not be the first book you should get hold upon. Any get easy and popular book. ( For any particular language, there is always an easy and a popular book available. Just ask the experts of that language). Next for you to become a good programmer, read advanced topics and also do read the book written by the designer himself.

Now, if you are just curious to know about a particular language and are being surfacial and for good reasons your earning of bucks does not depend upon your programming skills, then you may pick a beginner book recommended by an expert of the language.

Senthil Kumaran
+1  A: 

The table of contents gives a good indicator of the scope of the book. Skimming gives an idea of the perspective of the author.

+2  A: 

Dood, you've obviously thought long and hard about this one--jeez! Well I think you did a pretty good job categorizing the types of books that are out there. I disagree with "buy lots of tech books" though. Tech books go outdated so quickly that they're usually not worth buying. I prefer using an online service instead like Safari or Skillport 24x7 so that I can read all the latest and greatest books without having to buy them. I guess I'm fortunate that I get my subscription through work, but I would pay out of my own pocket if I had to...

barneytron
Actually this was just written off the top of my head. But i do like books and am going through the very painful process of trying to write one.
rabble
A: 

[Edit: added the last entry, which I forgot about! Oops! Re-reading the book list reminded me of it.]

Reading Fowler's linked-to list, none of the books sound much like the sort of things that will help one "brush up on the fundamentals".

My experience is that you can spot books that deal with fundamentals using the following checklist. If a + box is ticked, that makes it marginally more likely that the book indeed deals with the fundamentals. If a - box is ticked, that makes it significantly more likely that the book does not. Indented checkboxes have a higher value.

[+] Does the book never apologize for using mathematical notation?

--[+] Does the blurb on the back include mathematical notation?

----[+] Is there actually no code whatsoever in the book?

----[+] Does the title itself include mathematical notation?

[+] Are there exercises for the reader at the end of each chapter?

--[+] Were these exercises unsolved at the time of writing, despite having objective success metrics?

[+] Are all the code examples in one of pseudocode, Lisp, MIPS or SPARC assembly language, or Standard ML?

[+] Are examples given in N languages, each with a different paradigm, where N>=3?

--[+] Are these N languages Lisp, MIPS or SPARC assembly language, and Standard ML?

[+] Does it have the word "Algorithms" in the title?

--[-] Does it have the phrase "For Dummies" in the title?

[-] Does the title include the name of a programming language?

--[-] Does the programming language target the JVM or the CLR?

--[-] Does the title include any kind of date? Like a year?

----[-] How about a month?

----[-] What about some specific number of hours?

------[-] 24 hours?

--[-] Does the title include a version number?

[-] Does the title imply that it might actually deal with actual people actually writing actual programs?

--[-] Would the obvious inference be valid?

--[-] Would the obvious inference be invalid?

[-] Is there a case study involving people anywhere in the book?

--[-] Do these case studies involve (alleged) quoted speech?

--[-] Does each person in each case study have a back story provided?

[+] The introduction says that the book was written using emacs and LaTeX.

[-] The book is set in a sans serif font.

--[+] The sans serif font is one of the LaTeX ones.

[-] The book has the word "solution" in the title.

--[+] The entire book deals with the solution to one of the unsolved problems mentioned in a previous checklist item.

brone
"Is there actually no code whatsoever in the book?" dings SICP, tAoCP, EoPL, PAIP, CTM, SICM, to name just a few books with convenient acronyms. Hmph! :-)
Darius Bacon
A: 

"First off, the reputation of the publisher matters. Not all books from a good publisher are good."

Hmmm. So, if the reputation of the publisher matters, it seems like the reputation of the publisher doesn't matter!

This is one of the silliest questions I've ever seen here. What is the point?

rp