A expressão “tech debits” ou dívidas técnicas foi utilizada pela primeira vez por Ward Cunningham criando a analogia de que as vezes podemos fazer dívidas, como por exemplo tomar algum dinheiro emprestado do banco, o que acumula juros e faz a dívida naturalmente crescer, mas que em algum momento precisaremos nos planejar pagá-la.

Pra quem nunca teve contato com essa expressão, Martin Fowler escreveu esse post em 2003.

Toda dívida gera juros (vide dívida técnica e juros composto) e existem algumas formas de lidar com a dívida. Aqui vou listar algumas delas.

Parking Lot

Reserve uma área no quadro físico com uma quantidade limitada de espaços. Cada nova dívida deve ser registrada em um postit e colocado em um destes espaços. Quando acabarem os espaços o time não poderá fazer novas dívidas. O time precisa resolver algum dos itens antes de criar novas dívidas.

parking lot

Lane para dívidas

Crie uma nova lane no quadro físico do time. Apenas postits de dívidas técnicas devem caminhar por esta lane. Estimule o time a sempre ter pelo menos um item caminhando nesta lane.

Esta abordagem torna fácil de perceber visualmente se o time está trabalhando em suas dívidas técnicas.

Esta forma ajuda a evitar que as dívidas se acumulem, porém o time pode acabar trabalhando em dívidas que não são tão valiosas.

Sprint de reforço

sprint-reforco

Sprint de reforço, ou Hardening Sprint, é uma sprint onde nenhuma feature nova é desenvolvida. O time trabalha apenas em melhorias no software como por exemplo refatoração, testes automatizados e melhorias de performance. O post “Do We Need a Hardening Sprint? na Scrum Alliance aborda um pouco sobre este tópico.

Eu diria que uma sprint de reforço é como usar o 13º pra pagar as dívidas, você sabe que as dívidas estão lá, mas você espera uma oportunidade e gasta uma boa grana para quitá-las.

Limite de crédito

Imagine que o time tem um cartão de crédito com limite definido. Cada nova dívida técnica é uma compra neste cartão. Sempre que tiver uma oportunidade, “sobrar uma grana”, o time pode quitar uma parte desta dívida, como se adiantasse o valor do cartão de crédito. Se o time extrapolar o limite do cartão de crédito ele não poderá mais fazer compras. Neste caso o time precisa pagar o valor mínimo da fatura para voltar a usar o cartão de crédito.pagamento-minimo

Realizar apenas o pagamento mínimo vai deixar o time eternamente pagando juros, ou seja, para cada nova feature vários ajustes serão necessários, retardando o time.

Assim como no cartão de crédito que precisa ser pago mensalmente, o time pode definir uma periodicidade para zerar a dívida.

Trabalhar com valores em dinheiro ajuda a manter a analogia clara. O time deve definir um valor em dinheiro para cada compra, um valor de limite para o cartão e quantos % do limite é o pagamento mínimo da fatura.

Esta forma dá ao time flexibilidade para escolher pagar logo algumas das dívidas usando a capacidade que tem disponível e ainda o mantém constantemente preocupado em não estourar o limite, evitando que as dívidas se acumulem.

Conclusão

Fazer dívidas pode ser uma opção para atingir um objetivo, mas é importante manter a saúde financeira. Pagar esta dívida recorrentemente garante juros menores. Mas não acompanhar as dívidas técnicas pode significar quanto vai pagar de juros ou a morte do seu software.

pagamento-recorrente
E você, está liquidando suas dívidas técnicas ou vai decretar falência?