Each and every piece of software will start with a design. Ranging from common sense, to a fully blown YAGNI, You ain’t gonna need it.
Rule of thumb: Don’t over-engineer things. Only write functionality when you need it right now. If you will not have a use right now for it, you will most likely not need it in the future. Even though you think else. Here are some typical statements that should ring some alarm bells when it comes to violating the YANGNI principle:
- We may have a use for it in the future
- This may come in handy sometime
- I think the customer wants it this way
More often than not, when the YAGNI concept is violated it is presumably someone in the base forgot the KISS rule.