Our experience is the following:
- the product was initially developed chaotically, it was a big ball of mud without any architecture, it was hard to maintain
- the first step was consulting with a senior dev from another team (who happened to teach system architecture at a college), he gave directions what books to read, etc.
- then our senior devs completed an online architecture course by a former CTO/turned consultant (I don't know who recommended him, but he's pretty respected in the field, it seems), the class had like 20-30 students with live discussions and practical homework
- then they invited that consultant to audit our code/our processes, he highlighted the problems and suggested changes in our processes
- then we made it obligatory to always have architecture reviews before greenlighting new features, i.e. devs discuss code changes in 1-2 hour sessions, everyone learns in the process (including juniors)
- every year we started sending devs to thematic conferences/meetups where they can talk to other devs and learn how other companies design their products
- we host our own meetups sometimes; there's also thematic Telegram channels both created by us and others
- some devs are good at networking so they can arrange meetings/calls with acquantainces from other companies (in the same field as us) and discuss design problems in person