Existe código que é bem testado, bem refatorado e escrito por último. Também existe código que é planejado para ser jogado fora em poucos dias. Entre esses dois extremos, existe um grande meio termo. O código na área intermediária é escrito com o objetivo de ser melhorado depois, o que nunca acontece.
William Pietri analisou o custo associado ao codigo do ponto de vista de desenvolvimento e de negócio. De acordo com Willian, código pode ser categorizado de 3 formas.
- Temporário - Código que é escrito com o planejamento de ser jogado fora.
- Sustentável - Código construido por último, como por exemplo usando TDD. Bem Orientado a Objeto, que faz o que o cliente quer. Tem uma forte suite de testes e não é dificil de evoluir/manter.
- Mediano - O meio termo. Quando é dificil evoluir/manter um software como por exemplo na tentativa de resolver um bug é causado outros 3 no projeto.
William comenta sobre como é a visão de desenvolvedores e gerentes/clientes quanto ao custo de um sofware. A seguinte comparação é feita:
Gerentes | Desenvolvedor | |
Temporario | baixo | baixo |
Sustentável | alto | medio |
Mediano | medio | alto |
Devido a esse pensamento, que clientes ficam contentes com o código mediano, que teoricamente tem um custo baixo e pode adicionar algum valor ao problema que está sendo resolvido. E esse é grande erro que boa parte das empresas cometem. De acordo com Willian um melhor jeito para comparar custos de software é pensando no curto e longo prazo do desenvolvimento.
De acordo com ele.
custos do curto prazo | custos do longo prazo | |
Temporário | baixo | baixo |
Sustentável | alto | medio |
Mediano | medio | alto |
O código mal feito no final, custo muito mais para o cliente. Já o código sustentável pode custar mais no começo mas no depois de um tempo tem seus custos diminuidos e muitas vezes estabilizados.
Com toda certeza, isso não é apenas ruim para os desenvolvedores. Isso é ruim para toda a empresa. Se os custos de uma empresa de software continuamente crescem, isso se transforma numa vantagem para os competidores que se preocupam mais com o jeito que eles produzem software.
Sobre as 3 categorias, Alex Chaffe mostra que em sua visão código Sustentável = testes + código mediano + refatoração.
Fazendo uma análise similar, Alberto Gutierrez sugere um mecanismo diferente para analisar o código. Ele pontua o código de A até F de acordo com a simplicidade e a extensibilidade do mesmo. A simplicidade é definida como a facilidade de se entender e de ler determinado código. Já a extensibilidade é a facilidade que uma nova funcionalidade pode ser adicionada em um código já existente. O intervalo A-F define os extremos entre um código Excelente e um código que precisa ser totalmente refeito.
A análise novamente da foco no fato de que o melhor código deve ser simples e extensível. Este, por sua vez, seria o código sustentável sugerido por Willian.
Então, como evitar que meu código fique no meio termo?
De acordo com William, a educação dos stakeholders sobre as implicações de longo prazo no tipo de código ajudaria os times a agregar valor ao negócio. Uma vez que as pessoas fossem educadas seria mais fácil distinguir um código sustentável para um que esteja no meio termo.
A maior parte dos projetos iguais que eu tenho visto possuem código mediano que são vendidos como sustentáveis. O que acontece é que ocorre muita programação no estilo cowboy com o intuito de salvar o dia, deixando um monte de código mediano para trás para que outras pessoas lidem com ele.