Charles Petzold

Whither Programming Tutorials?

December 13, 2005
Roscoe, NY

When I get stuck on a programming problem, I do the same thing that most people do: I go to Google. Sometime, somewhere, somehow, it's likely that somebody has also faced this problem and perhaps even solved it, and then recorded a solution for posterity.

As a programmer, I recognize the Web at large to be the second most important source of information beyond Microsoft's documentation, which itself has obviously become richer and more extensive in recent years. In 1985, the Windows 1.0 SDK had exactly 5 sample programs. Twenty years later, I'm not sure how I'd even go about counting all the sample code Microsoft created for .NET 2.0.

As a programmer, I'm generally happy. But as an author whose income derives predominantly from the sales of book-length programming tutorials, I am very nervous.

Programmers seem to rely on books a lot less these days. (Oddly enough, there seems to be more programming books than ever.) Back in the Win16 days, I got the impression that people actually read Programming Windows as it was intended to be read: from beginning to comatose. With my Windows Forms books, I don't get that impression at all. Judging from the email I get, people seem to flounder along in WinForms pretty much on their own. When they get stuck on a problem, they go to the index of my book, and undoubtedly others as well. It's possible that this research occurs in the coffee shop of their local "library" (a.k.a. Barnes & Noble).

There's nothing really wrong with using a book like that. I often look up stuff in books I haven't read, and sometimes even in books I haven't bought. What bothers me is that I'm putting a good deal of work into writing a tutorial, which is a narrative that teaches a skill in a coherent linear progression. But people are treating the book as a reference or just another problem-solving tool.

Why this change in reading habits?

One possible cause might be the book glut itself. In the Win16 days, there really weren't a lot of tutorials about Windows programming. When programmers began realizing that they'd have to learn the Windows API sooner or later, they didn't have a lot of choices. This enabled them to place a lot of trust in the authors of those few books there out were.

This trust is essential. Reading a thousand-page book is a considerable investment of time and energy. Readers needs to have trust that reading the book will be successful — that the book will be well paced and get the readers from zero to 100 (or at least 85) withough losing them or boring them.

The more books there are on a particular topic, the less likely it is that a potential reader will trust any individual book. Say you want to read Crime and Punishment. You start researching the translations to find out which one is best. Is is more likely you'll actually read Crime and Punishment if there is only one translation available, or if there are 20?

Add all the available sources of online information to the multitude of books, and you have an environment where nobody can rely on just one source. No one source is adequate because the API is so large. So who's going to read a thousand-page book from beginning to end when it's just one source out of many and clearly can't be comprehensive?

Is the book-length programming tutorial dead? Might it make more sense for me to give up writing tutorials and instead focus on assembling a comprehensive online pool of information, perhaps wiki-based?

Perhaps. But I have absolutely no interest in doing that. I love writing tutorials. I love exploring a new API and figuring out the best order in which to present the material to the reader. I love devising little programs that demonstrate the features of the API. I love the idea of presenting my hypothetical reader with progressively higher rungs of a ladder on which they can ascend. And I love the challenge that these rungs must be sequential and equally stepped.

This is what I do.