Drupal customization vs contributed modules
Recently, I've been working on a big Drupal project which was so demanding in terms of performance,stability and of course “functionality”.
In terms of functionality, Drupal itself, beyond being a Content Management System, it comes to the web development field as a Content Management Framework, meaning that it offers a lot of functionalities grouped by “contributed modules”but it also has the ability, as a CMF, to let a developer “customize”a default Drupal behavior since it relies on a strong MVC structure,it has a solid persistence layer, etc.
So, what's the point with all of these? Let's see. When you are running in a Drupal project and you already know the requirements, the next step is to look at Drupal contributed modules section and try to find all the modules that can or hopefully can, help you during development. This is amazing, because usually you are able to find everything on drupal.org, saving you time and resources in terms of development or giving you more that you really need, decreasing performance of your site; but this is still Drupal default behavior.
contributed modules offer defaults outputs (theming) and functionalities, but what if your web designer comes up with an amazing design but it doesn't fit with Drupal's default behavior ? Here's where the word “customization” comes to live. In Drupal everything is customizable!
By creating custom modules, Drupal gives a developer the facility to achieve with those amazing designs that we as developers usually get, but this approach could delay projects in terms of time and you probably will need more resources as well but you can squeeze Drupal and get the best of it, using exactly what you need.
I think, if a site is very demanding on its User Interface/Performance you shouldn't sacrifice these interfaces by using Drupal's default behavior and outputs or your full Drupal installation with a lot of contributed modules to fit a requirement. Instead, I prefer to build custom solutions, specific for the project your are working on, may be based or not on some contributed modules. Anyways for small sites I strongly recommend to use all contributed modules.
In conclusion: Professional sites need professional customization.