Quando uma empresa quer crescer depressa, há uma grande tentação para resolver as solicitações dos consumidores ou dos colaboradores o mais rapidamente possível. Contudo, as soluções rápidas resolvem os problemas imediatos e não têm em conta o impacto dessas soluções a médio e longo prazo.
É neste contexto que surge a dívida técnica. Quando uma empresa decide construir ou investir em software ou hardware para obter resultados a curto prazo, sem considerar as implicações e custos que poderão ocorrer a longo prazo.
Os motivos que justificam a existência de uma dívida técnica são fáceis de enumerar. Por exemplo, quando se inicia um projeto de software com uma equipa com um nível de competência inferior. Embora esta escolha tenha um custo de implementação menor, pode também ter um impacto negativo na escolha da arquitetura, das tecnologias a utilizar e na qualidade final da programação, o que pode implicar custos adicionais na manutenção e evolução da solução.
O valor não investido numa equipa mais competente corresponde ao valor da dívida técnica e os custos acrescidos de manutenção e evolução da solução correspondem ao pagamento de juros sobre essa mesma dívida.
A dívida técnica é tão mais alta quanto pior for o desempenho da aplicação ou maior o número de erros encontrados. Acresce a estes dois fatores os custos elevados de manutenção do sistema. No limite, o aumento destes custos pode ultrapassar o benefício obtido pela organização, levando-a abandonar a solução e a investir prematuramente numa solução alternativa.
Como se classifica a dívida técnica?
Existem dois tipos principais de dívida técnica: a dívida incorrida por decisão estratégica e a dívida incorrida de forma inconsciente.
No primeiro caso, aceita-se a existência de dívida técnica por decisões de time-to-market, libertação de capital para outras atividades de maior valor acrescentado ou mesmo deferimento no tempo de necessidades de capital. Este tipo de dívida caracteriza-se pela intencionalidade e consciência da sua adoção; sendo uma decisão consciente de gestão, incorrer neste tipo de dívida não é só por si mau, pressupondo-se que se avaliaram outras opções e se decidiu avançar com a mais vantajosa, dadas as circunstâncias.
No segundo caso, a dívida é gerada de forma não consciente. A escolha de uma equipa de projeto inexperiente ou de fraca competência, a adoção de uma metodologia de projeto desadequada ou a falta de mecanismos de controlo de qualidade contribuem de forma significativa para o aumento da dívida técnica de uma forma pouco visível.
Ferramentas para ajudar a analisar a dívida técnica
Existem várias ferramentas que ajudam a determinar o valor da dívida técnica. Uma das práticas mais correntes é a análise do código que compõe um sistema ou aplicação e, a partir dessa análise, detetar problemas estruturais ou más práticas de codificação.
Com base no número de problemas identificados, a sua classificação (mais ou menos grave) e o tempo necessário para a resolução de cada problema é possível medir ou estimar um valor de dívida técnica.
Nestas ferramentas, a dívida técnica é calculada com base em três variáveis: o número de problemas detetados, o tempo necessário estimado para resolver cada problema e o custo por hora de trabalho. O aparecimento de ferramentas que permitem quantificar a dívida técnica veio permitir às organizações alargar a aplicação do conceito e começar a utilizá-lo na sua gestão.
Como lidar com a dívida técnica?
Em primeiro lugar é importante que cada organização tenha como prioridade a redução da dívida técnica, porque esta não se autocorrige e, normalmente, até se agrava com o tempo. Se as organizações definirem como objetivo minimizar a dívida técnica haverá maior equilíbrio entre, por exemplo, a qualidade de uma aplicação e o seu tempo de implementação.
A dívida técnica deve ser gerida tendo em conta dois fatores: a qualidade do produto e o tempo que temos disponível para incluir uma nova funcionalidade ou lançá-lo no mercado. E cada empresa terá a sua própria interpretação do que é esse equilíbrio.
Uma das formas de lidar com a dívida técnica é definir claramente o que é o “produto final desejado”, ou seja, clarificar a relação entre a dívida técnica permitida e a qualidade do produto. Assim, quando se estabelecem alterações ou novas funcionalidades para o produto a equipa envolvida sabe qual é a qualidade mínima esperada. No caso de desenvolvimento de software, pode ser definido um processo de revisão de código que ajuda a analisar a sua qualidade.
Por vezes, assumir a dívida técnica pode ser a estratégia mais confortável, mas é importante que, para os projetos a longo prazo, a dívida técnica seja aceite e gerida de forma sustentável. É que a dívida técnica não é apenas uma questão técnica, é acima de tudo uma questão de negócio.