Tech Debt Quadrant: categorizando dívida para gerenciar melhor
1. O que é Tech Debt e por que um Quadrante?
Dívida técnica (Tech Debt) é uma metáfora financeira criada por Ward Cunningham para descrever o custo futuro de decisões de desenvolvimento que priorizam velocidade sobre qualidade. Assim como uma dívida financeira, a dívida técnica acumula "juros" — na forma de maior tempo de manutenção, bugs frequentes e dificuldade de evolução.
No entanto, nem toda dívida técnica é igual. Categorizar a dívida apenas como "código ruim" é simplista e impede uma gestão eficaz. O modelo de quadrantes, inspirado nas ideias de Martin Fowler e Steve McConnell, oferece uma estrutura para classificar a dívida em dois eixos: Intencional vs. Não Intencional e Prudente vs. Imprudente.
2. Os Dois Eixos do Quadrante: Intencional vs. Não Intencional
O primeiro eixo distingue a origem da dívida:
-
Dívida Intencional: Decisões conscientes tomadas pela equipe. Exemplos incluem pular testes para cumprir um prazo de MVP, usar uma biblioteca temporária para prototipar rapidamente, ou adiar uma refatoração para entregar uma feature crítica.
-
Dívida Não Intencional: Surge sem decisão explícita. Pode ser resultado de código legado herdado, falta de conhecimento técnico da equipe, má arquitetura inicial, ou simplesmente evolução natural do sistema sem documentação adequada.
Para identificar a natureza, pergunte: "Essa dívida foi assumida sabendo que existia?" Se sim, é intencional. Caso contrário, é não intencional.
3. Os Dois Eixos do Quadrante: Prudente vs. Imprudente
O segundo eixo avalia a gestão da dívida:
-
Dívida Prudente: Assumida com um plano claro de pagamento. Existe um registro da dívida, uma data prevista para refatoração, e o time tem ciência dos riscos. É como um empréstimo com parcelas definidas.
-
Dívida Imprudente: Assumida sem estratégia de mitigação. Não há plano de pagamento, a dívida não é documentada, e o time age como se "vamos resolver depois" fosse suficiente. Os juros compostos são a consequência inevitável.
4. Os Quatro Quadrantes na Prática
A combinação dos eixos gera quatro quadrantes:
Quadrante 1 (Intencional + Prudente): Dívida planejada e gerenciável. Exemplo: um shortcut documentado com data de refatoração agendada.
# Exemplo de dívida documentada no código
# TODO: Refatorar este módulo para usar cache (data: 2025-03-15)
# Motivo: Prazo apertado para release 2.0
# Responsável: Maria S.
Quadrante 2 (Intencional + Imprudente): Dívida assumida sem plano. Exemplo: "Vamos usar essa biblioteca obsoleta agora e trocamos depois" — sem data, sem responsável.
# Dívida não documentada - problema real
# Função copiada de um projeto antigo sem testes
# Ninguém sabe por que está aqui
Quadrante 3 (Não Intencional + Prudente): Dívida descoberta com ação corretiva. Exemplo: bug de design identificado durante code review, com plano de correção imediato.
# Descoberta durante revisão: padrão Singleton inadequado
# Ação: Refatorar para injeção de dependência (sprint atual)
Quadrante 4 (Não Intencional + Imprudente): Dívida ignorada ou escondida. Exemplo: código espaguete sem owner, sem documentação, sem testes.
# Módulo crítico de pagamento - ninguém entende o fluxo completo
# Última modificação: 2022 - sem testes unitários
# Risco: alto - impacto financeiro direto
5. Ferramentas e Métricas para Mapear sua Tech Debt
Ferramentas de análise estática ajudam a quantificar a dívida:
- SonarQube: Fornece "Tech Debt Ratio" — tempo estimado para corrigir problemas.
- ESLint com regras de complexidade: Identifica código de alta complexidade ciclomática.
- cobertura de testes: Módulos com baixa cobertura são candidatos naturais a dívida.
Métricas práticas para cada quadrante:
Quadrante 1: Dívida documentada (ex: 5 itens com prazo)
Quadrante 2: Dívida sem owner (ex: 12 itens sem responsável)
Quadrante 3: Bugs recorrentes por módulo (ex: módulo X tem 20 bugs/trimestre)
Quadrante 4: Código sem testes (ex: 40% do core sem cobertura)
Para criar um quadrante visual, use um board (Jira, Trello) com colunas para cada quadrante e cards representando cada item de dívida. Adicione labels como "intencional", "prudente" para filtragem.
6. Estratégias de Gerenciamento por Quadrante
Quadrante 1 (Intencional + Prudente):
- Priorize em sprints de refatoração com ROI calculado.
- Exemplo: "Refatorar módulo X economizará 20h/mês em manutenção."
Quadrante 2 (Intencional + Imprudente):
- Converta em backlog item com prazo e responsável.
- Exemplo: "Trocar biblioteca Y até o final do trimestre."
Quadrante 3 (Não Intencional + Prudente):
- Invista em ações preventivas: code review rigoroso, testes automatizados.
- Exemplo: "Adicionar teste de integração no módulo Z antes da próxima release."
Quadrante 4 (Não Intencional + Imprudente):
- Intervenção imediata. Use pair programming para reescrita controlada.
- Exemplo: "Sprint de 2 semanas para reescrever o módulo de pagamento."
7. Comunicação e Cultura: Como Falar de Dívida com Stakeholders
Traduza dívida técnica em impacto de negócio:
Impacto atual:
- Velocidade: cada nova feature no módulo X leva 3x mais tempo
- Bugs: 40% dos bugs de produção vêm do módulo Y
- Custo: estimativa de 200h/trimestre em retrabalho
Cenário após pagamento da dívida:
- Redução de 60% no tempo de desenvolvimento
- Queda de 80% nos bugs
- ROI em 2 meses
Apresente o quadrante visual para product owners e gestores em reuniões mensais de "Tech Debt Review". Mostre como a dívida está distribuída e quais quadrantes exigem atenção imediata.
8. Manutenção Contínua: Evitando o Acúmulo
Práticas de prevenção:
- Definição de Pronto (DoD): Inclua critérios como "dívida técnica documentada" e "testes com cobertura mínima de 80%".
- Monitoramento em cada sprint: Ao final de cada sprint, identifique novas dívidas e classifique-as nos quadrantes.
- Ciclo de vida: Da identificação ao pagamento. Exemplo: "Tech Debt Sprint" trimestral dedicado exclusivamente a pagar dívidas dos quadrantes 2 e 4.
Exemplo de ciclo:
Sprint 1-3: Identificação e classificação
Sprint 4: Tech Debt Sprint (foco em Quadrante 4)
Sprint 5-6: Refatorações planejadas (Quadrante 1 e 3)
Com o quadrante, a dívida técnica deixa de ser um problema abstrato e se torna um ativo gerenciável. A chave está em documentar, classificar e agir — antes que os juros se tornem impagáveis.
Referências
- Tech Debt Quadrant — Martin Fowler — Artigo seminal que define o modelo de quadrantes para dívida técnica.
- Managing Technical Debt — Steve McConnell — Guia prático sobre como gerenciar dívida técnica em projetos de software.
- SonarQube Documentation: Technical Debt — Documentação oficial sobre como o SonarQube calcula e quantifica dívida técnica.
- Technical Debt in Agile — Scrum.org — Artigo sobre como lidar com dívida técnica em times Scrum.
- ESLint Rules for Code Complexity — Documentação oficial de regras do ESLint para identificar código complexo, indicador de dívida técnica.