Defer Commitment

When you are facing irreversible decisions that need to be done during the course of software development one should apply the following logic: schedule irreversible decisions for the last responsible moment (the last chance to make the decision before it is too late). This is not to say that all decisions should be deferred. First and foremost, we should try to make most decisions reversible, so they can be made and then easily changed.