MotivationSmall, Loosely Coupled Modules Allow Developers to Work on Isolated Parts of the CodebaseSmall, Loosely Coupled Modules Ease Navigation Through the CodebaseSmall, Loosely Coupled Modules Prevent No-Go Areas for New DevelopersHow to Apply the GuidelineSplit Classes to Separate ConcernsHide Specialized Implementations Behind InterfacesReplace Custom Code with Third-Party Libraries/FrameworksCommon Objections to Separating ConcernsObjection: Loose Coupling Conflicts With ReuseObjection: Java Interfaces Are Not Just for Loose CouplingObjection: High Fan-in of Utility Classes Is UnavoidableObjection: Not All Loose Coupling Solutions Increase Maintainability