Jay Kimble has posted a very thoughtful article that you should read before you continue [Find It Here]. I have been thinking about some of these same things myself lately and particularly echo the sediments of his "fanboy" point.
If there is one thing that I've learned in life, let alone in my career as a developer, it would be that there is no one solution to every problem. There is no silver bullet to take care of every possible scenario. Unfortunately, "Best Practices" are often packaged and presented in this fashion by zealous fanboys. Saying that you should use some specific pattern to build every website or application you are given is ludicrous to me. Developers who adopt a mentality like this deny the nature of what it is we do. At the core of our profession, we are analysts. Our job is to take a problem and find the best solution. Sometimes that problem lends itself well to some specific pattern or methodology, other times it may not. We need to consider things like budget, timelines, integrations with other systems, and hardware requirements (just to name a few).
So what about Best Practices? Are they useful? Are they important? Certainly! I contend that we need to use the best solution we can find for any given problem. People will gravitate to patterns that they prefer and as is natural they will often become advocates of such. What we need to guard against is becoming close minded. We need to understand WHY a certain pattern is our best solution. If I can't tell you why I chose the solution I did, as well as why some of the others didn't make the cut, then I have to conclude that I did not do my due diligence in analyzing the problem.