KISS principles as stated by Eric Raymond (ref. https://en.wikipedia.org/wiki/Unix_philosophy) lay a set of simple guidelines to create SW. If I was to put it in a line I'd say it's what enables Unix users to create their own programs out of simpler programs. Things like
> cat file | grep name | sort | tr -d 'Mr '<p>Most of these programs exist for decades and will continue to do so. They're virtually bug free now, rock solid and in constant use.<p>Yet, where I work and in most other SW houses I see that we go for anything but KISS. Bulky, huge OO hierarchies, overblown design patterns and in general creating huge behemoths (even when we call them microservices) sprinkled with ever more design principles like SOLID and what have you that give me the impression that they're trying to manage the complexity that should not be there in the first place.<p>Dunno. What's your take on this? Why isn't KISS used more deeply and widely? What are the reasons to be at the verge of or blatantly roam to the side of overenginnering? I'm just trying to understand why we seem to make things much more complicated than they need to be.