The bottomline is that there is a tool best fitting for every task, there is no magic bullet.
Even quick'n'dirty code is the perfect choice for some things, things that do just one thing, like a database backup which needs more than a mysqldump cronjob (ie. send e-mail notification if backup failed)
Too often programmers fail for wanting to make things too fancy, forgetting the golden rule of code: Keep It Simple, Stupid!
For example, Zend Framework used to be quite great couple years back, but already suffering from the Coder's God Complex, things needing to be too fancy, a simple redirect doing 13+ method class to different classes. However, mainly it was still fairly simple and easy to work with. Today? It's insane complexity even for the most basic tasks, and basicly ruined completely. Magento is the culmination of this Coder's God Complex problem. (Weeks to just template the thing for all which is not exactly the same layout just colors changed!)
Then there is the other kind of problem: Absolutely no thought given to the task at hand, and a big complex system done completely Quick'n'Dirty, like WHMCS, osCommerce.
WHMCS is the worst piece of crap i've seen, they seriously thought that 1 EUR = 1 AUD = 1 GBP. WTF?!
They still point towards mysql result arrays by *NUMBERS*, not utilizing the column names like they should.
It's mostly function based code, no classes, no abstractions, no structure.
It even have serious security flaws due to these, for example mass invoice payment works by giving the customer credit then marking all the mass invoice payment invoices paid, which results in many automated systems that the customer gets free services, as auto-suspending doesn't work anymore and services looks like paid.
Hell, if you enabled multi-currency you can't even sanely go back at all anymore! You need to build a big conversion script and verify everything manually.
Also, by default TAX reports are done invoice based not transaction based like they should, and amounts checked from invoice. So you end up with completely wrong tax reports.
Infact, all the reports are screwed up by default, every single one of them concerning money are too badly flawed to be useable.
Also, there is e-mail bomb security flaw in WHMCS, allowing a nefarious attacker, especially if smart one, to DoS attack your system with spending 0 of their own resources and completely untraceable (we had an attack like this).
I've reported tens upon tens of these bugs to WHMCS, and they simply delete the threads claiming there is no such bugs even tho repros have been provided, only if i provide workarounds/solutions they will not delete them immediately. Some of my fixes did flow back into future releases tho (without credit).
Nevermind the huge usability issues, i do specialize in UX and tend to notice usability issues very easily.
The most worrying part tho? Some vendors simply refuse to admit any issues exist, and simply ignore you, for example i found potential critical security flaws in Bit-Pay WHMCS payment gateway module, Bit-Pay never bothered to even reply to my concerns, even tho i showed the particular issues with the module. That particular module had the worst crap i've seen in many years tbh, just a glance over the code showed severe code QA issues, and altho i did not test, i'm fairly confident there is a exploit there due to incorrect handling of payment verification. I even refactored and fixed some checkup code before giving up as it being too far off