People seem to ask this question a lot. When you’re learning something, it’s comforting to know that you’re doing it correctly and efficiently and that you’re not learning the wrong way or the long way. So here's the approach that I'd recommend.
As with most things programming related, the best way to get up and running for most people is just to do it already. Download Drupal, install it somewhere, and build a blog just to learn the ropes. You’re going to see terms like “node”, “taxonomy”, “module”, all kinds of words you’re not familiar with. They key is to research stuff like this as you come across it, and make sense of it all as you go.
In a case such as Drupal, where there are so many things to understand, I think trying to learn it before actually doing anything with it yourself will quickly get overwhelming and will start to feel like studying for a high school History test. It makes a lot more sense to start doing it yourself and use the resources to help you along the way.
There are, in my opinion, four basic steps to becoming a Drupal expert. Those are:
- Learning to use Drupal core for content administration. Sample learning project: build a multi-user blog using only Drupal core (no 3rd-party modules or themes).
- Learning to use the most popular contributed modules (such as Views). Sample learning project: build an image hosting site complete with image resizing, a lightbox, categories, etc.
- Learning theme development (including the cool stuff that goes on in template.php). Sample learning project: Build a theme suitable for releasing on Drupal.org. In my opinion everyone needs some understanding of the theme layer, even if you're going to end up mostly as a back end/module developer.
- Learning module development. To learn: Find something that no contrib modules handle (something really weird like a mortgage calculator for California residents), and make a module to handle it.
Once you have a good hang of those four, then you can start cranking out some truly awesome stuff with Drupal. Note that this doesn't mean that you're now a Drupal expert -- it just means you know enough to be productive and you can pick up other things as you go.
As for some resources to help you along the way…
If you like books, there are two great ones to pick up.
- Using Drupal - a really good intro to both Drupal site building and content administration with Drupal.
- Pro Drupal Development - the big boy in coding Drupal sites, complete with loads of info on creating modules and themes.
- Drupal 7: The Essentials - a free, online book hosted on Drupal.org that takes you through the basics of Drupal 7
If you’re like me, you’d much rather see something done than read about it. If that’s the case, then the following sites have some really good Drupal screencasts for you to get up and running with.
- Drupalize.me - a subscription here isn't cheap but if you learn best via screencasts, then it can't be beat.
- Drupal Therapy
- Learn by the Drop
- Mastering Drupal
- Finally, there’s a collection of slightly outdated but still good screencasts.
Getting Questions Answered
You’re no doubt going to have questions along the way. Whenever I have questions, here’s my typical process:
- Google it for at least 5 minutes, and if you can’t find anything…
- Ask in IRC. The #drupal-support channel at irc.freenode.net usually has about 600 people at any given time (although most of those people aren’t active at any given time), and that’s a good first stop for something that Google doesn't help with
- If it’s related to a specific module, then ask your question as a “Support Request” issue in that module’s issue queue on Drupal.org.
- Ask on Drupal Answers. There are a good bit of contributors here who really know their stuff, so you’ve got a good shot at some help here.
- Post in the Forum on Drupal.org. I’ve never had good luck with this so I save this as a last resort.
Drupal is what some have called a “wall” project. That means that some projects have learning curves, but Drupal has a learning “wall” that seems impossible until you all of a sudden jump it (i.e., the lightbulb moment) and it all makes sense. Just stick with it until it starts to make sense and you’ll be just fine.