”Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” – Martin Fowler
Anyway, I think there has to be a decision/ranking on the importance of having
1. happy programmers & excellent code 2. code that any(?) developer could jump in and maintain
To me it often boils down to not making simple shortcuts due to laziness unless it buys time to market or has some other significant upsides.
Making a system flexible can often be done in a non-complex way so I would challenge then need to make software complex. There is often a trade-off between efficiency and maintainability. If the efficiency route is always preferred there could come a day when the developers quit and others have to maintain what they feel is a mess of code and want to rewrite it. So my vote would be to keep the complexity low (and flexibility high!) unless there's a concrete benefit of allowing the complexity to grow.
You could look into various design patterns to keep code flexible while keeping complexity low.