On a family trip to the Computer Museum in Boston I convinced my parents to buy me a copy of Write Your Own Adventure Programs for Your Microcomputer, since I was an Infocom junkie and had been writing my own “adventure programs” for some time already. I think this was my first technical book, and it was the first technical book that I met with disappointment.
I’m not sure how I picked up programming prior to books. Probably a combination of experimentation and entering programs from magazines. Unlike the other few kids I knew who also had computers, I didn’t spend a lot of time playing games. I mostly wrote code. Technical manuals that helped with this were rare.
There are very few good beginner books that are useful to have around after you’ve learned the basics. I have a couple of books that I keep around and refer to now and then (on very rare occasion anymore) for nuances that I’ve not committed to memory. Actually, scanning my bookshelf for them now, I see that Berta has run off with them. But even these aren’t books for beginners.
The “For Dummies” series has always grated on me, and probably anyone who considers themselves intelligent enough to start learning something from scratch. I find that these books lean the opposite way of most other beginner books, in that they have too much “you can do it” prose and fancy icons, and not enough meat. Most beginner books have too much detail or assume too much foreknowledge, and don’t contain enough explanation or encouragement. I find this particularly so in every Ruby book I’ve encountered, which seem to all begin at a point where Ruby syntax already makes sense. Here’s a clue – It doesn’t.
Beyond the beginner book, I often find the organization of technical books perplexing. Sometimes you just want a technical reference. The SitePoint Ultimate HTML Reference is a one of these. They’ve tried to organize this book into logical groups. Sometimes this is useful, but more often than this, I just want to look up a single tag and can’t find it quickly because it’s in some strange section I hadn’t imagined. I think this grouping is unnecessary in a reference. Alphabetic is good enough. Adding some “see also” references to the items if you need a cross-reference to related tags would be a better solution than these groupings.
Technical books also go stale very quickly. Even my copy of the above HTML reference is already out of date. It doesn’t include the common HTML5-specific tags like section
and header
. And as the HTML5 standards change (like any technical topic does - very quickly), the book becomes more and more stale. Offering online supplements to the books keeps the information that the “book” offers more fresh, but then, is that really the book? If I wanted an online reference, and let’s face it – there are plenty of great, free online HTML5 references, wouldn’t I choose one of those instead of paying for a hardcover book?
The main issue I have with technical books is that their digital incarnations are insufficient. We’ve somehow failed to develop a useful transition from paper to digital that includes a useful way to integrate the two mediums. The online versions tend also to be very poorly formatted for use when at the terminal. I actually despise using the Kindle version of most technical books because they’re not anywhere near as handy as flipping paper pages. The mere thought that the paper version works better indicates to me that something is wrong with the UX of the digital version.
Not as a perfect example to fix all of my issues, but as an example of what would be useful, consider a book about HTML5. Imagine a thin book with the basic properties of HTML5 tags and usages. The book would only have the tags, display the basic tag attributes and common values, and most-indexed information. Each tag entry would contain a reference that opens a more detailed page from the web, that can interact with the book (by providing physical page number references, for example).
With the current state of on-demand printing, it might even be possible to print the current state of the HTML5 standard, on-demand for each copy ordered. Your book would have a serial number correlating to the book’s web site that would indicate what changes your book contains that the web site would need to account for. If your book became sufficiently stale, you could order a new, current copy. An indicator on the site could show how stale (by percent?) your book had become in relation to the evolving standard and the online content. This would be a useful indicator of whether a new edition of the book would be worthwhile to purchase, although I’m not sure there’s a great benefit of this to publishers who simply want to sell new editions every year with a few pages swapped out.
I would like to see technical books completely rethought. There’s a newer trend in these days of on-demand printing for small web design shops to sell 64-page books for $30+ on single topics. That’s interesting, but certainly not as nice as getting the same high-quality content in an updated volume on a regular basis. I wonder what thoughts others might have about how to make technical publications more useful.