Book Test Unit

Context:

In our job (SoftwareDevelopment) one has to stay in a continuously learning process. Ideally the material for learning would be on the Internet, but that's another discussion. Thus we need to read OneBookPerMonth.

Problem

There are thousands of books available. You don't have enough money to buy them all (unless you're BillGates), but fundamentally you don't have enough time and you don't have enough intellectual capacity to study all there is to know about SoftwareDevelopment, ComputerScience, Mathematics and all related areas. I hope I didn't offend you with my assertion on your intellectual capacity, but I hope you're not God, or are you?

You have to be selective. You can't afford to buy books directly from Amazon.com, because you can't browse them. The books that you know for sure that you absolutely have to have them are probably already in your bookshelf, at most you can buy newer edition, safely from any online store. See TheArtOfComputerProgramming, IntroductionToAlgorithms.

Solution:

You go to a bookstore.

Like I did recently trying to do some research on OO. There were around 100 books in the dedicated-OO bookshelf.

You have to apply the following UnitTest algorithm for each book (For Each is very important here, you may find an author that you've never heard of, obscure, almost anonymous, the book may stay in the darkest little corner, it doesn't matter if you need it):

  1. Open the book, disregard the esthetics . Go directly to the Table Of Contents and read it thoroughly.
  2. If the book contains a chapter/sub-chapter on a subject unknown to you, consider it for buying, summarily read the ideas in the 'unknown' chapter and keep in mind from comparison with other books in the bookstores that may treat those subjects. GoTo Step 1.
  3. If the book only treats subjects that you feel you already know or have a general idea - such as a book on database systems -, choose the chapter of most interest for your current preoccupations. Read it summarily and see if you find a new approach. If the approach is not new, just GoTo Step1, probably YouArentGonnaNeedIt. Else keep in mind for comparisons with other books and GoTo Step1.
  4. Make your selection from the books that were not ruled out this far.

Caveats

The algorithm is far from perfect. Chances are a good book might not be available in that particular bookstore, and you really need it.

Solution: Visit bookstores very often. Choose bookstores carefully. For example, I'm happy that I work near an university and I find its bookstore a lot better than many big names.

The algorithm is non-deterministic. Work-around: Blame it on human nature, which is awfully non-deterministic.

The algorithm may not lead you to the best decision. Work-around: Get used to it. Humans CANNOT be sure they make the perfect decisions. The algorithm greatly improves your chances to reach a local optimum instead.

-- CostinCozianu


Alternative Solution: Get the (or a) book from a library, a second hand bookstore or normal bookstore, in that order of preference.

Read it until you are either finished with it or have determined that it really is not worth reading. Return it to the library (this is important; I tend to forget, and have to pay unnecessary fines), or sell it back to a second hand bookstore.

If you find that you for some reason have to check it out several times for rereading or lookups, keep it or get it from a bookstore if it's a library book. Likewise if you just think it deserves a place on your bookshelf for any other reason. Occasionally it may be out of print and unavailable second hand; in that case make a copy (that should be fair use!), do not steal it from the library!

-- LasseHp

Is it fair use? That would be cool, but I'm not sure that it is.


Costin, thanks for the great topic. I agree that keeping up on the literature about software development can tax any one person's capacity. Two other algorithms that I've used are:

---

Please share your experiences. How do you buy your books?


I once heard from a talk by DonKnuth (I think it was DonKnuthMitLectures No. 5) that he has a very simple personal algorithm to judge the quality of a book. He reads just one page very thoroughly; to make sure the page selection does not influence the "measurement", he always reads page number 316. If the book is shorter than 316 pages, he reads page (316 modulo numberOfPages). -- FalkBruegmann

Only problem is now book editors will catch on and make sure that whatever drivel they may put on the rest of the pages, page 316 is now really good. Hmm, going through my somewhat mediocre bookshelf, though, they haven't caught on just yet :-) -- MattBehrens

Geez, given that it's Knuth, you'd think he'd take along a PRNG seeded to the book's ISBN. I hear MersenneTwister is the current flavour.

Knuth chose 316 because of his 3:16 project: http://www-cs-faculty.stanford.edu/~knuth/316.html.


Whenever I buy a computer book, I usually know a little about the topic (for instance, I played around with JavaLanguage before I bought my first Java book). When I'm looking at computer books on that topic, I check to see if the books answers a question I had when I started. For instance, Java was my first C-type language, so for the first few days I didn't know what void was. The first book I found that made it explicitly clear was ThinkingInJava, and I have to say I made the right choice. -- SeanOleary


I just discovered the DrDobbsErcb site which seems to be a valuable resource. Anyone have any opinions on it?


Ironically, I've found that you CAN judge a book by its cover. You can also judge a book by the subject matter and the way it presents a topic. Anything saying "...in 21 days!" or "...for dummies" is right out. Anything which is over 600 pages and contains large amounts of photos, inline segments or other filler is right out.

One danger sign is wacky typography, especially obtrusive decorations around the page number (even A-W took to putting page numbers in WOB triangles for a while, god alone knows why, and a very few of those books were...dubious). If the publisher feels the need to add decoration to the page is suggests that they don't believe themeselves that the content is good enough to stand up by istelf. It also suggests that they don't expect anyone to be reading the book carefully enough to be annoyed by distractions, and/or that they just have no respect for the reader. Any of which is a bad sign.

You can also judge a book by its publisher. AddisonWesley makes some great books. OreillyAndAssociates also has a reputation for being solid, but I believe it has started to go downhill (I was shocked when I read my first bad O'Reilly book, but now I'm starting to see a steady slide towards well written hype).

The very good books on the market are already known by reputation. ProgrammingPearls, Knuth, ThePragmaticProgrammer... these books have withstood decades of innovation for the simple truths they reveal. Probably the best way to find an appropriate book is to do a search around Amazon. Find the topic that you're interested in, and then find which book everyone is buying. There's usually only one or two.

-- WillSargent

I have to second AddisonWesley... I have no read a single book from them that I have not loved.

I have. A-W are usually reliable, but the odd clanger slips through, such as http://bookshelved.org/cgi-bin/wiki.pl?TheObjectConstraintLanguage


Here's my tip for quickly evaluating the quality of a book. Think of some small part of the subject matter that you do already know fairly well. Look it up in the index, and check whether the author is talking sense or nonsense. For example, in a book about some new technology Foo (about which I'm totally ignorant but want to learn) I might look up the section on "interfacing to Bar" (about which I do know something). Works every time. -- RogerBrowne

Certainly sounds like a sound method to me. It also sounds like a good argument InFavourOfBookshops?. Did you read this method in a book? --MatthewTheobalds


EditText of this page (last edited June 8, 2005) or FindPage with title or text search