In massive mature codebases manual refactoring becomes prohibitively expensive. As legacy patterns and quirks accumulate new tooling is required to measure, analyze, and apply refactorings that enable businesses to remain competitive.
Rough Design Up Front, is often the best way to start a project. Not every project is so complex and uncertain that is must be evolved from scratch. Significant parts of most solutions can, and should, be designed up front.