The most important thing is to recognize that almost any software project will tend towards Big Ball of Mud as you add features. If you keep aware of this possibility then you can recognize when it is about to happen and give your head a shake, do a bit of design thinking, and move things to a proper loosely coupled architecture. A Big Ball of Mud is not inevitable. It's also important to recognize that a lot of the…
I think the real problem is the subjective nature of deciding when an app is too big and needs to split apart.