Simple designs implement just what the Users ask for.
If it is not explicitly stated in an implemented Story it should not be in the code.
My metaphor is the “razor”. Cut off all the decorations until the underlying essentials are laid bare.
Another word is Parsimony – do not do today what can be put off to tomorrow – by tomorrow we may know more about what is needed tomorrow.
What can be cut out of the Story and still deliver something useful to the User?
What can be left out of the code and not significantly impact the User? (Subject to Standards!)
If the User has not given us a test case for it, does that mean it can be omitted?
Avoid parametisation, generalisation and architectural structures that will support options not yet implemented. But see Refactoring.