This is the first in a series of guest posts by authors and staff, past and present, reflecting on the 30th anniversary of Microsoft Press. We’re celebrating this milestone from fall 2013 through summer 2014, so keep checking back for more anniversary-related content.
Today’s post is by longtime Microsoft Press author Jeffrey Richter.
In 1990 I was a software developer working for a company in Philadelphia. The company had a lot of data that we put on CD-ROMs, and I worked on the software to search this data and show it to the user. We were building the software on top of Windows 2. During the development cycle, Windows 3 had entered beta and was getting a lot of media attention due to its great features. I registered my company as beta testers for Windows 3 and we started to build the new version of our CD-ROM software. During this time, I found some limitations of Windows, so I built a utility to improve some of these limitations. I thought the utility leveraged some interesting aspects of Windows such as Windows Hooks, so I decided to write a magazine article that explained the utility and how I implemented it. The article was picked up by Dr. Dobb’s Journal.
Because Windows 3 was getting so much press, book publishers were looking for authors who could write about it. A publisher had seen my article and contacted me to see if I would be interested in writing a Windows 3 book. I got $3,000 upfront and another $3,000 upon completion. Since I was a full-time software developer working on real software products, I decided to gear my book towards real software developers, providing tips and tricks about Windows that my company was actually using. I dare say that my book was the first “advanced” Windows programming book, since most other Windows books at the time were written by full-time authors and were more introductory. (Of course, I myself learned a lot about Windows from these other books.) Well, several months later, with lots of overtime, and after losing a girlfriend, my book finally came out in 1991. It was called Windows 3: A Developer’s Guide and was published by M & T Books.
From this, I was invited to speak at Windows conferences. While attending the Windows NT PDC in San Francisco in 1993, I met an acquisitions editor from Microsoft Press who asked if I would write their first Win32 programming book. I agreed. It was a short schedule and this time, I was learning the technology while writing about it so I didn’t have as much real-life experience building apps for the platform. But I already had some experience authoring, so I found it easier this time.
I will never forget my editor at Microsoft Press, Nancy. She taught me a lot about the writing process. Fourteen (or so) books later, I still apply what she taught me. For example, in the Dynamic-Link Library (DLL) chapter I discussed the various scenarios in which DLLs are useful. Due to my passion for Windows Hooks, I also included a massive section about Hooks in this chapter. She pointed out that the chapter was now mostly about Hooks and not as much about DLLs. This would confuse readers, she explained. In addition, Hooks was in the middle of the DLLs chapter and so the flow of the chapter suffered and would make for difficult reading. She called me into the Microsoft Press offices, printed out the chapter on paper, and then used scissors to separate all the paragraphs. We then worked together to reorder the paragraphs so that the chapter flowed much better. We taped together all those scraps of paper, which I took home and used to rework the chapter completely. The end result was a vastly improved chapter. Unfortunately, due to the short schedule, the book shipped with other chapters that were similarly disorganized with large tangents that could not be rewritten in time. I wasn’t able to fix these chapters until the second edition, when I was able to consciously act on the lessons my editor taught me.
Nancy also taught me that technical books need to use precise language. I shouldn’t say “the process displays text on the window” because processes are just address spaces. Instead, I should say “the thread displays the text on the window” because threads actually execute code and do work. So, in my books and in the programming classes I teach, I always use precise wording. I think this goes a long way towards helping programmers understand what technology is responsible for a particular thing. Of course, this is a part of me now and it drives my wife crazy because I’m always precise about everything and I tend to correct her when she’s not. I just can’t turn it off.
So, I have stayed with Microsoft Press for many books now and I have learned similar lessons from all the editors I’ve worked with there. These lessons have certainly helped make me a better programmer, a better instructor, and just a better communicator in general.
Jeffrey Richter is a cofounder of Wintellect (http://www.Wintellect.com/), a training and consulting company dedicated to helping companies produce better software faster. Jeffrey has authored many video courses that can be viewed at http://WintellectNOW.com/. He has written or cowritten many Microsoft Press books about Windows and .NET Framework programming, including Windows Runtime via C# (2013); CLR via C#, Fourth Edition (2012); Windows via C/C++, Fifth Edition (2007); and Programming Server-Side Applications for Microsoft Windows 2000 (2000). Jeffrey was a contributing editor for MSDN Magazine, where he wrote numerous feature articles and has been the Win32 Q&A columnist, .NET Q&A columnist, and Concurrent Affairs columnist. Jeffrey also speaks at various trade conferences worldwide, including Wintellect’s Devscovery, VSLive!, and Microsoft’s TechEd and Professional Developers Conference.