Eu trabalho em uma multinacional bastante conhecida, e o módulo em que trabalho foi atribuído a um novo "lead". A base de código é bastante grande (~ 130K ou mais, com interdependências em outros módulos), mas estável - algumas partes cresceram feias ao longo dos anos, mas é provável que esteja em funcionamento. (Nossos produtos estão em execução há anos, mesmo novos). O problema é que nosso líder deseja reescrever o código do zero , para abranger "granularidade mais fina e um design proativo".
Eu sei que isso não é uma boa ideia, mas como convencê-lo / ao restante da equipe (que são bem mais experientes do que eu em termos de anos de exp), sem parecer muito pedante (Você não deve reescrever, como Joel et al. têm artigos claros proibindo isso)?
Tenho uma boa relação de trabalho com a pessoa em questão e não quero estragar tudo, mas também não quero fazer parte de uma decisão que certamente nos atormentará nos próximos anos ! Alguma sugestão para uma abordagem mais branda, mas eficaz? Mesmo relatos de como você lidou com essa situação ao seu gosto me ajudariam muito!
EDIT: A base de código de que estou falando não é um produto / GUI, mas no nível do kernel com todas as funcionalidades críticas para o nosso produto. Espero que agora você saiba por que eu pareço tão apreensivo !!
fonte
Respostas:
Faça as contas com ele juntos:
No lado da dívida:
quanto tempo levará para recriar os recursos que você tem no momento. Quanto custa isso (devs + overhead)
quanto a empresa perderá por não conseguir implantar novos recursos / correções ou apenas a uma taxa muito mais lenta?
qual é o risco de não ser capaz de concluir a reescrita e voltar à base de origem atual depois de n meses? Incluindo o risco de matar o produto todos juntos.
Quanto tempo levará até que a nova base de código pareça tão feia quanto a atual?
No lado do ativo:
Adicione tudo, possivelmente fazendo uma comparação entre o melhor e o pior cenário.
No final, você terá uma resposta. Se ele ignorar a resposta, converse com seu chefe.
fonte
Obrigatório: coisas que você nunca deve fazer, parte 1 (você já viu, mas se alguém encontrar essa pergunta e não tiver).
Reescrever do zero é muito tentador para os desenvolvedores. Ninguém quer trabalhar no código legado, todo mundo quer escrever um novo código sexy. Mas no final das contas, trata-se do que é melhor para os negócios. Por que é necessário reescrever? Eles podem apresentar esse caso de uma maneira clara que demonstre valor agregado aos negócios?
Você não deveria convencê-los a não gastar recursos. Eles devem ter que convencer a empresa a gastar recursos.
fonte
Quão bem sua abordagem de teste cobre a base de código? E quanto ao teste de unidade?
Se já não estiver lá, sugira que qualquer código seja reescrito apenas uma seção por vez e que qualquer seção sob reescrita tenha quase (90% +) cobertura de código de teste de unidade quase completa. Depois de fazer isso, você terá definido uma parte do código que está bem definida (poderíamos testá-lo) e também possui uma interface conhecida.
Nesse ponto, reescrever esse código é um risco muito menor. Os erros devem ser detectados por testes de unidade / outros testes, e supondo que você também tenha controle de origem pode ser facilmente revertido.
A reescrita em partes menores também permite que você e sua equipe liderem com mais precisão uma sensação de reescrita completa. Vocês dois sabem no que estão se metendo? Um de vocês é pessimista / optomista demais?
fonte
Existem alguns fatores relevantes a serem considerados:
fonte
Apenas diga não." Seja convincente, mas esteja disposto a dizer "Você não apenas está incorreto sobre seus benefícios, mas também está errado porque é um desperdício de esforço humano".
fonte
Onde está o caso comercial de uma reescrita? Você tem uma base de código que está preenchendo uma necessidade. É verdade que pode não ser perfeito, mas representa um investimento substancial em termos de tempo e recursos. O único momento em que uma reescrita completa é garantida é quando a qualidade do código é tão ruim que está fazendo com que a organização perca dinheiro ou oportunidades de negócios. É preciso lembrar o velho ditado, se não estiver quebrado, não conserte!
fonte
Compre o maior número possível de shorts no estoque. Se a gerência concordar em cometer suicídio, pelo menos você deve ganhar dinheiro com isso. Afinal, em breve você estará na rua depois que o tanque.
fonte