KISS principle

Kiss, which stands for ‘keep it simple stupid’, is a principle that states that: “most systems work best if they are kept simple rather than made complicated; therefore, simplicity should be a key goal in design, and unnecessary complexity should be avoided. (source)”

I often see people fail to apply this principle during software development and make things way to hard for themselves and their team. This way complex and unmaintainable systems are created that are marvels of ingenuity but often do not warrant the hours spent building and maintaining them.

During discussions often future features or ideas are used to justify why a simple change needs to a complex solution. Any work that happens after the current change should not determine how a feature is implemented now. While some people claim it, I myself cannot foresee the future, so I don’t know I these features or ideas will ever be implemented. For all I know the project takes another direction and these features are no longer required. So these features and ideas should be labeled as YAGNI (yet) and placed somewhere on a backlog.

The implementation that is required now should be the simplest thing you can think of.