Recentemente, estive na banca de mestrado do Ciro Goulart orientado pelo Rafael Prickladnick, cujo tema era dívida técnica. Este post traz um resumo do assunto e uma reflexão minha sobre os juros que se paga em cima dessa dívida.
Toda vez que um time de desenvolvimento não realiza uma alteração no código que geraria uma melhoria na sua qualidade, dizemos que o time acumulou uma DÍVIDA TÉCNICA.
Isso pode acontecer de modo intencional ou não, mas é algo que ficamos devendo e que pode impactar no futuro.
Dívida Técnica ou Débito?
Em inglês, o termo conhecido é Technical Debt, cuja tradução é “dívida” e não débito (debit em inglês).
No dicionário, débito é um registro negativo lançado numa conta corrente. Ou seja, poderíamos até dizer que a dívida técnica é o conjunto de débitos acumulados ao longo de um projeto mais os seus juros.
Porém, essa é uma nomenclatura que já tem sido usada há algum tempo sem uma regra, por isso é comum vê-la nas duas formas.
Juros Simples
Como quase toda dívida, o seu acúmulo traz consequências. Ao programar novos itens a partir de um código mal feito, dificuldades vão surgindo podendo levar a um retardo na velocidade do time. Esses são os JUROS que se paga pelo acúmulo da dívida.
Juros Compostos
Os juros compostos (por definição contábil, juros sobre juros) são quando novas dívidas são absorvidas para contornar uma dívida anterior. No dia a dia, isso acontece quando um programador fala que vai ter que fazer uma gambiarra para contornar uma gambiarra anterior. Nesse momento, o time está acumulando uma dívida em função de outra. Mais tarde, a nova gambiarra estará também provacando um aumento no retardo do time, funcionando semelhante aos JUROS COMPOSTOS.
Quando pagar a Dívida?
Igual a uma divída financeira, o quanto antes melhor. Não se deve acumular.
A qualidade do produto é um bem da empresa, o único que poderia abrir mão dela seria o dono. Porém, caso a decisão do negócio seja absorver alguma dívida, objetivando uma entrega mais rápida, então crie VISIBILIDADE sobre a dívida acumulada para que todos fiquem alertas e possam pagá-la o quanto antes. (Dica: cole um post-it chamativo no seu quadro de tarefas)
Cuidado com o BDUF
Entre os princípios ágeis, tentamos sempre que possível evitar o BDUF (Big Design Up Front). Às vezes, querendo evitar o acúmulo de dívida técnica, tentamos antecipar algum esforço técnico, por exemplo, criando um framework quando ele ainda não se faz necessário. Isso é BDUF! A não criação do framework só será considerado dívida técnica se ele já fosse verdadeiramente útil no presente.
Melhoria Contínua
Finalmente, toda vez que houver um acúmulo de dívida técnica, ou que ela tenha sido identificada apenas posteriormente (algo muito comum), isso deve ser discutido na Retrospectiva.
Nessa discussão, tente explorar qual é a causa raíz. Ela pode estar em diferentes contextos: numa falta de conhecimento, numa pressão para que o time tenha um ritmo insustentável, etc. Somente assim estaremos fazendo um esforço concreto para que a dívida técnica seja mínima em longo prazo.