I used to write books. It was fun, it took forever. It drove me crazy, and it involved feeling great about a printed artifact. Years of struggle and focus yields a perfectly printed, bound bit of physical awesomeness.
The first book I published was with O’Reilly. It was great. (Look, I’m writing a book, how awesome is that.) Twelve months later after a series of battles with 500-page Microsoft Word documents and nights and weekends of effort I ended up with a book. At the time, 2004-2005, we still had a lot of these things called “book stores” and I was still able to go to a book store and browse a section of Java books.
Try that today?
The Java section in your local bookstore is five books. The programming section isn’t even a full bookcase, it is stuffed between the (enormous) section devoted to Adobe Photoshop and a selection of books about IT management. In some smaller markets you’d be hard pressed to find a programming section at all. Unlike the last century, very few of us are thinking:
“Oh, I really need a book on Java, I’ll hop into the car and drive to the local overcrowded mall, fight my way past advertisements for the Nook, drop $49.99 on a programming book. I’ll take that sucker home and add it to my collection of programming books.”
Think again, today’s programmer goes through the following process:
“Hmmm, I want to use Clojure, first I’m going to Google ‘clojure book’ to see what is out there. I’m going to stumble upon the http://clojure.org website and I see that there is an online reference. You know $29.99 for a Clojure book that is probably out of date isn’t worth it for me. This stuff moves too fast for publishers to keep up. I’m just going to keep on Googling for specifics. I just got done throwing away all my programming books, why add the clutter.”
This is the cue for a publishing executive to pop up and talk about the power of electronic publishing, Kindles, Nooks, iPhones, iPads and the like. Yes, there are people making money selling programming e-books, but it still doesn’t feel appropriate for the format. The last time I purchased a “programming book” to read on my iPad the formatting was screwy because the length of lines required for code listings was wider than the physical device. It was also a pain in the neck to copy examples between the iPad and the computer.
Yesterday’s programming book is today’s collection of Github repositories, blog posts, README.md files, Stackoverflow posts, and the occasional quick start guide. If there’s a book really worth buying it is the exception as publishers like Packt and Apress tend to just put a cattle call out for just about anyone with a pulse to write.
Today’s book is a web page, a web page that is consumed in response to a Google search. Google is, in many cases, the primary reader and the only reader you should optimize for. Today’s “book” isn’t even a book at all, there are no linear sections, and there’s no guarantee that the reader is going to read chapter 1 before chapter 2. A great programming book is no longer a “read it from start to finish” introduction it is a series of recipes with little or no “voice”.
So, you can continue to waste time thinking about formatting and typesetting and whether the pre-print proofs are perfect enough to send off to a printer. Or, you can just realize that today’s book is a wiki, let’s get on with it.