They say that hindsight is 20/20. With the many advances that have happened in the Drupal community recently, we asked our team "What is the one thing you wish you knew about Drupal two years ago?" 

"I wish I knew about the Headless Drupal initiative so I that I could be ahead of the curve as far as the Javascript technologies that it will require." - Chris Doherty

"Don't be afraid to offer to maintain modules, even if it's just to a quick bug fix release." - Damien McKenna

"When I first started, I didn't understand Git (version control) and managing configuration through features. All code and configuration changes were done directly on prod, yikes! It took a while to learn and it feels great to now understand it and use it on a daily basis." - Derek DeRaps

"Druapl 8 adopts Twig as its templating engine to provide a more secure theme layer." - Jason Want

"If you are using panels you should be using Views Content Panes that comes with ctools. It allows you to embed views in panel panes as you do with a block. The difference is that you can configure the view to work differently each time you embed it. You can allow the site admin to change many settings in your view when they embed the view. This means you can have one view that can accomplish many tasks." - Bob Kepford

"A little thing is Form API States. If I knew about that feature I would have implemented less custom JS and had more maintainable form handling." - Kelly Beck

"Panels are your friend. Services are your friend." - Kevin Basarab

"Drush aliases, entity metadata wrappers, stage_file_proxy module are 3 thing that I didn't know about two years ago and have found hugely beneficial. Drush aliases have allowed me to quickly run drush commands on my local development environment and on different customer environments without having to log in or use the admin interface. Example: running drush @prod.example updb is way faster than logging into the site, navigating to the database update page, and confirming that I want to run the database updates in the built in wizard. Entity metadata wrappers have allowed me to use way simpler commands when I need to update fields in a script. They deal with all the embedded structure of the arrays for you, so it is no longer necessary to type the $node[index][language][<what's the name of this value field>]. It allows for updates to fields in simple $entity->value = "so cool" formats.
Stage file proxy allows a local development environment to pull necessary public files from a production server as needed. So, you don't need to use drush rsync, scp, ftp, or any other way we transfer those huge images, videos, or other files from the production site's files directory to our local environment's files directory, which, depending on the amount of files and size of files, can take a long time." - Nathan James

"For me it would be using the Features and Stage_File_Proxy modules. Typically in a Drupal site you have your content and your configuration. All of this lives in one place, the database. It becomes hard to draw the line between content and configuration in a production website when you want to make changes. This is where the Features module comes in. Features enables the gathering and management of features in a drupal site. A feature is a collection of Drupal entities which taken together satisfy a certain use case. A feature converts and stores site configurations in code rather than in the database making it easier to move between environments. Once you have created a feature you can now version control it through Git or other version control system. They can also be distributed independently as a “module” and re-used across different sites. The great thing about features is that you don’t need to know programming to create a new module (feature). When developing Drupal sites locally, you often face a choice between broken images and taking the time to copy a snapshot of the remote files directory, which might be several gigabytes large, depending on the site. Stage File Proxy lets you update the database of your local development instance without having to update your files directory. Stage File Proxy transfers each requested file just in time when it is requested. This is especially useful for large sites with huge numbers of files. If you only visit 2 pages and only need 10 remote files to serve those pages, Stage File Proxy will only transfer those 10 files. Stage File Proxy has an additional mode in which it can serve a 301 redirect to files on the server, so it's possible to see all your images without having a local files directory at all." - Mario Hernandez

"I think my answer would be the power of Panels. I used to use a lot more blocks and views to deliver dynamic content, but getting the context into said blocks is more difficult that using the Page Manager that helps with the context of the data needed. Then again.. that was about 6 months ago..." - Mark Casias

Since technology is always changing, no one can every really predict the future of Drupal. The keys to staying up-to-date are staying engaged in the community, constantly reading content about the industry, attending camps, etc. Staying plugged in will help you stay on top of your Drupal game.

Now, we want to hear from you! What do you wish you knew about Drupal two years ago?

Additional Resources

Top Drupal 7 Modules: Winter 2014 Edition | Mediacurrent Blog Post
Death to Field Arrays with EntityMetadataWrapper | Mediacurrent Blog Post
You Stay Classy Panels Module | Webinar