All-In-One platform architecture
Worst thing in software development is pushing an all-in-one architecture for software that serves different layers of an organization (departments, business units).
If you do it, expect to land in leaky abstraction hell as you quickly learn that a User for marketing (lead) is different from a User for the accounting dept (billing entry).
Such context collisions (an actual concept) push developers to bend the code and the code in ways it wasn’t meant to go.
Trying to fit all the definitions above into a single architectural model leads to very ugly hacks.
The there’s the architect forcing his idealistic view of how data should flow onto the system, completely disregarding how users actually behave.
This is called the “Golden Hammer” fallacy and leads to a lot of internal meetings where the users are blamed for not using the system correctly.
User wanted to skip adding their contacts while signing up? Bummer, the system was expecting that.
Did the user employ a third party to format text and pasted it to the app? App breaks because it expects to do the formatting itself and now markup doesn’t match.
I think that all in one platforms are amazing as long as the individual pieces are loosely linked together and the platform itself doesn’t try to do everything, from taking your kids to school to heating up the water in the pool.