I think the poster's point 1 is really the key here. In addition, I think Intellisense-driven programming has a lot to do with it. I suspect a lot of .NET programming goes like this (I know I've been guilty of this)<p>1) Hmm, let's see what classes are in this namespace... Ah, this one looks like it might do the job so I'll type<p><pre><code> var foo = new ThingWithInterestingName();
</code></pre>
2) Dang, don't want to scroll through tooltips for 23 different constructors with poorly named params, think I'll just use the default constructor, they probably implemented that for casual users like me.<p>3) Now I can type foo. and let IntelliSense give me options. When I call a function I get an error for each call instead of some crazy exception for the whole thing. Maybe I can even test stuff out in the Immediate window in the debugger.<p>So, I think it's not only miseducation or layzness, it's that modern IDEs for static languages encourage discovery based development in favor of reading through API documents.