- make it easy to extend (lets's call it SOLID in this context)
- make it easy to rewrite (let's call it KISS)
OO developers think that the first approach is The Only Way but both can be right, especially with high-level declarative languages and with tasks small enough (relative to the language expressive power).
SOLID makes it easier to modify programs (in predetermined directions) without understanding the whole.
KISS makes it easier to understand the whole program.
SOLID accumulates inefficiencies over time because people program with tunnel vision.
KISS takes longer to modify as it grows and eventually exceeds the capacity of human brain.
SOLID is mostly OO, KISS is mostly declarative.
If you want to feel safe changing code unit tests are nice, best practices and design patterns are nice too, good architecture is appreciated. But the best is just to understand everything that happens. Only then truly fearless programming is possible.
Once you go big enough you have to use SOLID but before that it's a cost.