Blindly following anything -- especially nuanced, process-driven ideological frameworks -- is a recipe for a disaster.
KISS and YAGNI are examples of processes that require the person who is using them to actually think through the implications within the context of the problem being solved.
KISS and YAGNI did not cause the atrocities that you've seen. Those complex beasts of code existed because the team fundamentally didn't understand what they were doing.
It's like "agile" software development. Just declaring that you're following an agile methodology and scheduling stand-ups does not mean that you're going to be successful. It takes someone (and usually, many someones) who understand how to iteratively design and develop to be successful.
> It just takes a non-obvious path, and a few months of code and requirements evolution.
Can you expand on this comment? I'm interested in understanding what you mean by "non-obvious path".
Yep. That's the point, that's why I pointed it was blind.
Many people blindly follow and impose that kind of ideology. Most people that even mention YAGNI outside of a classroom are blind followers (for DRY things are more diverse).
By non-obvious path I mean things (requirement, underlining systems, user base size) changing in a way that was not unquestionably and blatantly obvious.
I can't agree with you more. Thank you for the follow-up.
Following KISS and YAGNI means you hard code lots of assumptions. When the requirements change, it means you have to fix all those subtle hard-coded assumptions everywhere and that is usually hard.