Any session that starts with the comment "All examples in this talk represent things you should NEVER do" has to be good! This morning Dan Appleman explained his views regarding "Why did they do that?", where "they" refers to the designers of Microsoft .Net. While you can certainly use .Net effectively without understanding the whys and wherefores behind it, I find that understanding such details allows me to use it better.

So why did they do that? Always for a good reason. And regardless of how many nice things result, there are consequences that cause various degrees of pain. For example, take garbage collection. Garbage collection means that programmers don't need to worry about memory management anymore...except that now you don't know with any certainty when an instance will be destroyed, and so if you need it to go away at a specific time you have to explicitly Dispose it, and are things really any simpler now? Maybe not, but when faced with a choice between dealing with IDisposable or trying to remember COM's rules regarding who is responsible for updating an object's reference count when, I'll take IDisposable every time.

Speaking of COM, Dan says "[t]he fundamental problem with COM is that normal people can't understand it".

Although I work at Microsoft I'm not a member of the .Net design team; I don't even play one on TV. Nor do I know how many of Dan's "Why? Because..."s are based on conversations with people on the .Net design team as opposed to his personal conjecture. That said, Dan's explanations seemed plausible and helped me understand why .Net does some of the things it does. Dan's session was a perfect example of the reason I keep coming back to SD: the prospect of a week packed to overflowing with information that helps me do my job better.

And then there's the other reason I keep coming back: an endless supply of throwaway lines like Dan's comment that "Some questions can't be answered yet...Why J#?" <g/>

 

*** Comments, questions, feedback? Want a fun job on a great team? I need a tester! Send two coding samples and an explanation of why you chose them, and of course your resume, to me at michhu at microsoft dot com. Great coding skills required.