I started working in software projects when C++ was the only highly popular programming language. There used to be a lot of focus in writing optimal programs or routines. So though the applications were optimal, they suffered from Waterfall mindset of thinking distant future nobody was clear on – “What if…in future…”.
Design patterns and C++ Idioms were new and that led people writing complex programs for the heck of applying patterns in the applications. Some “what if…” used to generate a lot of waste. I still remember a software project which was continuously and consciously designed for internationalized database just because what if we need to setup our company in a country like China. For years a lot of effort and money went into developing and maintaining internationalized datasets. At the end when the need really came, people realized that the same system doesn’t fit in China because the way thing works over there. So a lot of hard work simply became waste.
Agile came and along with that engineering practices Extreme Programming became mainstream. The learnings from Waterfall days gave birth to some principles which made a lot of sense in Agile perspective.
So “Keep It Simple and Stupid (KISS)” made a lot of sense to the developer community which has already seen many overengineered products and a lot of waste coming just because of “what if…” syndrome.