I&#x27;m an independent developer. The majority of my clients are on Drupal. Here&#x27;s what I&#x27;ve learned:<p>While it&#x27;s true that someone looking at Drupal&#x27;s architecture for the first time is likely to say, &quot;Whaaaa? Why, why, why?&quot;, the truth is that a lot of the decisions start to make sense once you need a CMS for more than a basic blog.<p>For example, the reason there are so many joins just to retrieve all the fields of data for a page is that Drupal allows each field to be shared across different content types, or to have different revisions, or even to have different translations from other fields on the same page.<p>Yes, this is going to feel awkward and slow if all you need is a simple blog post table with one post per row. But if your site is complicated enough or has enough traffic, chances are that you&#x27;re going to start relying on caching to help out, no matter what CMS you use.<p>Drupal&#x27;s no different. There&#x27;s its own internal caching (which bypasses most of the queries for anonymous users), PHP&#x27;s APC caching (which gets over the PHP loading hurdle), memcache (to bypass queries for logged in users), and Varnish (bypassing Drupal altogether for static content.)