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.

 
Anterior
Anterior

Test Guild

Próximo
Próximo

Epic