What’s the goal of Architecture? Developer Comfort! Really!
Did you ever wanted to rewrite your enterprise application from scratch? I’m pretty sure the new codebase would be two times smaller, right? But, given the time and budget for a rewrite, what would you do to keep it from becoming “legacy” again in 2 years?...
Ok, Wake Up! Your boss won’t approve a rewrite! But still, what should you aim for with your continuous refactorings and clean-ups?
Let me share with you what I believe to be the ideal mindset when working on an enterprise application: Pragmatic, Clean Architecture. Simple code that solves the problem at hand without any useless over engineering. Clean Architecture that allows you to defend your domain from external Evil influences. An evolutionary approach to micro-architecture that allows you to grow the design as new functional complexity is being added to the application. And of course, tests, to fight the biggest problem of all: Fear.
I want you to criticize your architecture, and to prefer a minimalistic design that would preserve a happier developers. It's a story that I've gone through with teams on numerous projects, and not it’s time to share. BTW: it’s roughly the architecture and principles that all the new projects on my account now use.