Google (or Bing if you prefer) the phrase the "Drupal Way". You will find pages and pages of really insightful articles on how to do a variety of things, ranging from content strategy to module and theme development, correctly and efficiently in Drupal. Many people, developers/themers/site builders/content strategists, are talking about it and many are screaming for answers. So let's take a look at what this "Drupal Way" is and why it is so difficult to find it.
I first learned that there is such a thing called the "Drupal Way" after messing up my first handful of Drupal sites. I had hacked core, added modules and themes in the root modules/themes folder, added logic to template files, and done all sorts of other very, very bad things. Then it came time to make some security updates and you all know what happened afterwards. A couple of the sites were in such a big mess that I didn't even have the courage to attempt to update them. So I crossed my heart and vowed to never make these mistakes again, and things were all happy, happy, joy, joy for a while. But alas, happiness doesn't last forever. I started working on a project that had many interlinked nodes and a menu system that would give Kowloon a run for its money (Google "Kowloon" and take a look at their menu). After I successfully managed to mess up the navigation on the site, it really hit me. I should always think about doing things the right way before I dive into the work. So I embarked upon a quest to find the right Drupal Way for everything.
At the beginning, the path was treacherous. I would work out what seemed to be the best way to do a certain thing and then I'd find other ways of doing the same thing that would fit the requirements of a project better. I soon realized that I had to modify my journey a little, rather than looking for the one best way, I would look for a couple of efficient and secure ways to do the same tasks (e.g. upload and display images) and apply one of them as it best served my project's needs.
A couple of years passed, Drupal 7 was on the horizon, and I was feeling pretty good about my quest. I had come up with a basketful of techniques that I could easily apply to many different projects. I was working more efficiently; sites I had been working on had little to no issues. I was getting in over my head thinking I am the expert now. But then everybody started talking about the wonder that was Git. I was a SVN person through and through, there was no better way to share Drupal code, but now it seemed so muddy and error prone. And I realized that I can go look for a few good ways to do the same thing, but I will still have to be on the lookout, as the best way definitely has not come out yet. This was an idea that solidified when Drupal 7 came out, through the introduction of entities, the community was able to do so much more than what they could have done before. Most of my methods, that were the best ones at the time, were becoming obsolete. I was having to redo all my research to find even better ways to do things.
Once Drupal 7 was more stable, I started porting my Drupal 6 sites over to Drupal 7, and all of my sense of accomplishment went down the drain. Every single time I ran into issues with migration of Drupal 6 sites that were built using the best methodologies, I would start thinking if only I had done things differently, this would have been much easier. I was now feeling low and overwhelmed thinking it is not possible to keep up, it is not possible to ever find out the best way to build Drupal sites.
I was about to give up and abandon my quest to find the path. I was even getting fed up with Drupal and with the community. Why do they change things so much? But then, I had a startling revelation. I was thinking about it completely the wrong way. We will always be limited by the technology at the current time and people will always find better ways to do things when the technology allows them to do it. It doesn't matter whether its Drupal or WordPress or PHP or Java. The key is to anticipate and accept the change. Any software that we build goes through refinement and reengineering, so why would Drupal be any different? It is not possible or necessary to come up with a list of all the best ways to put Drupal to work. Just take each task as it comes, look for the best way to perform the task on hand with resources that you currently have, and always be thinking of what may happen in the future and how that will work with what you are doing now.
The challenge with finding the best Drupal Way is really the challenge to keep up with the ever-so-fast moving world of Drupal. How do you keep up with it? How do you anticipate what will come in the future? A lot of it really comes down to experience, learning from your own mistakes, and learning from others' mistakes. Drupal has a wonderful community and people are always sharing what they think are the best ways to do a particular task. Take a look at what people are saying and think about how you can improve on it. Once you are experienced with a particular task, share that knowledge with others. That is really the Drupal Way.