Como um software se torna legado

Software funcional, porém mal implementado, é uma ameaça para os negócios

É possível ter software funcionando, atendendo plenamente as demandas do negócio, mas extremamente mal implementado. Com o tempo, se nada for feito para resolver esses problemas de implementação, esse tipo de software fica cada vez mais caro de manter até, eventualmente, se tornar inviável.

O maior problema de software mal feito, porém funcional, é que ele é uma ameaça silenciosa para o negócio. As “dores” decorrentes não são sentidas de uma única vez, mas ao longo do tempo, em “quedas” inesperadas, vazamentos de dados, além de outras instabilidades.

A má implementação de software ocorre, geralmente, em decorrência de deficiências de qualificação do time ou pela necessidade de cumprir, rotineiramente, prazos de entrega mais curtos que o ideal. A má implementação pode ser entendida como o acúmulo de “dívidas técnicas” ao longo do tempo.

Uma dívida técnica, em analogia com uma dívida financeira, quando adquirida, costuma trazer algum tipo de alívio imediato, geralmente viabilizando o cumprimento de acordos. Entretanto, ainda como uma dívida financeira, acaba se convertendo em problema em decorrência, principalmente, dos “juros” associados.

Os “juros” das dívidas técnicas são percebidos fora das áreas técnicas pelo aumento consistente dos custos de desenvolvimento para novas features. Ou seja, com o tempo, os prazos necessários para implementar algo novo vão ficando maiores com impacto marcante no velocity. Outro impacto percebido fora das áreas técnicas é o aumento na incidência de bugs que, para serem corrigidos, acabam também impactando negativamente no velocity.

Eventualmente, os “juros” de dívidas técnicas antigas começam a forçar com que novas dívidas sejam formadas. Isso acontece, novamente, pela necessidade de cumprir prazos inviáveis ou pela incapacidade técnica do time de lidar adequadamente com o código ruim.

Em um determinado momento, em cenários extremos mas não raros, a capacidade de pagar dívidas técnicas do time se torna menor do que a necessidade recorrente de adquirir novas dívidas. Nesse momento, um software, mesmo atendendo plenamente as demandas do negócio até aquele ponto, converte-se em “legado”.

A mitigação dos problemas das dívidas técnicas tem duas soluções aparentes: 1) capacitação dos times técnicos e 2) adoção de um modelo de trabalho “puxado” e não “empurrado”, como o proposto pela maioria das metodologias ágeis. Em cenários onde dívidas técnicas sejam realmente necessárias (acredite, esses cenários existem), é importante que, junto com a dívida, seja elaborado um plano para “pagamento”.

Em Resumo
  • O problema

    A falta de capacidade dos times técnicos ou a pressão por entregas em prazos menores que os adequados, fazem com que software seja construído acumulando dívidas técnicas. Embora funcionais, eles se tornam inviáveis no longo prazo colocando o negócio em risco.
  • O insight

    Além de investir na capacitação do time técnico, é fundamental que o modelo de trabalho nas áreas técnicas seja “puxado” e não “empurrado”. Além disso, caso seja necessário contrair uma dívida técnica, é necessário que, junto, seja elaborado um plano de "pagamento”
  • Os benefícios

    Software bem implementado, sem dívidas técnicas, permite grande velocity e pode, em tempos de economia digital, fazer diferença na competição.

Mais posts da série Como um software se torna legado

2 Comentários
  1. Ricardo Serafine

    Faço parte de uma equipe de desenvolvimento que está migrando um grande sistema para um cliente. O sistema é antigo, desenvolvido com programação estruturada e sendo migrado para .Net Core levando todos os problemas que existem no legado, sem testes, sem um bom levantamento de requisitos e com prazos apertados estimados no chute.

    Quais argumentos que um desenvolvedor pode utilizar para convencer a área estratégica que este não é o melhor caminho, que o barato/rápido de hoje vai sair caro amanhã?

    1. Elemar Júnior

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *