Tech Debt
O Tech Debt (ou Dívida Técnica) refere-se ao custo adicional do trabalho futuro que surge quando soluções técnicas mais fáceis, rápidas ou subótimas são implementadas em vez de soluções mais robustas e sustentáveis. A metáfora de "dívida" descreve a necessidade de "pagar com juros" no futuro ao corrigir ou melhorar essas soluções provisórias.
Origem e Aplicação
O termo foi cunhado por Ward Cunningham nos anos 1990, ao comparar decisões técnicas menos ideais com a ideia de contrair dívidas financeiras.
Assim como uma dívida monetária pode ser uma escolha estratégica para alcançar um objetivo rápido, o mesmo acontece no desenvolvimento de software: uma solução rápida pode ser implementada para atender prazos imediatos, mas precisará de ser ajustada no futuro.
O Tech Debt é aplicado em qualquer contexto onde compromissos técnicos são feitos devido a:
- Pressão por prazos. 
- Falta de recursos (tempo, equipa, orçamento). 
- Falta de conhecimento técnico na altura da implementação. 
- Mudanças nos requisitos do produto ou tecnologia. 
Responsáveis pelo Tech Debt
Embora a responsabilidade do Tech Debt recaia, principalmente, sobre a equipa técnica (programadores e arquitectos), é compartilhado por todos os stakeholders, que incluem:
- Programadores, que implementam o código. 
- Gestores de Produto, que prioritizam as entregas rápidas sobre soluções técnicas ideais. 
- Gestores de Projeto, que definem prazos e recursos. 
- Equipa de QA, que pode identificar áreas da dívida técnica em testes. 
Ciclo de Vida do Tech Debt
- Identificação - Surge durante o desenvolvimento, quando uma solução rápida é escolhida. 
- Também pode ser identificado em revisões de código, auditorias técnicas ou testes de qualidade. 
 
- Documentação - Regista-se como dívida técnica em sistemas como backlogs (JIRA, Trello, etc.). 
- Deve incluir: - Descrição do problema. 
- Consequências de não resolver. 
- Prioridade e impacto no sistema. 
 
 
- Priorização - É analisado junto ao restante do trabalho da equipa. 
- A dívida técnica de alto impacto deve ser priorizada, enquanto dívidas de impacto menor podem ser adiadas. 
 
- Resolução - Pode envolver refatoração de código, reescrita de partes do sistema ou melhorias no design técnico. 
- Deve ser tratado como parte do trabalho técnico regular. 
 
- Monitorização - Após a resolução, deve-se acompanhar os efeitos para garantir que a dívida não se acumule novamente. 
 
O que acontece ao dizer "é um Tech Debt"?
Quando alguém afirma que uma decisão ou problema é "Tech Debt", por norma acontece o seguinte:
- Discussão: Avalia-se se realmente é dívida técnica ou outra questão, como erro de implementação. 
- Registo: É adicionado ao backlog técnico. 
- Impacto: Avaliam-se os impactos no sistema e nos utilizadores. 
- Planeamento: Define-se quando e como será resolvido, dependendo das prioridades da equipa. 
Mais-Valias do Tech Debt
- Entrega Rápida: Permite que equipas alcancem objetivos de curto prazo, como lançar um produto no mercado rapidamente. 
- Flexibilidade: Dá espaço para ajustamentos quando o futuro do projeto é incerto. 
- Evolução do Produto: Em certos casos, decisões rápidas ajudam a validar ideias antes de investir em soluções mais elaboradas. 
Utilizações do Tech Debt
- Prototipagem e MVPs (Minimum Viable Products): Dívidas técnicas são comuns em versões iniciais de produtos. 
- Escalabilidade Temporária: Implementações rápidas para suportar picos de tráfego ou requisitos inesperados. 
Desafios do Tech Debt
- Acumulação Excessiva - Dívidas técnicas negligenciadas podem tornar-se dívidas impagáveis, levando à falência técnica do projeto. 
 
- Impacto na Manutenção - Código de baixa qualidade dificulta a manutenção e evolução do sistema. 
 
- Desmotivação da Equipa - Trabalhar com sistemas repletos de dívidas pode desmotivar programadores e QAa. 
 
Como um QA pode contribuir na Gestão do Tech Debt?
- Identificação Proativa - Durante os testes, o QA pode detetar áreas problemáticas que indicam dívidas técnicas. 
 
- Priorizar Riscos - Avaliar como o Tech Debt impacta os testes e a qualidade do software, ajudando na priorização da resolução. 
 
- Automação - Criar testes automatizados para monitorizar o comportamento de áreas com dívidas técnicas até que sejam resolvidas. 
 
O Tech Debt é uma realidade inevitável no desenvolvimento de software, mas a sua gestão eficaz é crucial para garantir a qualidade e sustentabilidade dos sistemas a longo prazo.
Com uma abordagem colaborativa, ferramentas adequadas e um foco constante na sua resolução, as equipas podem usar o Tech Debt de forma estratégica, aproveitando as suas vantagens sem comprometer o futuro do projeto.

