O que uma avaliação de dívida técnica mede?
Ward Cunningham criou a metáfora da dívida técnica no seu relatório de experiência apresentado na OOPSLA em 1992, onde escreveu que "entregar código pela primeira vez é como contrair uma dívida". Um pouco de dívida pode acelerar o trabalho. O problema começa quando ela não é paga, e cada hora gasta contornando código que não está bem certo vira juros. Ferramentas de análise medem o código. Esta avaliação mede aquilo com que a equipe convive: se vocês conseguem enxergar a dívida, o quanto ela atrasa as entregas, como estão a saúde do código e dos sistemas e se vocês estão quitando essa dívida. Cada pessoa avalia as afirmações individualmente. Depois, vocês levam as notas mais baixas para uma retrospectiva e decidem juntos o que corrigir primeiro.
Dimensões
Visibilidade
Se a equipe sabe onde está a sua dívida e a trata como trabalho de verdade.
Pontos críticos conhecidos
Sabemos quais partes do nosso sistema concentram mais dívida.
Registrada com o restante do trabalho
A dívida é registrada no mesmo backlog que as funcionalidades e os bugs.
Custo conhecido
Conseguimos explicar quanto nossas maiores dívidas nos custam em tempo ou em risco.
Impacto nas entregas
O quanto a dívida atrasa o trabalho que a equipe está tentando entregar.
Velocidade das funcionalidades
A dívida raramente atrasa as funcionalidades que estamos desenvolvendo.
Mudanças seguras
Alterar uma parte do nosso sistema raramente quebra outra parte sem relação.
Builds rápidos e confiáveis
Nossos builds e testes são rápidos e confiáveis.
Saúde do código e dos sistemas
O quanto é fácil trabalhar hoje com o código, os sistemas e as dependências.
Fácil de alterar
A maior parte do nosso código é fácil de entender e de alterar.
Dependências atualizadas
Nossas dependências e plataformas estão razoavelmente atualizadas.
Testes que permitem refatorar
Nossos testes nos dão confiança para refatorar.
Quitação da dívida
Se a equipe avança de forma constante e combinada na redução da dívida.
Tempo reservado
Reservamos tempo regularmente para quitar dívida.
Dívida intencional registrada
Quando assumimos uma dívida de propósito, nós a registramos com um plano para quitá-la.
Prioridades compartilhadas
Produto e engenharia estão de acordo sobre como dividir o tempo entre funcionalidades e dívida.
Quando utilizar essa avaliação de saúde
- Quando as funcionalidades demoram mais do que deveriam e a equipe sempre aponta para o código.
- Antes do planejamento trimestral ou do roadmap, para combinar quanto tempo será dedicado a quitar dívida.
- Depois de um grande esforço ou de um prazo apertado, para registrar os atalhos tomados antes que sejam esquecidos.
Dicas e truques
- Comece pelo grupo com a nota mais baixa. Pouca visibilidade significa que vocês precisam de uma lista de dívidas antes de qualquer outra coisa. Muita visibilidade com pouca quitação indica um problema de planejamento, não de código.
- Traga o gerente de produto para a discussão, mesmo que só os engenheiros façam a avaliação. A divisão do tempo entre funcionalidades e dívida é uma decisão compartilhada.
- Combine as notas com dados que vocês já têm, como tempo de build, quantidade de testes instáveis ou causas de incidentes. A avaliação mostra onde dói; os dados mostram quanto.
- Aplique junto com a Autoavaliação de Métricas DORA, a Avaliação de Maturidade DevOps ou o Modelo de Maturidade de Excelência em Engenharia para ver como a dívida se relaciona com as entregas e as práticas de engenharia.
- Repita a cada trimestre. Uma nota em alta nas afirmações sobre quitação da dívida é o primeiro sinal de que o plano está funcionando.
Perguntas frequentes
Como medir a dívida técnica?
Quais são os quatro tipos de dívida técnica?
Quanto tempo devemos dedicar à dívida técnica?
Como explicar a dívida técnica para gerentes de produto?
Qual é um exemplo de dívida técnica?
Quem criou o termo dívida técnica?
Based on Ward Cunningham, 'The WyCash Portfolio Management System,' OOPSLA '92 Experience Report (1992).