What's the worst programming-related or technical book you've ever read? This can be any book which one way or another can be connected to programming, as long as it's not fiction.
This book was written by a person that truly did not understand the finer points of java. He didn't even understand by ref or by val parameter passing. I'll quote the top rated amazon review: (it's a 1 star)
In the preface, the author states that the goal of this book is to transform a developer from the intermediate level to a true guru. In the back cover it even promises that "you'll master the art of writing error-prone (sic!) code", and the reference to "error-prone code" sadly finds its confirmation once one starts reading.
It takes about two chapters to demolish the author's credibility as a guru, and you will be reading the rest of the book with a skeptical eye, doubting every assertion that looks questionable and suspecting that the author is talking well above his level of competence, and patronizing about it too!
The first chapters are an atrocious review of some Java concepts, densely packed with serious mistakes, not typos, mistakes (plenty of typos too).
As an example, on page 9 the definition of the `for' statement is wrong, a simple check of the Java Language Specification would have spared the author some embarrassment.
On page 15 the author gives us wrong rules for labels in Java, and in the same page he confuses the logic of the 'break' and 'continue' statements, providing also a logically wrong code example, just to screw-up things even better.
I would not know how to describe the section on "Chained deferred initialization" on page 53, "raving" maybe. This one is cited in the errata page at oreilly.com, and the "author regrets that it slipped through the proverbial cracks". I am more concerned that something like that has been actually written (complete with code samples!), than that it has passed unscathed through editing and reviewing. Let's hope it was written by somebody else playing with the author's laptop. Somebody who does not know what JVM means.
There are also less severe but equally confidence-abating points, like, on page 25, the form:
new String("A button to show" + text);
which we should not find in books for guru wannabes.
The author is probably a productive software architect, some points, later in the book, are interesting, though nothing could be defined advanced, but he does not know Java better than an average developer, and this book does not add very much to an intermediate level, apart, maybe, from a warning about writing books: writing a book can transform you from a good developer into a bad author.
It is sad that we are flooded with such mediocre and unprofessional "error-prone"publications from such once reputable publishers, from time to time I still re-read and enjoy the conciseness, clarity and value of classics like K&R's "The C Programming Language" and I wonder why today's output is so vastly inferior.
As one of the few exceptions, I strongly recommend Bloch's "Effective Java" (Addison-Wesley) which is truly a book written by a guru. After reading that one, "Hardcore Java" will seem even emptier.
Its errata on O'Reilly is (last time I checked) 20+ pages long.
edit: just checked it, default settings in word, it's 23 pages long.
I still remember how bad this book was:
I was angry reading through it. I'll quote from my Amazon review:
Almost immediately, I was disappointed: Chapter 1 is a tribute to how amazing Oracle is and how godlike Larry Ellison is and it's filled with pages and pages of revenues and sales. What a waste of paper. Then Chapter 2 tells me how to use newsgroups and Google: more wasted paper. I come to Chapter 3 and I think I finally get into learning something. Then I notice they concentrate on Sun Solaris as the operating system which isn't very helpful to a person trying to learn this on his own at home.
Then on page 84 I read, "In earlier releases of the Beginner's Guide, we walked you through the Oracle server installation. With Oracle 8i and now 9i, it's too big a topic to cover in a book this size." That's how they start out their step-by-step walkthrough of setting up your first Oracle database. Oh, the last step reads, "12. Read the rest of this book." To me, the book wasted 80 pages then tells me installation would take too long. Very disappointing.
Worst. Book. Ever.
It's the size of a phone book, and it's laid out like a sort of recipe book. It's basically a massive collection of thousands of code snippets for accomplishing various tasks, taken completely out of context and often wrong or broken or dated.
The only thing more hilarious is their follow-up book, Jamsa's C/C++/C# Programmers Bible. Because those languages are totally interchangeable, right?
Would you buy a book on programming from this man?
The worst book I ever read was Ingegneria del codice by McConnell Steve.
Yes, it is the Italian translation of the best book I ever read: Code Complete. But the translation was so bad that I had to buy the original version. It has been the last translated technical book I bought. Since then, I only read technical books in English.
This book was our reading list for a module on C++ in college.
It seemed to be a kinda of 2 for 1 purchase so we wouldn't have to buy a UML book.
The book's huge size combined with no flow and an obsession with ants is why it get my vote.
I think it may be in the running for the worst cover on a computer book.
I've come across lots of bad programming books, but those have always been ones that I just happened to come accross (e.g. in a bookstore, at a friend's place etc.). The only really bad book that I have ever bought and tried to follow that turned out to be utter garbage was Java 2: The Complete Reference by Herb Schild. The TA actually recommended that book.
I spent the whole semester wondering why that book was filled with irrelevance (that book isn't sure whether it is a tutorial or a reference IMHO). I know of some people who have liked it and claim they derived some benefit from it, but I just ditched the book near the end of the semester and focused on the class notes. Later on I found better books on Java, and really learnt the language.
Edit: Someone actually "borrowed" the book from me after some years, and failed to return it. So, I guess a least one person liked it.
Pro PHP Security by Snyder & Southwell for Apress.
Whilst I've met a lot of webdev books and tutorials with an extremely poor attitude to security (hence this cry for help), this book reaches new depths by having code packed full of security holes in a book that is supposed to be all about security.
I never read it in full, with loads of chapters barely touching on PHP, but even a cursory flick through revealed HTML-injections (XSS) in almost every example, even in the chapter about how to avoid XSS attacks. There's SQL-injection. There's directory traversal. This is in the ‘how to do it’ examples, not the ‘here's a common mistake to avoid’ bit! There are even (inadequate) suggestions on how to ‘safely’ use
system, which could much more sensibly be replaced by the word ‘DON'T’.
What solutions it does offer are largely wrong-headed and discredited approaches based on ‘sanitising’ or randomly escaping at the input stage, instead of really understanding how text escaping works and how you need to do the right kind of encoding as and when output in a particular format is required. This misunderstanding is a widespread cause of broken apps and it is heartbreaking to see it in a ‘security’ book. And then there are the totally bizarre recommendations like adding an ‘admin lock’ column to all your tables to try to enforce access logic. Whut? Oh, and the code's a mess of mixed-up logic and markup, natch.
4 stars at Amazon! Buy your copy now!
Anything and everything written by Herbert Schildt. Calling this one book is probably a bit of a stretch -- it's more like an eternal case of food poisoning committed to paper.
Fractal Programming in C, by Roger T. Stevens. As Leonard Plinth-Garnell would have said, "Exquisitely awful!"
Numeric Recipes in [C | C++]. Lots of "recipes", but 1) the code is really Fortran with C-family syntax, and 2) many (most?) of the algorithms is propounds are numerically unstable and generally best avoided.
Oh, and, well, controversially, this, I guess:
Stroustrup's The C++ Programming Language, third edition. It's not the worst programming book I've ever read by a long chalk, but it's certainly the most disappointing.
I remember liking the second edition, which was, at least, an attempt at writing in the same terse style as K&R's C masterpiece. Sadly, that edition predates templates and other features of the modern language, so isn't much use today.
The third edition jettisons any attempt at that terseness, ending up with a book three times as long as its predecessor, filling up its pages with endless tedious discussions of the author's ideas of best practices for object-oriented coding and software development in general.
Somewhere in between all the rambling there's a description of how the C++ language works, but good luck finding it. It's a sprawling mess of a book.
(Much like the language, eh?) (Sorry, that was uncalled for.) (Well maybe a bit called for.)
Applying Domain-Driven Design and Patterns: With Examples in C# and .NET
The shame was that I love DDD, love the ideas presented in the book and the author is intelligent and knowledgeable; but I've tried reading this book through maybe 5-10 times now and just can't do it. The author needs to know when to stop talk, stop going on tangents, stop providing 'did you know' or 'story about this paragraph' sections on damn near every single page and stop trying to name drop on every paragraph.
Bottom line: The book's got some good information/ideas, except that they're buried in so much BS, that you'll never get to them. This book could have been 1/4 its content, and it would have been good.
UML in a NutShell (1st edition).
Essentially unreadable, needed reviewers to tell the author to start again with some explanation, not just a summary of the standards.
The 2nd edition, on the other hand, is readable and useful.
How to do everything with PHP and MySQL by Vikram Vaswani. That book set me back so much when learning programming at first. Horrible code, constant mixing and matching of code and markup, complete ignorance of OOP the barest nod to security throughout and just plain ignoring PHP5, which even then, wasn't exactly brand new.
I wrote a blog post on programming books in which I had this picture comparing the two first PHP books I got.
Guess which has the more accurate title?
Programming in C++ by Dewhurst and Stark:
It may not have been the worst ever. It makes my list because the first edition cover looked exactly like K&R's The C Programming Language, so I was expecting a work of similar quality. I got a copy 20 years ago, just as C++ was starting to get widespread notice. This book taught the syntax, but it did nothing to show a C programmer how to take advantage of C++'s features. I found it a very frustrating book.
Pragmatic Version Control using Subversion - Easily in the bottom rung among all the Pragmatic Programmer books I've read till now. Extremely thin on content. Some might argue that this book is for absolute beginners who are starting out with version control, but that's rubbish - whatever the book has, is not actually worth writing a book for.
I can't remember the name - later I might see if I can dig it out - but there was an ASP.NET book I had that had all the code snippets (and there were a lot) as Visual Studio screenshots. It seemed cool at first because it showed me exactly where to go in the IDE (I was just learning at that point). After a while though (Chapter 2, I think), I found I knew where everything was and I was just finding the shots too difficult to read.
Pro C# by Andrew Troelsen was mostly very good, but someone needs to teach the man to use examples properly. He'd teach one technique for a topic (let's say multithreading), then teach another and compare the two. The problem is that rather than simply updating the first sample with the new code, he'd write a totally new application that does something totally different, and throw a bunch of extra concepts into the mix as well.
A Computer Science Tapestry: Exploring Computer Science in C++
This was assigned reading when I was in college. Apart from being totally soporific, this book presents things in such a convoluted way, I doubt I could have parsed it without prior programming knowledge: most of my class, in which there was only one experienced coder beside myself, was completely lost.
I gave up after reading only a fraction of the book and tried using it to hold up the end of a wobbly bookcase. It wasn't great at that, either: a little too thick and the cover was slippery.
Verification of Sequential and Concurrent Programs, Second Edition, by Krzysztof R. Apt and Ernst-Rüdiger Olderog.
Maybe it was the subject matter, but I distinctly remember this as being the driest book I have ever read. Getting all the way to the end was a genuine soporific challenge.
Not that the book was bad, but its title is very misleading, especially to people new to C++. The preface of the book promises to teach you how to program in VC++, and a background in C but not C++ is all you need. Truth be told, you absolutely cannot learn anything about C++ from this book.
I owned this book for about 10 years, and recently (after working for a C++/Windows job for 4 years) I started to find a few chapters to be a bit useful when explaining stuff to new hires.
People wishing to learn Windows Programming are advised to: (in chronological order)
- Learn C (and preferably get a CS degree)
- Find a C/C++ project team and join it, and focus on the pure C/C++ part of programming to master it
- When something is needed, learn straight from MSDN (it has improved a lot in the last 4 years). Ask your coworkers for code snippets.
- Finally, read this book. It will start to make sense.
We had a course at the university about knowledge systems. The book was real bad, it wasn't finished and hard to read. The teacher did not follow the book (although it was required for the course) and the exam consisted of multiple choise questions not related to both the book and the course. But fortunately the teacher reused questions of previous exams so the students learned them.