Does Anyone Remember YAGNI?
Exploring the art of maximizing the amount of work not done, and the discipline required to avoid engineering for anticipated future needs.
“Always implement things when you actually need them, never when you just foresee that you need them.” – Ron Jeffries
The Challenge
Teams often engineer solutions for anticipated future needs rather than focusing on present requirements. This talk addresses the risks of this approach and advocates for the honesty and discipline required to combat this tendency.
Associated Costs
Without YAGNI discipline, we incur:
- Build costs
- Repair costs
- Delay costs
- Carry costs
The Balancing Act
YAGNI isn’t about avoiding all planning - it’s about distinguishing between “building presumptive features” and “making software easier to modify.”
Supporting Practices
- Test-Driven Development
- Refactoring
- Continuous Integration
- Code Review
Without proper design discipline, applications become too complex to modify. The goal is simplicity that remains adaptable to future changes.