Imagine you're building an issue tracking system like Jira. You start with a single class that handles everything: fetching tasks from the database, formatting them as HTML, and processing form submissions.
It works, until the product team wants a mobile app with JSON responses. Then they want a Kanban board with a different layout. Now you're duplicating business logic across three places, and a simple validation rule change requires editing multiple files.
Your presentation logic is tangled with business rules. Your database queries are scattered across UI code. Testing anything requires spinning up the entire application.
The MVC (Model-View-Controller) Pattern solves this by separating your application into three distinct components, each with a single responsibility.