Two strings walk into a bar. The bartender says, "What'll it be?"
The first string says, "I think I'll have a bee^CjfdLk jk3s d#f". "Please excuse my friend," the second string says, "He isn't null-terminated." -- anonymous
In 1918, William Strunk, Jr. published "The Elements of Style". It was a very small book, but in the ensuing 85 plus years it has taken on a life of its own to become a stunning piece of reference material for virtually anyone who wants to learn to write and use good grammar effectively in the English language. My father was an English teacher and high school principal, and when I was a kid, a copy of this thin little book was in our bookcase. It wasn't until I went to college that I realized how important it was.
I do not believe that anyone since has published a book that comes even close to concisely and expertly detailing how to use English as a writing medium - in terms of grammar, sentence structure, composition, rules, and the art of clarity.
My personal philosophy about effective communication is that the most important measure of one's ability to communicate is the ability to have other people be able to understand what you said, the very first time you say it. Writing is no different, and programming certainly adheres to the same types of structure and rules as do effective writing and speaking.
Anyone who has studied physics, music, writing, art, or any of the other great disciplines will tell you that it is first necessary to study and master the rules before one can gain the talent for true creativity in the medium. Creative, innovative programming requires this discipline. You can talk to any accomplished jazz musician and without exception, they will tell you that in order to gain the freedom and power to improvise, they first studied music theory and practiced playing the classics and "scales"-- usually for many years. It is only by taking the time and investing the required effort and study that one can lay the groundwork for innovation. There are no shortcuts!
If you had just accepted a position with your company's Paris office, and knew that you had no choice but to become conversant in French as quickly as possible, wouldn't you want to have the very best French/English reference book at your side at all times? A book that you could easily turn to in a time of frustration, that would quickly and concisely enable you to find the word or phrase that you know so well in English, but at which in French you now find yourself to be a bumbling fool?
This is what Framework Design Guidelines does for you as a .NET programmer. It lays out, in incredible detail, the exact naming conventions, framework design goals and patterns that are necessary to develop quality reusable .NET code and to be the most professional you can be at this task. You do not "read" this book. It does not teach you how to build a Data Access Layer. You refer to this book, bit - by - bit, step - by - step, as you go on about your programming career, and you absorb each bit as a lesson that helps to make you a more professional programmer and architect.
The authors, Kryzysztof Cwalina and Brad Abrams, are eminently qualified to present this material.
Brad Abrams is a Program Manager on the .NET Framework team at Microsoft, where he has been designing the Framework Class Libraries for the past five years. He is the primary author of the .NET Framework Design Guidelines, the Common Language Specification, and the class libraries for the ECMA CLI specification.
Krzysztof Cwalina is a Program Manager on the Common Language Runtime team at Microsoft Corporation. He began his career at Microsoft designing APIs for the first release of the .NET Framework. He has been responsible for several namespaces in the Framework, including System.Collections, System.Diagnostics, System.Messaging, and others. He was also one of the original members of the FxCop team. Currently, he is leading a companywide effort to develop, promote, and apply the design guidelines to the .NET Framework and WinFX. Krzysztof graduated with a B.S. and an M.S. in computer science from the University of Iowa.
You can see some of Brad and Krzysztof's work online at MSDN here.
Jeff Richter says this about Framework Design Guidelines:
"This book is an absolute must-read for all .NET developers. It gives clear do and don't guidance on how to design class libraries for .NET. It also offers insight into the design and creation of .NET that really helps developers understand the reasons why things are the way they are. This information will aid developers designing their own class libraries and will also allow them to take advantage of the .NET class library more effectively."
There is a lot of combined knowledge (not just Abrams and Cwalina's) in this book. You will not only learn what you should do; you will also learn why you should do it and even how the decision to do it that particular way came to pass on a historical basis.
If you want to be a professional .NET developer, you need to invest in a copy of this book for yourself. It's that simple. I get lots of "review copies" of books from publishers, they know who I am, and I've served as a technical book editor and writer as well. I bought this book on my own. So should you.