Compreendendo a Dívida Técnica

Da Wikipédia: “Dívida técnica (também conhecida como dívida de design ou dívida de código) é “um conceito em programação que reflete o trabalho de desenvolvimento adicional que surge quando se utiliza um código fácil de implementar no curto prazo em vez de aplicar a melhor solução global”.
A dívida técnica pode ser comparada à dívida monetária. Se a dívida técnica não for paga, ela pode acumular ‘juros’, tornando mais difícil implementar mudanças posteriormente. A dívida técnica não tratada aumenta a entropia de software. A dívida técnica não é necessariamente algo ruim e, às vezes (por exemplo, como prova de conceito), a dívida técnica é necessária para fazer os projetos avançarem. Por outro lado, alguns especialistas afirmam que a metáfora da “dívida técnica” tende a minimizar o impacto, o que resulta em uma priorização insuficiente do trabalho necessário para corrigi-la.”
O conceito de dívida técnica vem do mundo da engenharia de software, mas se aplica ao mundo da TI e da infraestrutura de negócios da mesma forma. Assim como na engenharia de software, projetamos nossos sistemas e nossas redes, e tomar atalhos em nossos projetos — o que inclui trabalhar com projetos menos do que ideais, incorporar hardware existente e outras práticas ruins de design — produz dívida técnica. Uma das formas mais significativas disso vem de investir no “passado” em vez de no “futuro” e é, muito frequentemente, desencadeada pela falácia do custo irrecuperável (também conhecida como jogar dinheiro bom em cima do ruim).
É fácil ver isso acontecendo nas empresas todos os dias. Novos planos são feitos para o futuro, mas, antes que sejam implementados, são feitos investimentos para manter um projeto de sistema antigo funcionando, funcionar melhor, expandir ou o que quer que seja. Esse investimento então se transforma em uma perda financeira quase imediata ou, mais frequentemente, torna-se um incentivo para não investir nos projetos futuros com a rapidez, a profundidade ou a abrangência possíveis — ou, simplesmente, para não investir. O investimento no passado pode tornar-se incapacitante nos piores casos.
Isso acontece de inúmeras maneiras e geralmente de forma não intencional. Muitas vezes, investimentos são necessários para manter um sistema existente funcionando adequadamente e, em condições normais, simplesmente seriam feitos. Mas, em uma situação na qual há uma mudança futura necessária ou potencialmente planejada, esse investimento pode ser problemático. Uma melhor análise de custos e um melhor planejamento de triagem podem remediar isso, em muitos casos, porém.
Em um exemplo não técnico, imagine possuir um carro mais antigo que serviu bem, mas que está prestes a ser aposentado em três meses. Em três meses, você planeja investir em um carro novo porque o antigo já não é economicamente viável devido às necessidades contínuas de manutenção, à menor eficiência e assim por diante. Mas, antes que seu plano de três meses para comprar um carro novo se concretize, o carro antigo sofre uma falha menor e agora exige um investimento significativo para continuar funcionando. Colocar dinheiro no carro antigo seria um novo investimento na dívida técnica. Em vez de gastar uma grande quantia de dinheiro para fazer um carro antigo funcionar por mais alguns meses, antecipar o cronograma para comprar o novo é, obviamente, drasticamente mais sólido do ponto de vista financeiro. Com os carros, percebemos isso facilmente (na maioria dos casos). Economizamos dinheiro, potencialmente muito, ao comprar rapidamente um carro novo. Se investíssemos pesadamente no antigo, ou perderíamos esse investimento em alguns meses, ou arriscaríamos alterar nosso sólido planejamento financeiro para a compra de um carro novo que já havia sido feito. Ambos os casos são ruins financeiramente.
A TI funciona da mesma maneira. Gastar uma grande soma de dinheiro para manter um sistema de e-mail antigo seis meses antes de uma migração planejada para um sistema de e-mail hospedado seria, muito provavelmente, uma grande tolice. O investimento ou se perde quase imediatamente quando o sistema antigo é desativado, ou compromete nossos bons processos de planejamento e nos leva a não migrar conforme planejado e a fazer um trabalho abaixo do ideal para nossos negócios, porque permitimos que a dívida técnica conduzisse nossa tomada de decisão em vez de um planejamento adequado.
Muitas vezes, uma operação de triagem deficiente ou a autoridade inadequada dos responsáveis pela triagem pode ser o fator que provoca investimentos emergenciais em dívida técnica em vez de investimentos rápidos e voltados ao futuro. Esta é apenas uma área em que grandes melhorias podem abordar problemas, mas é uma área importante. Isso também pode ser mitigado, em alguns casos, por meio do planejamento de “e se”, mantendo planos de investimento já estabelecidos como contingência para emergências comuns ou esperadas que possam surgir, o que pode ser tão simples quanto necessidades de expansão de capacidade decorrentes de crescimento que ocorram antes de o planejamento de sistemas entrar em ação.
Outro ótimo exemplo de dívida técnica comum é a expansão da capacidade de armazenamento de servidores. Esse é um cenário que vejo com certa frequência e que demonstra bem a dívida técnica. É comum uma empresa comprar servidores que não dispõem de grande capacidade de armazenamento interno. Seja imediatamente, seja em algum momento posterior, mais capacidade é necessária. Se isso acontecer imediatamente, podemos perceber que o servidor adquirido foi uma forma de dívida técnica em um design impróprio e, obviamente, representa uma falha no processo de planejamento e compra.
Mas um exemplo mais comum é a necessidade de expandir o armazenamento dois ou três anos depois de um servidor ter sido comprado. As escolhas comuns de expansão incluem adicionar um arranjo de armazenamento externo para conectar ao servidor ou modificar o servidor para aceitar mais armazenamento local. Ambas as abordagens tendem a representar grandes investimentos em um servidor já antigo, um servidor que facilmente já passou por quarenta por cento ou mais de sua vida útil. Em muitos casos, o mesmo investimento, ou apenas ligeiramente maior, em um servidor completamente novo pode resultar em hardware novo, CPUs mais rápidas, mais RAM, o armazenamento necessário, projetado e construído sob medida, alinhado e com ciclo de suporte renovado, menor ocupação no datacenter, menor consumo de energia, tecnologias e recursos mais novos, melhores relações com fornecedores e muito mais, tudo isso mantendo o servidor original para reutilizar, aposentar ou revender. Um caminho gasta dinheiro sustentando o passado; o outro, muitas vezes, pode gastar uma quantia comparável no futuro.
A dívida técnica é um fator incapacitante para muitas empresas. Ela aumenta o custo da TI, às vezes de forma significativa, e pode levar a altos níveis de risco devido à falta de planejamento e ao fato de a maior parte dos gastos ser de natureza emergencial.
