I personally learned most when I did refactor a big legacy system towards a modular architecture where you slice the old code into layers and glue it together with some dependency injection or other abstractions based on common architecture patterns. Like this you can see what are the common mistakes and why it makes sense to put effort into modularizing a system from beginning.
- It all about building a system that can be maintained over time. Testability and modules are key!
- You have to know about patterns, and see when they can help and why
- " about different technologies used it the filed you work and how to glue them together
- " about configuring a big system that it can be used in different contexts with minimal effort
- " about tools that can measure a good architecture like pmd, findbugs in the java world
- " about setting up a code, test, build environment which allows for agile development...
- and many many more...
- Architecture a system is a huge responsibility and if done wrong it can screw everything.
I personally would not let someone do any big architectural decisions without much less than 10 years experience.