Problem Statement
Developers often add features or code for future needs that never happen. This leads to bloated, complex code that is hard to maintain and slows down development.
This diagram shows that only current needs trigger feature development, while future assumptions are ignored until they become real needs.
### Before applying YAGNI (violating) ### class UserProfile: def __init__(self, name): self.name = name self.address = None # planned for future use self.phone = None # planned for future use def set_address(self, address): self.address = address def set_phone(self, phone): self.phone = phone ### After applying YAGNI (applying) ### class UserProfile: def __init__(self, name): self.name = name # Add address and phone only when needed