Estou procurando uma boa analogia ou metáfora que possa ilustrar os problemas da programação copiar e colar para não programadores. Ocasionalmente, faço revisões de código / sistema para clientes em potencial e um dos problemas comuns que vejo são grandes quantidades de código de copiar e colar em todas as suas bases de código. É algo que eu costumo mencionar nas revisões e sempre que preciso explicar por que isso é um problema (isso é especialmente difícil com clientes que sabem o suficiente sobre programação para entender que a reutilização é uma coisa boa, mas não o suficiente para entender por que copiar e colar não é uma boa forma de reutilização). Obviamente, eu posso (e faço) explicar o problema em termos de manutenção de código, mas seria bom ter uma analogia boa e concisa para esse problema que chegaria em casa com os não programadores. Bônus se a analogia ilustrar por que a pesquisa e substituição não é uma solução eficaz para esse problema. Alguma sugestão?
Apenas para esclarecer (com base na resposta de Jaroslav abaixo) - não estou falando sobre o uso de trechos de código aqui; o que vejo (com frequência perturbadora) é copiar e colar vastas faixas de código ou um pedaço de código de dez linhas para obter alguns dados do usuário (completos com consulta SQL embutida) colados em dezenas de páginas PHP ou ASP.NET. Portanto, duplique o código de outras partes do mesmo projeto.
Atualização: Existem várias respostas realmente boas aqui; Expliquei nos comentários por que escolhi a resposta de Scott Whitlock, mas também recomendo vivamente a resposta de whatsisname se você estiver lidando com clientes familiarizados com a fabricação.