Dívida técnica

Definição - o que significa dívida técnica?

Dívida técnica é um conceito em programação que reflete o trabalho extra de desenvolvimento que surge quando um código fácil de implementar em curto prazo é usado em vez de aplicar a melhor solução geral.

O débito técnico é comumente associado à programação extrema, especialmente no contexto de refatoração. Ou seja, isso implica que a reestruturação do código existente (refatoração) é necessária como parte do processo de desenvolvimento. De acordo com essa linha de pensamento, a refatoração não é apenas o resultado de um código mal escrito, mas também é feita com base na compreensão em evolução de um problema e na melhor maneira de resolvê-lo.

A dívida técnica também pode ser conhecida como dívida de design.

Definirtec explica a dívida técnica

O termo foi cunhado por Ward Cunningham, um programador que também é conhecido por desenvolver o primeiro wiki. Dívida técnica é uma metáfora que equipara o desenvolvimento de software à dívida financeira. Imagine que você tem um projeto com duas opções potenciais. Um é rápido e fácil, mas exigirá modificações no futuro. O outro tem um design melhor, mas levará mais tempo para ser implementado. No desenvolvimento, liberar código como uma abordagem rápida e fácil é como incorrer em dívidas - vem com a obrigação de juros, que, para dívidas técnicas, vem na forma de trabalho extra no futuro. Dedicar algum tempo para refatorar é equivalente a pagar o principal. Embora isso leve tempo no curto prazo, também diminui os pagamentos de juros futuros.

Ward Cunningham descreve este conceito em 1992 da seguinte forma:

"Enviar código pela primeira vez é como se endividar. Um pequeno débito acelera o desenvolvimento, desde que seja pago prontamente com uma reescrita. Os objetos tornam o custo dessa transação tolerável. O perigo ocorre quando a dívida não é paga. A cada minuto gastos em códigos incorretos contam como juros sobre esse débito. Organizações inteiras de engenharia podem ser paralisadas sob a carga de dívidas de uma implementação não consolidada, orientada a objetos ou não. "

O conceito não significa que dívidas nunca devam ser contraídas. Assim como a alavancagem pode ajudar uma empresa quando usada corretamente, uma solução rápida pode significar um tempo mais rápido de lançamento no mercado de desenvolvimento de software. Além disso, a dívida técnica não é apenas um código ruim. Código ruim é código ruim, e problemas técnicos podem resultar do trabalho de bons programadores sob restrições de projeto irrealistas.