- Resources & Library
- For Developers & Technical Teams
- Code Quality & Practices
Balance YAGNI with Extensible Design
Planning for every future possibility delays today's value, while rigid design raises change costs; flexibility should be proportional to evidence.
Omar Alalwi Article
A technical lead may anticipate future needs and build them into the current feature before the product requests them. The work can look proactive, but it adds time and complexity based on technical predictions that may not match business priorities or market timing.
YAGNI reminds the team not to build a capability merely because it might be requested someday. Deliver the smallest solution that meets the validated requirement, and record future ideas instead of implementing them silently. When requirements contain a meaningful gap, return it to the product manager to decide its value and priority rather than turning it into a unilateral technical choice.
This does not mean writing code that is difficult to change. Maintain clear boundaries, good names, and tests around current behavior, and introduce extension points when there is near-term evidence for them. Good flexibility lowers the cost of expected change; complete functionality for distant possibilities is unused inventory that still requires maintenance.
Share your perspective
I’d be glad to hear your perspective. Leave a comment on the original article on social media.