Digamos que você seja um mecânico especializado em personalizar carros e até construí-los do zero, se o cliente exigir. Há um cliente que volta à sua loja de vez em quando para colocar sempre algo novo e brilhante em sua limusine super grande.
Uma vez que ele entra para ter um bom sistema de som instalado. Você executa diligentemente a tarefa passando os fios e conectando tudo corretamente. Ele sai um dia depois, está feliz e paga generosamente, como sempre.
No mês seguinte, ele volta, mas desta vez ele quer um home theater completo instalado. Mais uma vez, você entra na limusine. Sendo um profissional, você revisita o sistema de som e facilita a manutenção instalando um sistema de tubulação para passar os fios ao redor do carro. Dessa forma, os fios são protegidos e mais fáceis de remover e, caso você precise adicionar mais, também será fácil. Então você arranca os fios antigos, instala a tubulação e passa o sistema de som e os fios extras para o cinema, fecha tudo e está pronto.
Percebendo que o cliente não pediu para você substituir o sistema de som antigo, você dedica parte do custo das substituições e dos tubos. No entanto, você ainda ganha dinheiro com o negócio, mas não tanto quanto você teria, apenas juntou o sistema como fez na primeira vez.
Um mês depois, ele volta, desta vez quer um sistema de iluminação e quer que os novos alto-falantes tenham danificado os antigos no início da semana.
Como você manteve tudo bonito e arrumado, pode passar rapidamente os novos fios de iluminação pelo tubo, instalar o sistema e substituir o alto-falante. Desta vez, no entanto, você é feito muito mais rápido, a re-fatoração valeu a pena mantendo você no topo do seu jogo.
Seu concorrente, que estava rindo de você por rasgar fios perfeitamente bons e instalar todo esse tubo extra, ainda está lutando para satisfazer o cliente. Claro que ele foi feito mais rápido do que você na maioria das vezes, mas com o passar do tempo seus clientes estão reclamando que há cada vez mais atrasos e a qualidade geral do trabalho é degradante.
Olhando para isso, você percebe que seu objetivo não apenas é permanecer no negócio, mas também ser o principal responsável por equilibrar o que você faz para atender às demandas do cliente e o que você faz para facilitar sua vida no futuro. Muito raramente um cliente pagará pelos dois, então você precisa gerenciar de perto. Você aposta que, ao fazer as coisas de maneira pró-ativa, mesmo com o custo de fazer duas vezes, você manterá os custos de manutenção em uma porcentagem estável controlada de sua produtividade.
O software é o mesmo, exceto que os programadores podem jogar com fita adesiva digital por MUITO tempo antes que os efeitos sejam realmente sentidos pelos clientes e gerentes. Infelizmente, nessa época, o custo de refazer as coisas corretamente aumenta exponencialmente em relação à quantidade de fita adesiva presente e à idade média da referida fita adesiva.
É por isso que é importante continuar refatorando o sistema. Muitas vezes, a experiência nos mostra uma nova maneira mais eficiente de fazer a mesma coisa ou podemos combinar funcionalidades semelhantes e explorar redundâncias, em vez de simplesmente copiá-las. É assim que mantemos o sistema enxuto e mesquinho. O tempo mostrará que refazer o sistema constantemente para atender às demandas manterá a produtividade constante, controlando a quantidade colocada em manutenção.
A colocação de fita adesiva aumentará momentaneamente a produtividade ao custo de transportar um sistema abaixo do ideal. A dívida técnica é incorrida sempre que a produtividade imediata é favorecida em detrimento dos outros aspectos de um sistema. A analogia da dívida é boa porque assim como os juros sobre o capital emprestado diminuem os lucros, o tempo emprestado torna as coisas rapidamente incorridas em maior manutenção e aumentam a fragilidade do sistema, forçando uma equipe a gastar recursos adicionais na manutenção e não na criação. Assim como seu parente financeiro, se os empréstimos continuarem inabaláveis, a maioria dos recursos será gasta no pagamento de juros, deixando muito pouco para melhorias. A dívida técnica corroerá os recursos técnicos a um ponto em que a maioria dos recursos é gasta, apenas mantendo o sistema funcionando paralisando todos os outros aprimoramentos possíveis.
Portanto, em última análise, a questão não é se devemos ou não devemos fazê-lo, mas é ético deixar que gerentes e clientes acreditem que podem confiar em números de produtividade inchados artificialmente com o uso de fita adesiva digital. Alguns pensam que é uma decisão de negócios, mas, francamente, isso ocorre apenas porque os gerentes não a entendem. No final, alguém terá que pagar a dívida através de uma pesada re-factoring ou migrando para um novo sistema. Em última análise, para nós, programadores, é manter os sistemas em manutenção, você não precisa pedir para re-fatorar, pois é uma parte inerente do trabalho, deixar de entender isso significa não entender o que é a engenharia de software. Dito isto, percebo que existem sistemas por aí que já assumiram uma dívida importante e que pagar essa dívida exigirá decisões dos pagadores. Seu trabalho é que tal situação é, pelo menos, fazer sua parte para parar de pedir empréstimos. Esta dívida foi constituídaPELOS EUA, talvez porque não soubéssemos melhor, porque fomos pressionados a fazê-lo, ainda assim, assumimos essa dívida e, muitas vezes, as pessoas que entregamos a dívida não a entendem e, portanto, não conseguem administrá-la adequadamente.
Aqui está o seu software, pronto, espero que você goste .... Ho, a propósito, eu estiquei o máximo de seu cartão de crédito, espero que você não se importe ... cya