We all make mistakes. Even our best intentions can lead to errors. Thus, we can make best practice mistakes. While this may seem like an impossible situation, you will soon see that it is common. Knowing the recommended approach does not mean we will follow it nor even that we should.
Rules Are Meant To Be BrokenThe first thing to consider in avoiding best practice mistakes is whether your situation is applicable. There are extreme examples like knowing to wait thirty minutes after eating before swimming is no help in designing software. We need to apply these wise recommendations properly. The challenge comes when we are asked to determine whether a technology best practice should apply to our specific solution.
A better technical example is the idea of data normalization. It can be argued that the highest normal form is best. The amount of storage space required is reduced, and caching may be more manageable. However, you will find that high levels of normalization lead to more table joins in your queries. In case you have limited join experience, the more joins in a query, the slower it will run. Modern database engines tend to be able to handle a few tables in a join, but once you get to high single-digit numbers of tables, it slows to a crawl.
With that in mind, we can agree that any best practice should be seen as a recommendation instead of a hard and fast rule. Therefore, we can pick and choose how closely we follow a recommendation. We need to be clear on why we ignore one point while using another.
General vs. SpecificIn the world of technology, we often see best practice mistakes related to generalities. It is important to remember that best practice recommendations are usually aimed at general software development. Your situation may not apply. Realtime and other processing-intensive applications can fall into this category. The flexibility we often desire from software has a cost. When your first goal is speed, flexibility is not worth that cost.
Know the "Why"Ah, yes, we see this again. The "why" of a problem, a solution, and even an application is always essential for our success. That is why (no pun intended) we need to examine best practices with an eye towards whether each recommendation is one that applies in our situation. While it would be easy for us to follow them blindly, it would also be foolish.