All the analogies to things in the physical world -- like building a theater -- are, IMO, terrible. You need to explain that refactoring code is like... refactoring code. Software is malleable in ways that physical analogs are not. As things get more and more complex, one must reactor (or redo, as you wish) massive or small parts of a codebase so that we can continue to increase the complexity without going insane. Why do we refactor? Because code that is never refactored costs more per minute to maintain and change, and ultimately becomes more problematic. What's so interesting about refactoring is that we redo the codebase but, at least at the outset, the functionality remains the same.