Interview with Chris Sells


1. Chris, you have written a great Windows Forms programming book. It seems that you have succeeded to cover every single aspect, every little detail of Windows Forms. What is the history behind the book?
After ATL Internals, I swore off writing books. It's just too damn much work! Still, after reading the single chapter of Windows Forms coverage in Jeff Prosise's Programming Microsoft .NET, I just couldn't stand the idea that that would be all that people would get on this technology. Remember that, at the time, .NET was considered to only be for web services and web sites, focusing all of the attention on ASP.NET. Even though I'd never written a GUI book before (the closest I had come was the Windowing chapter in ATL Internals), I had to adopt this underdog technology just so that someone would give it the attention it deserved. So, before I even knew much about the technology, I got myself the book contract and the assignment to write the 5-day short training course for DevelopMentor (there's no better motivator to learn something than committing to teach it). I spent 9 months writing the course and writing for my Wonders of Windows Forms MSDN column (now written by the eminently capable Mike Weinhardt), learning all I could about the technology and getting ready to teach it for the first time in September of 2002. I find that talking through a technology for an interested audience is a wonderful way to solidify one's understanding of it, so I wrote none of the book 'til after having given the first run of the course (in spite of the fact that my editor was expecting it to be submitted in final form by then : ). After giving that first course, I wrote the book almost full time for the next five months and then when I couldn't stand to write another word, I shipped it off. In picking Windows Forms, it was my goal to write "the" book on a technology with some broad appeal for a change and I think I came pretty darn close to doing just that, especially as Windows Forms has emerged as a very important part of the .NET Framework.

2. You devote a chapter in your book to nonrectangular forms. Do you think computer users may like nonrectangular forms and a rectangular monitor, or would they prefer a nonrectangular monitor to use with the forms?
 I can't think of any of my favorite apps that do anything more than non-rectangular splash screens, so it's hard for me to stretch my imagination all the way to non-rectangular displays. Personally, I'm much more excited about Tablet PCs getting down to the size and weight of my college notebooks. When that happens, we're going to see the same thing happen with eBooks that have already happened with digitized music and is in the process of happening with movies. Personally, I can't wait to carry my entire book collection around with me at my side instead of having to throw my back out every time I move.

3. What influence, if any, Charles Petzold's Programming Windows XYZ had on your book?
I, like everyone else in my generation, learned to program Windows from Petzold's Programming Windows 3.1. I still have my original copy and Petzold so impressed me that in writing Windows Forms Programming, my goal was to outsell him. My editor took that to mean that I would outsell Petzold's Windows Forms book and I've done that since every week since my book shipped, but I'd really like to outsell his Win16 book. Of course, because we're in a much different book market now, that'll never happen, but still, I can dream. : )

4. You have comprehensive errata for your book on sellsbrothers.com. Is the source code also available there?
[csells] The source code for the book is available on the book's home page: http://sellsbrothers.com/writing/wfbook/  Also, I should mention that the errata page was written for me by Mike Weinhardt, who's almost my partner in crime on the second edition of the book. He maintains his own website at http://www.mikedub.net/ and writes a fun Windows Forms-focused blog at http://www.mikedub.net/windowsformsredux/  In fact, as I turn my focus primarily towards Longhorn, Mike is the one to watch in the Windows Forms 2.0 space.

5. What optimization techniques would you recommend for GDI.NET applications?
In general, when optimizing GDI+, I recommend the same technique I recommend for profiling anything: profile, profile, profile. No sense spending a lot of time optimizing in places that aren't causing you performance problems. I most often solve my GDI+ performance problems by avoiding the invalidation of spots that don't need updating and avoiding drawing in spots that haven't been invalidated. Still, it's best to profile before and after, as it's not hard to spend more time figuring out what needs invalidating and drawing then the time you actually spend invalidating and drawing.

6. Chris, what do you think are the most important features of .NET 2.0, and what improvements should we see in the following releases?
There are 3 really big deals in .NET 2.0 from my point of view. The first and most important is ClickOnce. This is the way to deploy smart client applications with the same effortlessness of deploying web applications, plus it fixes a bunch of the problems in the .NET 1.x technology known as No-Touch Deployment, both at run-time and at develop-time. Second, I'd have to say that watching Scott Guthrie's breathless 3-hour run through all of the new features in ASP.NET 2.0 is simply stunning. The leap from ASP.NET 1.0 to 2.0 is nearly the same as the leap from ASP to ASP.NET. And finally, the shear number of productivity enhancements in the IDE, both in new features like Refactoring and in really making new Framework features shine, like type-safe resources and much more robust data binding in both Windows Forms 2.0 and ASP.NET 2.0. As good as Visual Studio already is, I can't believe how much they continue to improve it in VS 2005. Of course, as an old-time C++ hack, I'd be remiss if I didn't give generics at least an honorable mention as a feature I've very much looking forward to putting to good use.

7. Are you planning to update Programming Windows Forms for .NET 2.0? If yes, what would you add?
Absolutely. In fact, Mike and I are already in the process of updating the book for Windows Forms 2.0. We're planning to have an update ready very soon after the release of .NET 2.0. As to what we're adding, we're updating all of the chapters to point folks at the appropriately new technology, e.g. MenuStrips instead of MenuBars, the DataContainer instead of binding to the data directly, etc, as well as rewriting entire chapters as appropriate (the Data Binding and Deployment chapters are bound to get major overhauls to reflect the vast improvement). Also, Mike has threatened to add a Compact Framework 2.0 chapter, but we'll see if he's still able to lift his head after updating the existing prose. : )

8. You have some great interview questions from Microsoft at http://www.sellsbrothers.com/fun/msiview/. Are you planning to publish questions from your own interview, someday?
You can read about my own interview experience on my site and that write up includes some of the questions I got (http://www.sellsbrothers.com/fun/msiview/#myInterview). However, I don't think I'll give away Sara's questions any time soon. It's easy to give away questions I got from random interviewees I didn't know, but to ruin a friend's favorite question is too far even for me. : )

9. Modern RAD tools are mostly about UI generation. In the next few years, do you expect new tools that would simplify the way we program? If yes, what would such a tool do?
My dream for a RAD tool doesn't even have a forms designer as we know it today. Instead, I'd like to run a little program to get myself a new, empty, running application which I could add functionality to "live," e.g. right-clicking on the main window to add a menu bar and then menu items, then right-clicking on a menu item to start up a new window, which would show immediately, then right-clicking to add data that would be bound immediately, etc. I could see us building apps just to get a quick piece of information and then throwing the app away. Or, I could see non-programmers building these "live apps" until they hit a wall when they'd bundle it up and email it to a programmer to add that one last little feature that only a programmer can add. Not only will non-programmers be able to get a lot further without programmers, but the programmers would only be asked to add in the really interesting, unique stuff, leaving the user experience designers to put the bulk of the app together in pleasing ways that us programmers are hopeless at. :)

10. Chris, what are your plans for the future? Are you satisfied with your role of a Program Manager for MSDN, or do you see yourself getting involved in development?
I'm very happy at MSDN. My boss, Shawn Morrissey and his boss, (and the Benevolent Matriarch of MSDN) Sara Williams, have worked hard to give me a very pleasant environment where I'm allowed to continue my writing, run my conference, contribute my code and tools to the community as well as digging into Longhorn as deeply as I'm able. Further, during this time between the preview version of Longhorn and the beta is the best time for the product teams to apply substantive feedback, so I'm working on a couple of projects to build real-ish apps to stretch the WinFX API and then give my feedback to the product teams so that they can fix stuff that doesn't work as well as it could. So, not only do I get paid to play with the next huge thing coming from Microsoft and tell folks what's cool, I also get to influence the thing itself. What could be better than that? : )
 






Copyright© 2000-2006 Aleksey Nudelman