O que são e “Dívidas Técnicas”? Por que aceitar? Por que pagar?

Neste post, apresento o conceito de “Dívida Técnica” (não é débito, é dívida). Explico por que nem sempre elas são ruins (aliás, são necessárias). Por fim, justifico o por que é importante pagar dívidas técnicas com argumentos que até seu gerente irá entender.

O que são Dívidas Técnicas?

Em minhas consultorias, sempre acabo abordando o conceito de dívida técnica. Eis uma das definições que mais me agrada:

Dívida Técnica é o gap entre a implementação atual de uma aplicação (também design e arquitetura) e aquela que seria necessária para que a aplicação continue entregando valor. Podemos medir a quantidade de dívida técnica pelo esforço para “fechar este gap”. – Michael Keeling

Por que aceitar?

Gosto da palavra “dívida” porque ela nos permite uma boa analogia:

Todos, eventualmente, contraímos dívidas. Para muitas pessoas (eu, inclusive), esta é uma das alternativas viáveis para que possamos fazer grandes aquisições (Exemplo: casa, carro, etc). Poderíamos, claro, guardar dinheiro e comprar sem dívidas – mas, isso tomaria tempo e as vezes não estamos dispostos a esperar.

Da mesma forma que ocorre na analogia, dívidas técnicas não são, necessariamente, ruins. Afinal, elas, muitas vezes, são a única alternativa disponível para que possamos lançar um software em menos tempo (da mesma forma que na analogia, fazer tudo certo é possível, mas custoso).

Outro ponto de reflexão, bem documentado no execelente livro Release It! (que recebeu, aliás, uma segunda edição [descobri agora]), em situações onde temos o sistema fica “fora do ar”, a prioridade é “levantar o sistema” e depois arrumar a bagunça necessária para isso. Essa bagunça é uma “dívida técnica”.

Por que pagar?

Voltemos a analogia:

O que vai acontecer se você comprar algo, contraindo uma dívida, e não a pagar? Fatos: você terá de pagar juros (quanto mais tempo demorar para pagar, mais cara será a dívida); se você não pagar, enfrentará restrições (ficando negativado); com o tempo, além das restrições, provavelmente perderá a posse do bem que gerou a dívida.

A mesma coisa ocorre com dívidas técnicas. Quanto mais tempo demorar para pagar, mais difícil será (mais caro, mesmo); Se não pagar a dívida, terá dificuldade em continuar mantendo o sistema gerando valor (mais difícil adicionar features, mais difícil manter o que está funcionando); Com o tempo, as restrições serão tão grandes que você não terá outra alternativa além de “jogar tudo fora” e começar do zero.

Concluindo

Dívidas técnicas não são necessariamente ruins. As vezes, elas são o meio para que você consiga cumprir prazos ou, até mesmo, resolver um incidente crítico. Entretanto, sempre que você contraí uma dívida técnica precisa pensar em um plano para pagar! Se não o fizer, com o tempo, seu trabalho irá parar de entregar valor e você terá a necessidade de começar tudo outra vez.

Muitos desenvolvedores alegam que não é escolha deles e sim do negócio contrair dívidas. Isso, provavelmente, é verdade na maioria dos casos. Afinal, a dívida boa é aquela que aceitamos para entregar valor em menos tempo. Cabe, entretanto, aos desenvolvedores, sinalizar a existência da dívida e garantir que exista orçamento para que esta seja paga antes que seja tarde demais.

PS: Release It! é um dos melhores livros que já tive a oportunidade de ler. É um dos preferidos do Ayende e um dos que mais me influenciou nos últimos anos. Leitura mais do que recomendada.

Capa: unsplash-logoRuth Enyedi

Compartilhe este insight:

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Mais insights para o seu negócio

Veja mais alguns estudos e reflexões que podem gerar alguns insights para o seu negócio:

Um de meus temas de estudo preferidos no campo de desenvolvimento é design patterns. Isso sempre me levou a refletir...
Mais preocupante que o posicionamento do presidente é sua falta de constância. Há dois dias, uma medida provisória proposta pelo...
Em todos esses anos tenho recebido relatos de desenvolvedores projetando sistemas com belas arquiteturas. Muitos deles tem levantado um bocado de questões...
  Recently, I asked what would be the execution result of the following code: using System.Threading.Tasks; using static System.Console; class...
No meu cotidiano, reconheço que, por mais estranho que pareça, comprometo muito do meu tempo ouvindo música ruim até que,...
In the previous post, I asked which function, in the following code, would fill the array with 1’s faster and...

Crie sua conta

Preencha os dados para iniciar o seu cadastro no plano anual do Clube de Estudos:

Crie sua conta

Preencha os dados para iniciar o seu cadastro no plano mensal do Clube de Estudos:

Mentoria em
Arquitetura de Software
com ênfase em IA

Aprenda a coordenar equipes de desenvolvimento, aplicar padrões e técnicas de arquitetura e aumentar sua produtividade criando sistemas inovadores com o suporte da IA.

× Precisa de ajuda?