Drupal is the best of the "big 3" CMSes. Hands down.
However, it has a Matterhorn learning curve, and I choose not to use it in most of my work; opting for WordPress.
The thing about Drupal is that it has an extremely solid extension mechanism. Lots of good hooks, and thoughtful design.
I write plugins for all 3 CMSes. I am extremely familiar with what it takes to extend each. Drupal and WP can be extended with a single file that allows me to provide a powerful administrative interface, content filter and module system.
Joomla, on the other hand, requires -I am not exaggerating- ten times as much work as either Drupal or WP, and, subsequently, ten times as many "problem nodes," for juicy, fat bugs.
For example, if I want to handle AJAX responses, Drupal and WP each offer a simple hook to intercept program execution at a point between CMS setup (authentication, module initialization, etc.) and HTTP output (I need to output prior to any headers being sent out). Since I can use the same module file, I can preserve object context. Also, they each have a very simple CSV options/preferences system that abstracts the database behind a basic functional interface.
In Joomla, I am forced to write an entire system plugin, and use a pretty hairy database "semaphore" system to communicate context. I also need to write a content plugin in order to allow a shortcode ability. In both Drupal and WP, the content filter is simply another functional interface in the same context.
However, for the kind of extensibility that Joomla offers, only Drupal can match it, and Drupal has that learning curve, so it tends to be popular amongst folks that want a heavily-customized site, with less knowledge, than Joomla.