Last week a coworker brought this article by Jeff Atwood to my attention:

Coding Horror: How Not To Write a Technical Book

Of course, I'm flattered by what Jeff (and commenters) said, and I'm happy that he gave my book a chance (especially since he didn't seem to be familiar with my .NET and COM book). I'm also honored to be mentioned in the same breath as Petzold, who is clearly a really smart guy and a legend. What surprised me was the amount of interest the story generated. Even Tim O'Reilly chimed in and posted sales comparisons between our two books. (Although in addition to the funky math, it seems unfair to Petzold to omit the 3-4 months when his book was out and mine wasn't.)

I didn't think Petzold's first reaction was an insult to my writing. Besides, I tried converting my book into a PowerPoint presentation and it didn't quite work out:

    

Anyway, the biggest surprise came when Petzold posted a clarification of his reaction in which he called my book "remarkable and enlightening." Wow. That's a comment I won't soon forget! What do you think the chances are that we could put that quote on the cover for the next printing of WPF Unleashed? :)

The conversations that spawned from Jeff's post tended to focus on color, sidebars, and bullet points, and I don't think that's fair to either book. Like Petzold, I hope that content is still king. I work ridiculously hard at packing my books with valuable content that anticipates developers' questions and helps them be successful. Perhaps my favorite comment on Jeff's post is by someone (suspiciously) named Adam:

I'm going to beat a nearly-dead horse (I don't think it's fully beaten yet), but using the color samples and the like to describe Nathan's book isn't doing his book justice. The amount of insight he gives on so much of WPF is amazing; I've partially read his .NET and COM book and while the feel of the two books was different, they both provide one important goal: educate the heck out of the reader with information you won't get without a lot of experience. The color samples are nice, the way he puts tips and sidebars is nice, but it's his content that is the shining star. Every other resource I've read on WPF doesn't cut it on the detail of the whys and the hows. Most other books spend too much time giving the "if you write code 'x' then 'y' will happen" and not enough "this is why 'x' causes 'y' to happen."

I also recognize that just as a king usually needs a competent military to survive, content usually needs a good presentation. Do I think that some people are buying my book simply because of the color and scannability rather than my wit, writing style, or qualifications? Absolutely. And I'm okay with that. Otherwise, I wouldn't have worked so hard to enable the syntax coloring and add various text elements that take much more time to create than simple paragraphs. (Yes, making the syntax coloring survive the journey from Visual Studio to the printed page was a lot more work than you might imagine.) I enjoy telling stories where it makes sense, but I know I'm not writing the next Great American Novel. To me, it just makes sense to use bullet points if I feel the need to explain the difference between six enumeration values, for example. I use my books as references all the time, and such elements also help me find what I'm looking for more quickly.

.NET and COM (now 5 years old and printed on demand) is a black & white book with longer code snippets and less scannability. WPF Unleashed (now 4 months old and in its third printing) might soon sell twice as many copies. Why the difference? Maybe it's the subject matter. Maybe it's the intimidating length of .NET and COM. Maybe it's the price difference. Maybe I've become a better writer. Or maybe it's the color and scannability?

Another part of Jeff's post that struck me funny (and got a lot of attention) is:

The Nathan book is brilliant. It reads like a blog and competes toe-to-toe with anything you'd find on the web.

Blogs are brilliant? (Mine certainly isn't.) I understand what he's saying, in that I intentionally wrote in a casual tone (more casual than in .NET and COM). But don't mistake "casual tone" for being sloppy, not giving a ton of thought to content and organization, or lack of authoritative perspective! I don't know what blogs Jeff reads, but If my book read like the blogs I've read, it would look more like this (click for a bigger view):

   

Overall, I think Jeff's original point was not "Books should have color, sidebars, and bullet points" but simply "Don't judge a book by its cover."