So conserte as janelas quebradas
Thiago Brito
11 de Março de 2019 3 minutos de leitura

Como um código ruim pode levar o seu projeto ao caos e como mudar a cultura de um time apenas consertando e implementando boas práticas de desenvolvimento?

Existe uma teoria que eu gostaria de falar hoje chamada “Broken Window Theory”. Ela conta sobre um aspecto psicológico que foi identificado na década de 80 e popularizado em Nova York que, após identificado, foi utilizado para reduzir a criminalidade na região.

A teoria, em resumo, diz que deixar uma janela quebrada por um tempo significativo faz com que os moradores tenham uma sensação de abandono e acabam inconscientemente não cuidando tanto quanto deveria com o patrimônio da cidade, com o tempo gerando caos e aumentando a criminalidade.

Um teste bem simples realizado na época foi deixar um carro parado na bastante tempo, algo em torno de 1 mês. O carro estava novo, sem qualquer tipo de dano, não estava amassado nem com qualquer tipo de problema. Neste caso, ninguém encostou nele.

Depois, foi quebrada uma janela deste mesmo carro e isso foi o suficiente para que ele fosse completamente destruído em pouco tempo, com outras janelas sendo quebradas, peças roubadas e a lataria pichada. Um vandalismo total.

Foi assim que a prefeitura de Nova York tomou a decisão de arrumar todas as janelas quebradas visíveis na cidade, remover carros velhos e abandonados das ruas e pintar áreas que sofreram qualquer tipo de pichação.

Esta foi uma das medidas que ajudaram significativamente a criminalidade ser reduzida. Pois trouxe a população um fator psicológico importante:

Em nível de comunidade, desordem e crime estão usualmente ligados, é quase causa e consequência. Psicólogos sociais e policiais em geral concordam que deixar uma janela quebrada em um prédio sem reparo por bastante tempo, todas as outras janelas em breve também serão quebradas. Uma vez que existem janelas quebradas, é um sinal de que ninguém se importa e quebrar uma nova janela tende a custar praticamente nada.

Aplicando a teoria no desenvolvimento de software

A partir do momento que você cria um software sem testes, sem um processo contínuo de refactoring, revisão de código ou o design não está muito bem definido fatalmente janelas ficarão quebradas no caminho.

Com isso, outros desenvolvedores que irão fazer uma alteração no projeto, de forma inconsciente ou não acabam seguindo os mesmos padrões: não criando testes, não fazendo refactorings muitas vezes óbvios e deixando bugs sem correção. Afinal, o código já está ruim… e se eu mexer e causar ainda mais problemas?

A melhor forma de você evitar que isso ocorra é investir um tempo para sempre manter seu código em ordem, com bons testes, com funções e classes fáceis de serem utilizadas e desacopladas e, sempre que o menor sinal de fumaça aparecer, ser resolvido rapidamente.

Desta forma, a tendência é que a velocidade de desenvolvimento e a entropia do seu código se mantenham estáveis ao longo do tempo.

E se o código já está com várias janelas quebradas, talvez seja o momento de reunir o time e conversar sobre as mudanças necessárias para resolver esta questão. O importante é começar isso o quanto antes, pois a tendência ao caos é enorme.

Seguem algumas opções ao identificar uma “janela quebrada”:

  • Avisar ao time sobre o que está acontecendo e criar tarefas para resolver esta questão o mais breve possível
  • Desativar a funcionalidade por um tempo até que a mesma esteja com este erro resolvido
  • Criar Unit Tests que quebrem até que o problema seja efetivamente resolvido
  • Comentar o código explicando o que está acontecendo, trazendo mais clareza e reduzindo o estrago da janela quebrada
  • Conversar com o time sobre o que está causando as janelas quebradas, a negligência é um dos fatores que mais aumenta a velocidade de levar o projeto ao caos
  • Sempre fique de olho na cultura do time, não deixe qualquer vandalismo acontecer no seu código impune
  • Quais janelas quebradas sabe que existem no seu código? Já está na hora de resolver isso rápido, antes que as coisas saiam do controle.