YouAren’tGoingToNeedIt

Implement only the minimum you need to support the requirements

Definition

Implement only the minimum you need to support the requirements that you are implementing in the immediate release.  Avoid having to implement and maintain designs to support flexibility that might never be used.  Avoid having to implement designs to support flexibility that we know will be used, but not immediately.

Source

 

Discussion

Traditionally in OO Analysis and Design it has been considered a good practice to think of, and design to support, possible future change.  Thinking ahead is a good practice if the cost of introducing this flexibility when we find we need it is high.  However, modern approaches have addressed the issue of cost of change.  Where ConstantRefactoring is used, it is good practice not to implement anything if YouAren’tGoingToNeedIt.

Contra-Indications

Where the requirements are stable and future needs are known, there is a reasonable argument for making preparations in advance.  In addition, ConstantRefactoring and all its supporting techniques must be in use, and architecturally significant requirements should be addressed in early iterations.