The "problem" is that front-end styles/look-and-feels change so often that many places feel they need many layers to protect themselves from future front-end style changes so they can have the latest whizbang UI/UX. While this generally works, it creates extra busy work in managing and debugging layers and the interaction between them. Separation of concerns means managing the pathways between the separate parts: it's not a free lunch.<p>The most productive dev tools I ever used had tight integration between the business logic, UI/UX, and the database. Very little code got a lot done. But, the tight integration meant it was harder to switch database brands or UI/UX styles.