I've never been afraid to raise my hand and ask what others might see as a dumb question if it helps the community learn something (myself included). I've always been altruistic like that. That said, one thing that's been irking me is how would-be "experienced" or "top-notch" developers are quick to chastise the notion that programmers might not employ a best-practices approach in designing their systems.
Such people are sound technically, but have a tendency to grossly overlook the critical human decision making element that's such a big part of winning programming.
Consider a question I often pose on about stymied performance due to ill-implemented Ajax elements in a web page, calling an Access database and firing server-side DB query on each instance of a client-side keypress event. Supporting such rapid-fire functionality in high-volume environments would likely produce catastrophic results on an app. So conceptually, it's not the way to go. But it doesn't mean people still won't do it.
Many developers I've posed such a scenario to arrogantly jump on the criticism bandwagon, firing off responses like "You don't use Access for a web app...everybody knows that", or "Geez, just write a tiered caching layer...", assuming developers would have such moxie. This I guess has the intention of force-feeding best practices programming down a developer's throat. But it inadvertently sidesteps a major tenet: not everyone's as good or as knowledgeable as you. Not all programmers know how to code things optimally, and I'd say the majority of samples I read today don't use what would be considered "proper" constructs to optimize performance, reusability and scalability.
It's incorrect to assume a user of a system will interact with things the right way, hence the "program defensively" mantra. We can - and should - take a similar stance with developers. Put yourself in Microsoft's shoes: from a framework architectural standpoint, you can't assume that coders will write picture-perfect syntax 100% of the time, so being able to support alternative mechanisms, even if they deliver less-than-stellar results is key. A core platform still has to work, lest it be seen as one only for elitist swine. Everyone writing flawless code would be nice in a perfect world, but let's be realistic: it just won't happen, by matter of action, ommission, or lack of awareness.
So let's continually encourage and teach best practices, but also allow slack space for alternative routes.