O que é dívida técnica e por que você deve se importar?

Dívida técnica é um termo criado por Ward Cunningham, pioneiro do Agile, para descrever o que acontece quando uma equipe de engenharia precisa priorizar a velocidade de entrega do software em relação à qualidade de uma solução. Significa implementar por enquanto uma solução funcional, mas imperfeita, com a intenção de voltar e refatorar o código mais tarde (ou seja, pagar o principal do empréstimo). Se a equipe adiar a refatoração, podem surgir problemas que tornem mais difícil e demorado fazer alterações ou adicionar novos recursos no futuro (ou seja, o empréstimo acumulará juros).
O que causa a dívida técnica?
Há muitos motivos pelos quais uma equipe pode precisar assumir alguma dívida técnica. Como explica Ward Cunningham em um vídeo explicativo, às vezes a equipe precisa implementar uma solução que reflita seu entendimento atual de um problema e alterá-la depois, quando os dados dos usuários melhorarem esse entendimento. Em outras circunstâncias, por exemplo, ao desenvolver um produto novo em um mercado competitivo, a equipe pode optar por uma solução «boa o suficiente» para lançar o produto mais rapidamente.
Outras causas da dívida técnica podem indicar problemas mais profundos em uma equipe. Por exemplo, a equipe pode estar sobrecarregada ou não ter diretrizes claras sobre as prioridades do produto. Em outras situações, pode ter um foco muito amplo e trabalhar em coisas demais ao mesmo tempo. Martin Fowler desenvolveu o quadrante da dívida técnica para demonstrar como a dívida pode ser assumida de forma deliberada ou inadvertida, prudente ou imprudente, dependendo da situação e das escolhas da equipe.
As causas mais comuns da dívida técnica são prazos comerciais rígidos que não têm o respaldo de dados empíricos e evidências sobre por que devem ser cumpridos. Se um cliente impõe um plano de lançamento rígido e tenta abranger recursos demais, as equipes de engenharia tentarão fazer o máximo possível o mais rápido que puderem, o que costuma ter um impacto negativo na qualidade do código.
Por que você deve se importar com a dívida técnica?
Quando não é tratada e pode se acumular, a dívida técnica custa caro no longo prazo porque torna mais difícil e aumenta o tempo necessário para fazer alterações no software. A dívida técnica afeta primeiro a qualidade, o que acaba repercutindo em todas as outras métricas. Por exemplo, a dívida técnica não resolvida pode acabar afetando a experiência do usuário no aplicativo, às vezes a ponto de ele não conseguir obter o que precisa do produto e procurar outra opção.
Como devemos lidar com a dívida técnica?
As práticas ágeis dão muita importância ao gerenciamento da dívida técnica, por isso uma boa equipe ágil mantém em dia o pagamento do «principal» da dívida e garante que se acumule o mínimo de «juros». Para garantir a transparência, as equipes ágeis devem adicionar os itens de dívida técnica ao backlog do produto e não acompanhá-los em um documento separado que não seja visível para todos. Acima de tudo, devem dedicar capacidade para reduzir a dívida técnica em cada sprint e incluir alguns itens de refatoração no planejamento habitual do sprint. Se a dívida técnica for reduzida de forma consistente ao longo do tempo, será muito menos provável que ela afete o produto de uma maneira que prejudique sua funcionalidade principal ou a experiência do usuário. Os clientes podem apoiar as equipes de engenharia permitindo o tempo necessário para encontrar a solução certa para um problema, garantindo a qualidade e ajudando a evitar, ou pelo menos minimizar, a necessidade de refazer a solução mais tarde.
A dívida técnica em si, quando assumida de forma deliberada e prudente, não é necessariamente algo ruim no curto prazo se oferece uma solução funcional. No entanto, deve ser gerenciada com responsabilidade, e as equipes precisam ter um plano concreto para quitá-la. Esperamos que esta publicação tenha ajudado você a entender o conceito de dívida técnica e as consequências de deixá-la se acumular. Se quiser saber mais sobre como nossas equipes ágeis trabalham, confira nosso processo de desenvolvimento.