Managers often have a bad reaction to hearing developers say that they need to throw away or rewrite code. Source code is expensive, taking hours/weeks/months/years of painstaking work to develop and maintain. "Why couldn't we have done it right the first time?" "Is there any way to salvage the code and reuse it somewhere else?" This comes from a faulty view of code as the end product; in reality, the end product is the service that the code provides. To illustrate this, take an extended construction metaphor. When constructing a house or commercial building, the blueprint is a fairly minor part of the cost. You don't want to scrimp or cut corners on the blueprint because you run the risk of far more expensive problems during the construction phase. In software, however, the construction (build) phase is nearly free. Not only that, but a newly built "house" can be duplicated and deployed as many times as you like.