I would add one point, or rather replace "junior devs".
This point is tutorials/bootcamps/academies or things of that sort.
In my opinion, there is a big difference whether the developer has had a formal education, or was pretty much self taught.
It's easy to make a tutorial/lecture on ifs, loops, generics etc, but rarely can we find tutorials that cover design patterns, since that requires more time and context to explain, or can sometimes even be considered "too advanced".
In formal education, however, those topics can be explained in the period of half a year, rather than 10 minutes :)
Whether you choose to listen during lectures in the uni is another topic :D
Honestly, I've never learnt about maintainable code at university. And if I have a look at the curriculum or some programming courses that I'm aware of, they don't really care.
Then all this becomes the more senior colleagues' responsibility in the different companies.
Well, at my university I had a whole course about patterns and architecture. I would also consider that a part of maintainability.
However yes, I agree that most of the maintainability is learnt by doing, especially with a guidance of senior :) I have probably exaggerated a bit :D
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.