Like a lot of people on Stack Overflow I love to read books about programming, almost as much as I love to read the lists that people add onto their websites, Blog's and this very website.
However, for every gem there are a thousand turds, and to one developer a gem could just be a shiny turd to another.
Whilst there are hundreds of book questions on this website asking users to recommend books that they have loved I have decided (after looking for a similar question and not finding it) to create a list of books that users have detested. After all, if we're going to fork out money for these books it'd be a good idea to get both positive and negative aspects out there.
Please refer to a specific book, and with it add an image of either the latest version or the version you have read. Also, if you have the time please comment on the answers to provide your experiences with the books.
Anything with the words "Teach Yourself x In 24 Hours".
I would very strongly recommend against Data Structures and Algorithms in C#:
This was the review I left on Amazon:
I found this lying on a colleague's desk and had a flick through; I didn't read much to be honest but what I did see was enough of a warning to make me write this: DO NOT BUY THIS BOOK.
There are things like a Queue class implemented using an ArrayList as a backing store "because of its dynamic properties". I can only assume he means amortized doubling here. The book boasts about "not using big-O notation" which is a damn good job because the dequeue method is implemented using RemoveAt(0) giving O(n) performance in all cases, when with a circular buffer an O(1) implementation can be trivially achieved (except in the case when the buffer is full, of course).
The next structure is a priority queue. You might imagine this would be done with some sort of heap; a binary heap in an array being the typical implementation. Instead it's also done with an ArrayList and every time an item is added it copies the items into an array, sorts them, and then puts them back into the ArrayList. The same goes for dequeue. So while you could find an implementation of O(lg n) performance for both enqueue and dequeue on wikipedia, he goes for O(n) in both cases.
I was so appalled, and so angry that somebody with clearly no knowledge of data structures was allowed to publish this rubbish, that I didn't read any more. Neither should you. If I could give it minus 5 I would.
The Manga Guide to Databases [1] Do I need to explain why?
[1] http://rads.stackoverflow.com/amzn/click/1593271905I thought Beautiful Code [1] was a huge, disjointed letdown.
[1] http://rads.stackoverflow.com/amzn/click/0596510047The Art of Computer Programming [1], by Donald Knuth.
Let me preface by saying Donald Knuth is awesome, and anyone who could read and comprehend The Art of Programming would be a better computer programmer for having done so. However, between the amount/complexity of mathematics, and the amount of assembly language, the vast majority of programmers will not work through the exercises. Without working through the exercises, the value gained from 'reading' the book is dramatically lessened. The book is seriously dense, it is not a light read, and anyone who buys it without that understanding will end up with the book sitting on their bookshelf unread.
IMO it's better to buy a book you'll get value out of, than one that you could get value out of, but don't.
PS: I have a bachelor's degree in Mathematics and a master's in Computer Science. I've 'read' my 3-volume set of "The Art of Programming" once, with about the amount of dedication and time devoted to it that I'd spend with a similarly sized novel. I'd be lucky if 10% of the material really "sunk in". I'd like to be able to give the books the attention they deserve, but that probably won't happen any time soon.
[1] http://en.wikipedia.org/wiki/The_Art_of_Computer_ProgrammingAny book with 17 authors is usually bad. Any book with a timeframe in the title - "7 days", "24 hours", etc. Any book titled "Teach Yourself..."
Anything written by Steve Holzner [1].
He has published more than 100 books, about 5-10 books per year. Books about almost every possible language or technology: Visual Basic, C++, Java, .NET, PHP, Perl, HTML, XML, Ajax, JavaScript, jQuery, Ruby on Rails, Django and many others. "Teach yourself ... in 21 days", "Design Patterns For DUMMIES" and even "Quantum Physics For DUMMIES".
JohnMcG has already said it in his answer: [2]
[1] http://www.amazon.com/Steve-Holzner/e/B000APQL44/ref=sr_ntt_srch_lnk_1?_encoding=UTF8&qid=1273591840&sr=8-1How likely is it that the same person is an expert on C++, SQL Server, PHP, and project management, and has time to write books on each subject?
This book was really disappointing. I picked it up on vacation few years ago when I was trying to learn to write custom AJAX. The first 98% of the book were JavaScript examples. The last chapter was a paragraph like this, and then a few examples of implementation:
Ajax is a subject so complicated, entire books have been written on it! Instead of writing your own, check out Yahoo's Ajax Library at [link].
I've found many Wrox books to be poorly edited and mostly filler. The covers are hilarious, though.
C: The Complete Reference by Herbert Schildt, see C: The Complete Nonsense [1]
The Annotated ANSI C Standard, annotated by Herbert Schildt, see http://www.lysator.liu.se/c/schildt.html
I also assume that all "for Dummies" books are terrible. I have only personally read C for Dummies by Dan Gookin out of morbid curiosity, and it was quite clear the author didn't really know C. Later editions may be an improvement.
[1] http://www.seebs.net/c/c_tcr.htmlA Million Random Digits with 100,000 Normal Deviates [1]
There are much easier ways to find random numbers.
[1] http://rads.stackoverflow.com/amzn/click/0833030477If you see books on seemingly disparate topics written by the same author, it's generally good to steer clear.
How likely is it that the same person is an expert on C++, SQL Server, PHP, and project management, and has time to write books on each subject?
Any "first edition" of a new language by Dietel & Dietel.
They have a bad habit of taking a similar language book and using global "search and replace" to get the new book out first.
Probably their worst effort EVER was their first edition of the C# book. It was just their current Java book with "cut and paste". Horrible.
Generally, it takes about 3 editions for any author to get a new language book "decent".
-R
Any book offering to teach you a full language in and out in under a month is utter garbage.
http://norvig.com/21-days.html
I'm showing my age here, but I just can not stand the Head First series of books. They are not written for anyone born before 1970 that's for sure. However, I'm probably in the minority as far as SO users [1]. In reality, I have not seen many bad reviews of the series (no one but me 'detests' these works...). Personally, I need more words and fewer photos, cartoons, etc.
[1] http://stackoverflow.com/questions/50094/age-distribution-of-stackoverflow-usersThe "Game programming in X languge" series. They spend lots of pages teaching very little.
I'd advise against any book that is a regurgitation of an API with some added examples. Google easily makes these books obsolete and allows you to more easily find answers that are relevant to your topic. These books never get too specific about issues either. How many times have we seen 1000 page books that don't tell you anything useful?
Books like this C# book are pretty much paperweights
[1]
Data Structures Demystified
It's a good idea for a book. But too many errors make it difficult to learn the technical material they're trying to teach.
Pretty much the only book (and thus only documentation) on the Composite Application Block for WinForms.
Cons
Pros
...
What I found in this book:
I complained [1] and filed all the errors, but after 4 years the errata page [2] still has only one entry, you couldn't have guessed it, about a corrected screenshot. One error I didn't file.
The worst thing about having bought such a book is that you can not even pass it on to a friend, or a library... You couldn't possibly wish someone to read this. All you can do with it is light your stove...
Proposed alternative: Mastering regular expressions by Friedl.
[1] http://p2p.wrox.com/book-beginning-regular-expressions/43110-dont-buy-book.htmlIntroduction to the Personal Software Process, by Watts S. Humphrey.
It's the software book with the highest percentage of useless and misleading concepts that I've read. It will teach you to make software estimations by counting the number of loops, to make the first code review even before compiling, etc.
Update
@EnderMB, unfortunately I threw the book away and I can't check it. From what I remember, the author asserts that his method does work and that if you try it, you will see it for yourself. He proposes you to follow his method and draw your own conclusions.
The main problem I see with his method is that it feels way too old fashioned and seems to be relevant only for old ways of doing software, but not for OO software and modern IDE's. Also, I found the forms it includes for tracking your stupid mistakes (including typos) very boring and irritating to use.
From an Amazon review by A Customer:
"Lastly, most of the data used to show how things improved after using the Personal Software Process was from 2 groups, one "real world" company and a group of students. Both groups only had around 15 people. Even combining both groups a sample of 30 programmers is not overwelming evidence. A larger sample is needed."
In short, IMO 95% of the book was a massive waste of time.
Update 2
For further information on the process described in this book, see this question [1].
[1] http://stackoverflow.com/questions/28197/do-you-follow-the-personal-software-process-does-your-organization-team-follow-tI have a book laying around somewhere that I wish I could find: Operating System Concepts in Java.
"Pro whatever" from Apress is full with unnecessary explanations and it's better named "Beginner whatever" instead of Pro.
The Golden Rule is whenever you find a big book, it's probably full of useless explanations.
Any book of over a 1000 pages covering only a development environment.
While it's a decent enough reference, I was just a little disappointed with Sams' PHP and MySQL Web Development. I think they jumped around a bit too much.
To start things off, if you see this book please tear it from the shelves and wipe you feet with it.
Java Software Solutions by John Lewis and William Loftus
This book is fantastic if you've never touched a computer before and you're looking to write a couple of nifty programs to show your friends, but for anyone that's even dreaming of programming for a living it's terrible. I don't believe this is as much a fault with the authors as it is with how it is recommended. When this book is used as the recommended text for first-year university students I cringe, simply because those that want to learn shouldn't have to be walked through Java by a lecturer that's mistaken themselves for the students' mother.
The book works, I've worked through the books and the examples compile and work as intended. However, by the time I had written anything worthwhile using this book I could've worked through far more examples if I were using another. It takes too many pages to explain trivial things and that's what ruins the book for me.
If you are 16 and new to this whole writing software thing in general then this book might get you programming in a year, but if you're looking to learn any quicker than that invest your money in another book. Thinking in Java is still my favourite Java book and topped up with the Sun tutorials you really cannot go wrong.
If you're looking to learn ADO.NET, I found the book Microsoft® ADO.NET 2.0 Step by Step by Rebecca M. Riordan to be rather useless. It's one of those books that shows how to use wizards and not really teach you anything. If you need to do something slightly different from the example you have no hope if this is your main resource for learning. I guess a step by step book might be intended for an audience that just wants basic examples though.
It would be a much better investement in time (and money) going with the ADO.NET Core Reference and, to a lesser extent, ADO.NET 2.0 Core Reference books, both by David Sceppa.
Just my opinion based on my own experience.
Pro Linq
[1]
There is not a single good thing I can say about this one. It is very poorly written and mostly a really sloppy duplication of the MSDN docs. Save the money, read about it on MSDN.
Too many people in this are complaining about books for the wrong reasons. So many people have said things like "anything with a time frame", but some of them, the main ones that spring to mind being the Sam's 21 days books, are great as an introduction, so long as that's what you treat them as. Of course they're awful if you're expecting completely mastery of the language, but that's not what they're made for, they're just there to give you a solid enough ground to expand from.
That said, I have to say no-one should touch the For Dummies ones, or at least the C++ one, I haven't looked at the others but it they sound to follow the same pattern. And I realise how that can sound with what I just said, but that thing is useless as even an introduction. God only knows how anyone's supposed to get anywhere with an OO language, when only given such a fleeting glimpse at the concept of an object.
As un-recommended by Jeff Atwood [1] himself:
[1] http://www.codinghorror.com/blog/archives/000971.htmlThis will piss off a few people, but I would not recommend Programming Perl to anyone who wants to do Perl. To me, it seemed to ramble on and on. There are much better Perl books.
Javascript: almost all books on the language. They tend to give lots of simple web-type examples that use up half their paper on source code, and don't really teach you much about the language itself. I've seen many books that have included bad or questionable programming practices.
SQL/databases: SQL Queries for Mere Mortals [1] and Database Design for Mere Mortals [2]. I had a friend who recommended these highly. They're all right for beginners but they do too much hand-holding, and once you get a handle on the basics I found them to not be very useful.
Here's what I expect from a really good technical book on a language or subject:
Animal
, Bird
, Mammal
, Sheep
, Vehicle
, Truck
, Car
and Sportscar
to illustrate issues with inheritance and hierarchy, etc. -- but other than illustrating these concepts they're useless to someone writing programs for datalogging/parsing/numerical analysis/etc.
RAII
[4] in C++ is a good example that should be discussed in context of resources like files/sockets/windows etc. that are much more real than Car
and Bird
.The third edition was a huge pile of nothing special. I really regret spending money and shelf space on it. The topics covered are all over the place.
I have a problem with any book about C# that can't even get it's version number right, and identifies it by a year, rather than a version number.
I loathe any book by Wrox press. As a Grammar Nazi (pardon the expression), their stark refusal to pay a decent editor to proofread the books drives me nuts and I refuse to contribute to their coffers.
Applying Domain-Driven Design and Patterns: With Examples in C# and .NET
It is not that one should not read it, but read Eric Evans book [1] instead and spend time applying it instead of reading a second book on the subject.
[1] http://rads.stackoverflow.com/amzn/click/0321125215Pro ASP.NET in C# 2008. Possibly the most boring book I have bought. Better to get the Wrox ASP.NET 3.5 book, and take it from there.
Written as a guide; but definitely a verbose reference. Meh.
The GoF book.
Yes, the content is pure gold, and you may get more wisdom out of it than 10 other great books but I found it's a pain in the ass to read.
If found Design Patterns Simply [1] a much better read, even if it was not that deep a the GoF book.
[1] http://sourcemaking.com/design_patternsHead First Design Patterns.
Leafed through the whole thing while at borders yesterday. While it goes in depth on the simple ones like Factory, Adapter and Decorator which you should be able to grok from the wikipedia page, it leaves only a page or two for the more interesting ones like Visitor that you might actually struggle with.
Edit: Lest I sound completely uninformed, I was at borders for about 2 hours and so I at least scanned 80% of the book. I am also a fan of the Head First series. The complaint is specifically that this book goes on and on about intuitive concepts like Adapter where just the example would have sufficed but when it comes to something that a beginner might actually struggle with it sticks those patterns in the appendix where it gets a page long summary with no example. I was quite disappointed.