The Abstraction Trap: When Clean Code Goes Wrong How premature abstraction can lead to increased complexity and maintenance burden in software projects