I meant to write about this book a while back, but got caught up in a bunch of projects and didn’t get around to it. If you haven’t bought this book yet, you really should. The first edition has been an invaluable asset to me on a number of past projects, and the second edition is even better with sections on newer language and framework features such as Linq and extension methods.
I’ve seen, read, and even written a few standards documents in my time as a professional programmer, and I think this book is the last one I’ll be needing. The format of the book is one I always enjoyed, with the guidance interspersed with comments from the "peanut gallery" of Microsoft architects. These asides give you a lot of insight into the "why"s, something which a lot of standards documents are missing (I’m talking about YOU, IDesign). It’s one thing to be told to do something in a particular way, but it’s a lot better when you are taught why. Simple coding patterns that I wouldn’t have given a second thought to have turned out to have a great impact on other aspect of my code once they were explained.
The basics are covered, such as naming and formatting standards, but the book goes much further with sections about when and how to use certain interfaces, and provides some brief explanations of common design patterns as they relate to the .net framework. I’m not talking about "Visitor" or "Model View Presenter" here, I’m talking about "IDisposable"… muuuch lower level stuff.
Basically, this book isn’t just about what you ought to be doing, it’s about explaining why Microsoft did what they did in the .net framework. It’s refreshing at times in the book to find a discussion about how something was a bad choice in retrospect, or how the framework designers wished they had done something differently knowing then what they know now. I feel a lot better about my own changes of mind, and less like an amateur for not having seen the eventual solution in the beginning. After reading it, I’m more comfortable that I’ve made the right career decision to stick with this programming stuff.
Another great asset included with this book is the DVD. It’s full of training sessions and example API specifications. One of the first things I did with the previous edition was to convert all the videos to play on my Zune, and spent the next few weeks watching through them whenever I got the chance. I probably won’t watch them all over again, since I think they’re the same videos, but they’re definitely worth the watching.