If they are actually smart as in „intelligent, humble and curious“ they'll understand and adapt.
During my first two years as a developer, I was also in the „a double for-loop? Not under my watch!“ - camp and wrote a lot of „clever“ code that often was a waste of time or even caused problems lateron.
With experience + reading more about software engineering „in practise” as opposed to „in academic theory“, I learned to prefer solutions that don't use many layers of abstraction, are simple enough for a junior engineer to understand, easy to maintain and actually add value for the business.
A smart engineer knows that engineering time is limited and expensive - and acts accordingly.