Drupal's main draw is that it gives you the power to do an insane amount of work with zero coding. This is both its blessing and its curse.
Drupal is great for developers for exactly one reason: it's really, really productive.
Here's a short list of example things that can be accomplished in Drupal with no custom code:
Seriously, it's freaking ridiculous. The benefits of having all this available in a ready-made GUI without custom code should be obvious, but I'm going to list them out here so that I can waste your precious time.
That last one sums it up. Creating advanced functionality by clicking around is so much faster than writing it by hand, even if you're using an opinionated framework that cuts down significantly on the custom code you'd have to write. The minimal debugging and bug fixing and security auditing and API reading are all just more time saved.
In essence, Drupal is extremely productive once you know your way around core and the popular contrib modules, so much so that it's very hard to leave it for something else for general purpose site building.
So Drupal lets you get crap done really quickly and sends you laughing all the way to the bank...what's the problem? Here's the problem. Here's the typical day for a Drupal developer:
The particularly astute readers will have noticed that a Drupal developer is usually either 1) being bored clicking around or 2) screaming at Drupal for failing them in extremely hard to debug ways.
Let's start with #2. The issue with building complex functionality on top of code that you didn't write is that when something breaks, you cry. Debugging through layers and layers of code on top of code written by other people is much more likely to cause you to light socks on fire than debugging your own code.
Say that you're using the Media: YouTube module to display YouTube links attached to content as embedded videos, and the options to adjust the video size aren't actually doing anything (note that this bug is entirely hypothetical--Media: YouTube is great as far as I know). Where do you go? You probably first search the issue queue for that module, and maybe you'll see an issue about it and a fix which might involve upgrading to a dev release and possibly breaking compatibility with the version of the Media module you're using. Or, more likely, you can't find anything in the issue queue so you dig through the Media: YouTube code which contains lots of calls to custom formatter hooks (in Drupal core) and to hooks in the Media module, all of which have their own nasty call stack to worry about. So basically, you're going to have a bad time. However, at least you're doing something that requires brain power.
That brings us to #1. Most of the time everything works alright more or less so you're just clicking around plugging away with building the site. This is almost worse, because you are now a click monkey (the type of monkey that code monkeys make fun of).
Everything that you were excited about as a programmer--working through interesting solutions to complex issues, writing sweet algorithms, refactoring crappy functions into beautiful snowflake functions--all that stuff is just a pipe dream, and you're nothing more than a well paid mouse button operator.
Still, you'll likely need to write some custom code, whether it's for a unique feature that there isn't a module for or you're just doing some theming overrides. It seems like this should be the escape from the monotony of clicking but really it generally just ends up being frustrating. Drupal just isn't a great system to code for.
So no, custom code cannot cure cancer cornflake. Custom code is either also boring if you've done that thing times before or frustrating if you haven't.
Note that I understand that there are many reasons why most of the above list of grievances can't be changed (for example, if modules didn't build markup directly then you'd be stuck doing it all yourself in the theme ala Expression Engine which would greatly increase your development time), but it doesn't mean that I have to enjoy it.
Will Drupal become more fun in the future? Possibly, but likely not. Possibly because things like API cleanup and docs and miscellaneous DX niceties can add up to a difference, but likely not because Drupal has always been and always will be about being productive over being fun to code on. Drupal 8 is adding more functionality (see Spark) rather than subtracting it.
It's a vicious cycle--Drupal attracts people who want to get crap done and don't care as much about getting it done in the most enjoyable or most elegant way possible, because that's what Drupal's good at. These people in turn become contributors and push Drupal further along that road.
So your work isn't quite as interesting or challenging as it might be if you're working with Django or Rails or whatever, but you're able to do stuff a lot faster than you'd be able to do it using anything else so you can't leave without dealing with the frustration of knowing that. Try spending 150 hours building proximity search with mapping in Django and knowing that it would take a day in Drupal. It's the Drupal Tradeoff (tm) and unfortunately it's not something that any version of Drupal can really improve upon.
So what to do? Well I know what I'll do, I'll keep using Drupal and getting crap done, and I'll just use other technologies on side projects to stay sane and feel challenged and interested. Tis the power of the golden handcuffs.
Discuss on Hacker News or reply to me on Twitter.