After more than a decade of building business applications, I noticed something interesting.
Very few projects became difficult because the business rules were complicated.
Most became difficult because of everything surrounding the business rules.
Every new module seemed to require another controller, another service, another repository, another set of CRUD methods, another search endpoint, another authorization check and another audit implementation.
Over time, the application became full of infrastructure code that looked remarkably similar across different modules.






