Drupal has a notorious learning curve, which can cause most developers major mental health issues. I'll talk through some hints and tips about getting to grips with Drupal, finding out what is going on, and where to go when you get inevitably stuck.
4. Devel A set of functions and callbacks that allow you to inspect what Drupal is doing Good for seeing what is being loaded on a node or what is going on during the page load dpm(), dvm(), dargs() Plenty more at http://bit.ly/qKVAc6 Project Page http://drupal.org/project/devel
6. Devel Themer Devel submodule Allows inspection of the theme layer Shows all hooks and template files were (or can be) used to generate the element Project Page http://drupal.org/project/devel_themer
8. Drupal For Firebug Inspect your Drupal/Devel output using Firebug extension (http://bit.ly/ofkgaJ) View debug information without printing it to screen Also available for Chrome (http://bit.ly/pEnZI4) Project Page http://drupal.org/project/drupalforfirebug
10. Advanced Help Some projects implement a hook_help() hook. Advanced help is for more detailed help documentation. Good example is the Views module. Project Page http://drupal.org/project/advanced_help
13. Examples Module A set of example modules for different parts of Drupal Everything from AHAH to XMLRPC Many examples come with unit tests Project Page http://drupal.org/project/examples
14. Schema Module Helps when learning about the schema api Inspect your database structure Project Page http://drupal.org/project/examples
16. Unit Testing Drupal Tricky to set up on Drupal 6, but Drupal 7 now has SimpleTest built in Every test installs Drupal with no settings so you have to set everything up before you test Essential skill to have for module developers Great way to learn how Drupal really works Project Page http://drupal.org/project/simpletest
17. Xdebug PHP debugging tool Turn it on and watch how Drupal bootstraps and loads a page Add breakpoints to make sure your hooks are being fired Nice alternative to print_r()/dpm() when inspecting variables (especially Views)
18. Get Your Hands Dirty The best way to learn is to jump in and have a go Set up a localhost Drupal site and try one or more of the following (no core hacks allowed): - Change the title of the 'Vocabularies' section on the node form to read 'Details' - Add a dynamic set of links to a menu option - Change the message the user sees when logging in - Install the WYSIWYG module and set the height of each element to be half of the default
26. Extra Tips If a user can't do something, check permissions If the user can't edit a node or weird things are happening to the HTML then check the input filters Make absolutely sure that the code you think is running is, in fact, running Download modules and see how they did it Don't be afraid of maintenance mode Stay calm and clear cache
27. Bottom Line? Drupal isn't hard, you just need to know what you are doing. Which is the hard bit...