Charles Petzold



20 Years Ago This Year

April 28, 2007
New York, N.Y.

When a young guy like Larry O'Brien starts talking about age discrimination in the personal computer industry, you know it's got to be a problem. But my immediate instinct with these things is just to whistle softly and gaze at the corners of the room as if it has nothing to do with me personally.

In general, I think it's OK to be in your 50's in this industry — but only if you also own a major sports franchise, spend your money trying to cure malaria in Africa, or orbit the earth in a space station. The young guys figure that'll be them in 20 years, so the sorry spectacle of people in their 40s and 50s still coding is quite unsettling to them. That's why they hate us so much.

Being honored for one's longevity in this industry is a mixed blessing, so I'm not sure how to react when Juliana Aldous of Microsoft Learning identifies me as the author who's been with Microsoft Press the longest, dating from the publication of the first edition of Programming Windows in 1988.

Although Programming Windows was published early in 1988, the contract was dated December 1986 and signed in January 1987, so I consider my relationship with Microsoft Press to date from then. On the contract, the book title is Windows for Programmers and Other Advanced Users, which itself is a concept that made more sense 20 years ago than it does now. The contract specified a word count of 100,000. By November 1987 when I finished the book, I had turned in a manuscript of about 400,000 words. (This is not a practice recommended for beginning authors!) The book included a 43-page chapter on Memory Management. I rather ignored the "advanced users" in the audience.

I spent much of 1987 writing the book. I remember exhilaration; I remember exhaustion. That year 1987 was the tail end of a 13-year period (1975 to 1988) in which I did not own a TV set. Damn, I was productive during those years!

Instead of TV, I played CDs and listened to the radio, specifically WNYC-FM, a local public radio station that played classical music at the time and also carried the always informative NPR news broadcasts.

I lived alone, and the only other work I was doing was writing for PC Magazine. As I worked on the book day after day, I kept going to bed later and later. Every young coder knows what it's like to pursue a problem for hours on end like that. I found working at night very peaceful. The telephone never rang, and many of the stores were closed (even in New York City) so there weren't many distractions. If necessary, I could always run down to one of the all-night neighborhood delis for — oh, this was so long ago — cigarettes.

Sometime during the year, I was staying up so late that my days and nights became swapped. "How are you doing with the book?" I remember someone asking. "OK, I think," I said. "I'm listening to the radio a lot. But I'm going to bed after Morning Edition and getting up in time for All Things Considered."

When I started writing the book, I was using Windows 1.0. During 1987, Windows 2.0 started emerging in beta. It was fairly easy to switch the book to the newer version. Early in the book I had a paragraph explaining why tiled windows (in Windows 1.0) were so much better than overlapping windows. I went back and rewrote that paragraph to explain why overlapping windows were so much better than tiled windows.

I remember browsing the computer books at a local book store and seeing the first book about Windows programming: Programmer's Guide to Windows by David Durant, Paul Yao, and Geta Carlson. I couldn't believe it. All the work I had done, and now I was scooped. Surely the world was not big enough for two Windows programming books.

I quickly bought the book and took it home, but I couldn't even stand to remove it from the bag. I stashed it, bag and all, on a high bookshelf. I needed to forget about that intruder and get back to work.

A month or two later, I finished my 40-page chapter on "Bits, Blts, and Metafiles." I was very proud of the chapter, and I felt certain that I had written more on Windows metafiles than anyone had ever thought possible. I wondered what information the "other book" had on metafiles. I finally took it down from the shelf, opened the bag for the first time, and went to the index: The word "metafiles" wasn't even listed! My work on the book wasn't a complete waste of time! That was one of the most wonderful moments of my life.

Although the first edition of Programming Windows was sold mainly in a softcover edition, Microsoft Press also published a hardcover edition with a dust jacket, which was primarily targetted to libraries. This was a concept conceived before everyone realized that programming books have a shelf life of about three months.

Programming Windows was a labor of love. Windows programming sure was wacky but I loved the device-independence, the consistent UI, the non-preemptive multitasking, and the graphics. I didn't expect the book to sell. Nobody was actually using Windows, and pretty much everybody who was coding for Windows was already an expert and surely didn't need my book. I'm not sure when the advance was made up, but I remember getting a funny check in the mail. I had gotten checks from Microsoft before (for writing for MSJ Magazine, the forerunner of MSDN Magazine) but those had round numbers on them. This check was strange: a weird dollar and cents amount. "What the hell?" Then I realized it was my first royalty check.

A few days ago a dentist asked me "What do you do?" I answered, "I write books for programmers." I was about to point to the X-ray program running under Windows on a flat screen hovering near the chair and say "It's possible that the people who wrote this program learned Windows programming from my book." But the program had already crashed twice, and I wasn't sure I wanted to take on that responsibility. (Besides, it actually looked a little MFC-ish.)

I am no longer a Win32 programmer. I started with .NET and C# in the year 2000 and I haven't looked back. Every time I need to do a little bit of Win32 API programming, it's been increasingly painful. Today I consider myself to be a pure unadulterated .NET programmer, and C# is my all-time favorite programming language. I've written five .NET books and a sixth one is on the way.

Over the years I've met a lot of programmers who have told me that they got started with Windows programming with my book. It's always great to hear that, but that book is so long ago that I feel it's no longer part of who I am now.

Someday I hope to meet a young programmer who knows nothing about Programming Windows and says to me "I got started with WPF programming from your book." Oddly enough, I think that'll make me feel young again.