DRY (Don't Repeat Yourself) is a good principle to make software more maintainable. It can also help code to be more readable and efficient. But it can also lead extra layers of abstraction and separation from the actual logic. Pure DRY should therefore never be the absolute goal.
Optimization and extra features are things that can often delay software projects. Sure, it's nice to have performant code with good set of features from the start. But released software is almost always better than couple of missing features or room to speed things up.