I tend to think that splitting development into API and front end solves some of this.
The main problem with "enterprise" software is that it's done cheaply, and violates levels of abstraction. Thus why it frequently requires specific versions of antiquated technology ("Our CRM requires IE6", "We can't upgrade past Windows 2000").
If it was designed properly, you could easily rip out both parts and iteratively redesign them to meet business and technical goals.
The main problem with "enterprise" software is that it's done cheaply, and violates levels of abstraction. Thus why it frequently requires specific versions of antiquated technology ("Our CRM requires IE6", "We can't upgrade past Windows 2000").
If it was designed properly, you could easily rip out both parts and iteratively redesign them to meet business and technical goals.