Como determinar que “dívidas técnicas” pagar primeiro?

Elemar Júnior

Dívidas técnicas de naturezas similares podem ter impactos muito diferentes na produtividade dos times de desenvolvimento. Por isso, iniciativas ingênuas para “pagar” a maior quantidade de dívidas técnicas, sem critério claro de priorização, embora bem intencionadas, acabam não produzindo, muitas vezes, resultados perceptíveis na redução da complexidade.

As dívidas técnicas e a complexidade tem muito mais impacto nas partes do código que são alteradas com maior frequência. Trechos de código, mesmo mal escritos,  que não sofrem alterações frequentes ao longo do tempo estão “estáveis”. Refactoring nesses trechos de código acabam tendo pouco impacto para a redução dos custos e dos prazos. Além disso, aumentam consideravelmente as chances de novos bugs.

No gráfico acima, podemos ver que há clara concentração de commits em uma parcela muito pequena de arquivos no projeto do servidor do RavenDB, por exemplo. Um arquivo, apenas, recebeu 3% de todos os commits. Mais de 50% dos commits envolveu menos de 10% de toda a base de código. Parece evidente que as dívidas técnicas presentes nesses arquivos acabariam tendo impactos muito mais altos para a produtividade do time. Também parece lógico que o código desses arquivos fosse aquele com maior cobertura por testes automatizados.

A distribuição de commits encontrada na base de código do servidor do RavenDB é comum a quase comum a quase todas as bases de código, segundo Adam Tornhill (que tem influenciado muitas das nossas ideias sobre como tratar dívidas técnicas). Logo, os mesmos insights são aplicáveis a quase todos os projetos.

Os “juros” das dívidas técnicas e da complexidade ficam ainda mais evidentes nas partes do código mantidas por muitas pessoas. Afinal, código ruim, alterado frequentemente por muita gente fica ainda mais difícil de entender e, consequentemente, impacta muito a produtividade.

Mais uma vez, é fácil verificar que poucos arquivos são alterados por muitas pessoas. Geralmente, inclusive, há uma correlação de proporcionalidade entre número de commits que um arquivo recebe e o número de programadores trabalhando nesse arquivo.

Dívidas técnicas são ruins. Porém, algumas são piores do que outras. Nesses tempos em que temos prazos cada vez mais curtos e pressão cada vez maior para entregar mais features, temos que ser inteligentes na seleção de que trabalho gera mais resultado.

Em resumo

O problema
Dívidas técnicas e complexidade aumentam, com o tempo, o lead time das entregas para os times de negócio. Por isso, são comum as iniciativas para combate-las. Infelizmente, entretanto, muitas vezes os benefícios esperados acabam não aparecendo.
O insight
Dívidas técnicas de naturezas similares podem causar impactos muito diferentes. Na prática, deveríamos priorizar as dívidas técnicas em trechos de código alterados com mais frequência e mantidos por mais pessoas. Afinal, essas são as dívidas técnicas com mais potencial de gerar mais impacto no lead time.
Os benefícios
O critério de priorização proposto direciona esforços e investimentos para iniciativas de melhoras de código entregando benefício real para o negócio.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
2 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Jeferson Viana Perito
Jeferson Viana Perito
3 anos atrás

eu fiz uma relação code churn (alterações no arquivo) e complexidade cognitiva (https://www.sonarsource.com/resources/white-papers/cognitive-complexity.html) para acharmos um note em qual arquivos devemos priorizar a refatoração:

Elemar Júnior
Elemar Júnior
3 anos atrás

Excelente abordagem. 🙂

AUTOR

Elemar Júnior
Fundador e CEO da EximiaCo atua como tech trusted advisor ajudando empresas e profissionais a gerar mais resultados através da tecnologia.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Arquitetura de Dados

Insights de um DBA na análise de um plano de execução

Especialista em performance de Bancos de Dados de larga escala
Arquitetura de Software

Estratégias para modernização do legado

Desenvolvedor .NET/NodeJs e especialista em Kafka com experiência em startups e grandes empresas
Infraestrutura e Nuvem

Migração para a nuvem, mais do que mudança tecnológica, implica em mudança da cultura organizacional

Engenheiro de nuvem, arquiteto de software e especialista em Containers e Devops

Acesse nossos canais

Simplificamos, potencializamos e aceleramos resultados usando a tecnologia do jeito certo

EximiaCo 2022 – Todos os direitos reservados

2
0
Queremos saber a sua opinião, deixe seu comentáriox
()
x

Como determinar que “dívidas técnicas” pagar primeiro?

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?