Eu vou ser muito franco ...
- Você está encarregado dos desenvolvedores neste trabalho?
- Você é o líder do projeto?
- Quanta "aposta" os desenvolvedores mantêm no projeto?
- Qual é a justificativa da sua empresa para uma reescrita?
- O que há na base de código que a torna totalmente inútil e irrecuperável?
Você declarou que acabou de começar um trabalho e, no entanto, já parece ser o mestre da situação lá. Talvez eu tenha entendido mal a intenção da sua pergunta, mas tenho a impressão de que você entrou em um trabalho em que vê vários problemas e chegou à conclusão mais fácil em que o código é quebrado e o único caminho a seguir é. reescrever, mas você realmente considerou o custo para o seu empregador?
Com qualquer base de código existente - não importa o quão ruim é o estado -, o proprietário geralmente terá um investimento considerável nos produtos que o código representa. Existem custos diretos e indiretos associados à base de código, e uma reescrita geralmente é a última coisa que você deseja fazer como desenvolvedor de software, pois corre o risco de desvalorizar seus ativos de código e, assim, obter um retorno menor em todos os seus esforços.
Tome o sistema operacional do Windows como exemplo. Com cada nova versão criada, houve um grande pedaço de código transmitido da versão anterior. Às vezes, bibliotecas e APIs inteiras são arrastadas para a frente por várias gerações de SO. Por quê? Porque os desenvolvedores sabem que esses elementos funcionam, foram testados, foram corrigidos e corrigidos para evitar problemas de segurança e memória, e porque eles custaram muito dinheiro para entrar nesse estado. Ninguém quer jogar fora o código em funcionamento quando está ganhando dinheiro, mesmo que os custos de manutenção sejam relativamente altos, o custo para começar do zero sempre será mais alto ainda e, em uma empresa como o caso da Microsoft, eles têm bilhões no banco, permitir que eles comecem desde o início, se quiserem, mas não porque eles querem maximizar o retorno do investimento. Seu empregador não é diferente da Microsoft, exceto por ter bilhões em dinheiro para lançar em um projeto.
Portanto, o código está uma bagunça e parece que há problemas de comunicação e limites entre as várias áreas da empresa. O que você ou seus colegas podem fazer sobre isso?
Uma opção é simplesmente continuar como a equipe tem sido, e esperar um milagre no futuro. Provavelmente não é uma boa ideia e provavelmente só aumentará sua frustração e estresse.
Uma opção melhor é simplesmente simplificar e executar suas tarefas, mas como parte disso, procure oportunidades para adicionar testes para dar suporte às áreas de código que parecem ser as mais frágeis e depois refatorá-las até que se tornem mais estáveis. Você terá mais facilidade em argumentar convincentemente para melhorar o investimento da empresa em vez de argumentar para simplesmente jogar tudo fora.
Uma opção ainda melhor é organizar-se como uma equipe e garantir que alguém esteja do lado com antiguidade suficiente para que eles possam ser um bom argumento para permitir à equipe mais flexibilidade para agendar um horário para melhorar a base de código. Não me importo com o quão ocupada é uma empresa, ou com a rigidez do cronograma, sempre há algumas "interrupções" ocasionais nas atividades que podem ser usadas para pressionar uma melhoria ou duas. É ainda melhor, no entanto, se as melhorias puderem ser feitas durante a conclusão de outras tarefas. Se fosse eu, estaria informando um gerente e apresentando-os a conceitos em alguns dos livros canônicos que os desenvolvedores de software lêem. Código Limpoé provavelmente o que sua equipe mais precisa. Plante algumas sementes sobre como melhorar o código e forneça alguns exemplos do que você quer dizer. Um bom gerente verá o valor de adicionar melhorias incrementais ao código, especialmente se você conseguir descrever o conceito de Dívida técnica . Ajude seu líder ou gerente de equipe a fazer um bom argumento comercial para melhorar o código, e eles terão uma motivação melhor para agir de acordo com ele.
Também não basta dizer "o código está desarrumado". Você precisa incentivar seus colegas a praticar a codificação limpa o tempo todo e a usar a técnica de codificação limpa para incentivar um pouco de organização. Tenho um pequeno pôster que imprimo e penduro da parede do escritório toda vez que assumo um novo emprego. Ele diz "Sempre se esforce para deixar o código um pouco mais bonito do que você o encontrou". Bem ao lado, adiciono outro que diz "Os lírios não precisam ser dourados". Ambos servem para me lembrar que eu deveria sempre tentar melhorar o que encontro, mas evitar simplesmente colocar um problema em outro. Reescrições maciças são geralmente o pior tipo de "revestimento de ouro", porque geralmente são feitas pelas razões erradas. Certamente, uma versão totalmente nova do produto pode ser justificável em algum momento,