Refactoring allows us to significantly alter the architecture of software that's been running in production for years.
Finishing Architecture before coding assumes the requirements for the software can be understood early on. Experience shows that this is usually an unachievable goal.
People only understand what is needed from software once they have a chance to use it.
As our understanding of user needs changes, we use refactoring to adapt the architecture to those new demands rather than speculate on what might be needed upfront.
YAGNI: Simple, incremental design
Doesn't mean architectural thinking disappears or we neglect upfront thinking.
Preparatory thinking can still be valuable and save time.
The balance has shifted to dealing with issues later when we understand them better.