Sim, mas com muito cuidado!
Deixe-me esclarecer isso.
Você deve se esforçar para melhorar a habitabilidade do software. Se você olhar o código / equipe / negócio / projeto / gerenciamento e sua primeira resposta for tomar um banho, ele não será habitável. Se a sua primeira resposta for gritar sim! ... e depois reclamar quando você estiver fora do escritório, precisará tornar sua casa mais habitável. É um sentimento, e você saberá.
Dito isto, você está trabalhando em uma síntese muito complicada . Qualquer coisa que você faça provavelmente dará errado e provavelmente piorará as coisas, pelo menos a curto prazo, porque uma simples mudança tem ondulações. Então, primeiro, torne-se humilde, não quero dizer que sou um empurrão ou aceite que as coisas devem estar ruins; quero dizer, aceite o fato de que suas boas intenções vão afetá-lo violentamente.
O problema
Com a melhor das intenções, você pode achar que uma grande mudança precisa acontecer, e eu não discordo que essas situações existam, mas reserve um momento para pensar sobre isso. O sistema atual está funcionando, você e sua equipe estão produzindo código, talvez lento, talvez doloroso, mas está funcionando e todos vocês têm experiência em como fazer isso. Você sabe aproximadamente o que esperar; em resumo, você é um profissional nesse sistema.
Após a mudança radical, ninguém, exceto talvez o implementador, sabe o que esperar. Em resumo, todos foram redefinidos para um nível de neófito nesta parte do sistema. Isso não é bom. Os neófitos precisam aprender as novas regras que levam tempo. Nesse período, os neófitos estão cometendo erros porque não são praticados. Esses erros se tornam parte do sistema, com o qual você agora tem que conviver e não é tão perto agora.
Um caminho a seguir
Há momentos em que cortar, gravar e reconstruir é de longe o melhor que você pode fazer. É particularmente atraente se ninguém é praticado no sistema antigo, porque a única coisa que está sendo perdida é o conhecimento codificado. Se esse conhecimento é completamente incompreensível, então já está perdido, e recomeçar é a única opção. Por outro lado, se o método de codificação, ou como ele é usado, é problemático, mas está funcionando, esse conhecimento ainda é acessível, e talvez valha a pena manter, talvez não - Apenas não tome a decisão de ânimo leve.
A outra opção é trabalhar com o sistema para que todos tenham um quadro de referência, mas alterar pequenas partes do sistema para que todos na equipe estejam cientes ou, se não estiverem cientes da mudança, é fácil aviso e fácil de aprender. Essa é a base para as práticas chamadas Kaizen . Uma fórmula mais orientada para o desenvolvedor é apresentada na apresentação Shaving the Golden Yak, eu recomendo assistir e refletir sobre isso.
Portanto, encontre algo pequeno que possa ser mudado que melhore sua vida e, esperançosamente, o de alguns outros. Corrija ou melhore a situação. Isso lhe dará prática e experiência em colocar as mudanças em prática. Certifique-se de obter feedback: você poderia ter discutido melhor, se foi realmente útil, perturbou outra parte do sistema. Desenvolva sua percepção do que pode ser feito e como fazê-lo.
Agora, três coisas aconteceram:
- você melhorou o sistema,
- você obteve experiência em como mudar o sistema
- a equipe viu você mudar com sucesso o sistema.
Agora escolha outra coisa para melhorar, à medida que sua experiência aumenta e à medida que elimina problemas de baixo nível, você começa a enfrentar os problemas mais difíceis do sistema, mas pelo menos agora quando você diz que precisamos mudar o X:
- Você sabe como a mudança afetará o sistema
- Você sabe quais problemas serão gerados (quais regras precisam ser reaprendidas)
- Você conhece algumas maneiras imediatas de corrigir ou melhorar os problemas que a alteração apresentará
- as pessoas ao seu redor sabem que você conhece o sistema e é capaz de alterá-lo com êxito