KISS stands for the guiding principle “keep it simple and stupid”. It is related to Occam’s razor, which states: entia non sunt multiplicanda praeter necessitatem (entities must not be multiplied beyond necessity).
This should probably be the main ground rule in any design, but it’s often overlooked, if not plain unknown by many self-appointed systems architects.
The KISS principle states that every system should be as simple as possible (but not simpler). It doesn’t talk about the easiness of a system, but the complexity. Some people tend to mix these two concepts up.
There is nothing to be proud of when designing complex systems per se. It is always way harder to design simple systems. They are also superior to more complex systems, provided that they support the same functionality.
This philosophy is also related with some other aphorisms, such as:
Perfect is the Enemy of Good
This means that, most of the time, trying to design the best (the more complete) system does not pay off, because it is unrealistic, and forces you to trade simplicity for the sake of perfection.
This, on the other side, is also related with another principle: YAGNI (you ain’t gonna need it).
Premature Optimization is the Root of All Evil
This shows that the right answer to the question: “when should I optimize my system?” is, 99% of the time: “not yet”.
It never ceases to amaze me that many programmers eagerly trade well-designed, maintainable code for an alledged better performance. Yet they rarely take the time to measure the improvement of their optimizations.