Books about programming have certainly become less essential over the past 15 years or so. In modern development environments like Visual Studio, you can create a simple do-little application without knowing much of anything. You can then build on that foundation by following step-by-step guides in online tutorials. If you get stuck, you can type a few terms in your favorite search engine to find a blog entry or a Q&A site such as Stack Overflow that answers your question.
The Web has demonstrated that it's greatest strength is the accumulation of information from many sources, and providing links between related concepts. However, where the Web falls down is in presenting long narratives, and I think this is a problem. For thousands of years, human beings have learned not by accumulating facts, but by following a narrative — a story that forges a path through the forest of information rather than merely describing all the trees.
The Web is so named because it is structured around the use of hyperlinks. These hyperlinks are absolutely essential in reference material, but not so much in a narrative. In a narrative, every hyperlink is an interruption — an invitation to leave the narrative to go somewhere else, perhaps to eventually return but maybe not.
Books — at least those that are written well — provide narratives that the Web does not. For example, can you imagine trying to get a big picture of the American Civil War solely from reading numerous Wikipedia articles on the subject? It's insane! You'd get a much deeper and more indelible understanding by reading a good book, such as James M. McPherson's classic Battle Cry of Freedom. One of the jobs of historians and other writers is to shape myriad facts into a narrative that engrosses our attention, and reveals how everything fits together in panoramic view.
I think programming books are similar. It's always amused me when some people describe my books as "documentation," or imply that I've taken the existing documentation and merely rewritten it. If that were the case, I'd be describing all the elements of the programming interface in alphabetical order. Once an author chooses not to alphabetize the topics, another order of presentation much be devised, and that's really the hard part.
As I'm writing a book, my primary intent is not to regurgitate the documentation but to impose a narrative on the material. This narrative has to begin with the basics and gradually introduce more and more material with a pace that neither overwhelms nor bores the reader. A narrative is necessarily a single path, and I spend much time and effort coming up with a good one. The result is a book that is best used by being read sequentially (even if I know that's not always the case).
Despite all this talk about narratives and paths, it's still hard to convince today's programmers that investing in a book might be useful. The Web provides so much free programming information that a book seems superfluous and even (if it's a very long book) intimidatingly frightening.
One of the easiest ways to convince programmers to buy a book is to make the book free. But that's not a general solution to the problem. As Stewart Brand said — in the less famous half of the paradox — "information wants to be expensive, because it's so valuable. The right information in the right place just changes your life." He might also have added that the individual who assembles and shapes the information must eat, and food usually does not want to be free.
Writing a book takes time. At my very fastest, I can only create about a hundred book pages per month of full-time work, and these pages must also be reviewed by editors and technical editors, and made to look pretty. The only way I can write a "free book" of any substantial length is for me to get paid by somebody other than the book's readers. (That's the case with my free book Programming Windows Phone 7.)
If a book can't be free, perhaps it can be very inexpensive, but there's a danger in that as well. Author royalties are based on percentages of the book's cover price, so if the book is too inexpensive, it's possible that the book might saturate the market but still not generate enough royalty income to justify all the work.
On the other hand, it's well known that a dollar in hand is worth two in the bush, so perhaps a book can have a lower price when it first goes on sale, and then a higher price later on. This provides an incentive for the potential readers who know they want the book to snap it up quickly at a lower cost, but for long-term sales to be based on a price that is more conducive to compensating the author.
What would be really nice is persuading readers to commit to buying the book before the book is even published! That's not easy (obviously) but what if these readers were given something in return? Perhaps a chunk of the book that's already been completed?
Which brings me to the subject of the 6th edition of Programming Windows. Contractually, it is the publisher who decides when a new edition of a book is warranted, and then they approach the author. I mentioned three days ago that I was persuaded to write a 6th edition of Programming Windows because of the interesting nature of Windows 8 itself. But another reason was clearly a publishing experiment worked out by Ben Ryan and Devon Musgrave at Microsoft Press that I found very seductive.
The details of this experiment are described by Devon in the Microsoft Press blog. Here's the part going on right now: Until the end of May, you have the opportunity to buy the ebook of the 6th edition of Programming Windows for just $10. For that single payment of $10, you get the Consumer Preview ebook now (almost 300 pages), the Release Preview ebook about two months from now, and the final ebook around November. Wait a few days until June, and this same deal costs $20. The longer you wait, the more you pay.
Currently, the ebook must be purchased from the O'Reilly site (link below). The ebooks are downloadable in PDF, ePub, and Mobi formats, and there is no digital rights management except that which your conscience imposes on yourself.
I love writing books. It's the hardest thing I know how to do but also the most rewarding. I don't want books to die. I want to continue being able to write books. My friends at Microsoft Press know this about me, so they probably figured that I'd be eager to participate in this experiment.
If the experiment succeeds, then Ben and Devon should receive the Nobel Prize in Publishing. And who knows? It may revolutionize the way ebooks are marketed and sold.
What's really cool is that you too can be an important part of this experiment.
Programming Windows, 6th edition
Special Price through the End of May 2012!
For just $10, you get:
(1) the Consumer Preview ebook right now
(2) the Release Preview ebook in a couple months
(3) the final ebook in November
Programming Windows 6th Edition
Consumer Preview eBook