Drupal has a lot of useful functionality out of the box, and it also has a large set of free and quality modules. I adhere to a contrib-first policy, which means, that if there is an existing quality module for a specific task, I will use it rather than writing an own module. This allows maintainability and avoids unneeded work. However, in some specific cases, when advanced personalization is required, it is needed for a custom module to be created.
Being a certified Drupal developer, I write modules every day (well, almost every day). I know my Drupal API and can extend it and integrate it with other services and libraries. Also, being a full stack developer, I carry the required functionality from back and to front end. That is, I not only build modules in code, but I also theme and style the output.