For a while now I had been expecting better developer documentation from Microsoft. You’d think if you were looking for tips and ideas on how to develop software that Microsoft would know a thing or two. I mean they write a lot of software (some better than others) and they have several development tools and platforms.
And there is a ton of documentation on specific tools or examples how to use some specific classes in excruciating detail. However, as far as general software design, architecture, and processes they haven’t had much. And that’s the kind of stuff I was looking for.
Then it dawned on me that a tool vendor is going to document how to use all the extended features and document as much as they can about their tool. But many of the principals of good design are platform independent. In fact good practice is often to go for the general case and only use the specialized features when necessary, and even then you build abstraction layers around them.
Then there is the quote “the sky is a different color at Microsoft.” i.e. Microsoft is so big that most everything they use comes from Microsoft. If an idea wasn’t invented there or they have not made their own version of a tool, they often appear ignorant that such an idea or tool exists.
I guess all I’m saying is that I no longer expect this kind of info from Microsoft. Instead I’ve been doing much better learning from blogs, open source projects, and books (lots of books.) The do have a patterns & practices group and they have been improving and the talk about the ASP.NET MVC framework seems promising (lots of examples of interacting with existing open source software.)
I think its one of the failures of the style of documentation which Microsoft uses in it’s .net codebase. Using in-line comments within the code forces you to describe how to use each class separately. There is no place to put comments which describe how to use the code as a whole.
I’m still trying to figure out what Microsoft had in mind when they created the idea of datasets. Sure it makes sense for toy sized projects and applications, but what happens when you have 100+ tables in you database. Do you put all 100 tables into one dataset? Of course not, but then how do you enforce referential integrity when getting new keys from the database.
Another reason that Microsoft doesn’t show you good software development principles is because then it would highlight the deficiencies of its products / frameworks. For example, if you really had an expert using datasets for a large application, it would show that datasets can be more trouble then they are worth.