Em algum momento, um programa está em desenvolvimento. Os recursos estão sendo adicionados, removidos ou alterados o tempo todo. Toda versão não passa de um protótipo. Portanto, não perco muito tempo escrevendo código super limpo nesse momento, porque nunca sei quanto tempo algo dura. É claro que tento manter a qualidade do código em certos padrões, mas o tempo é sempre um problema.
Depois, chega o momento em que o programa termina e o (s) tomador (es) de decisão diz "é isso aí". Eu tenho um protótipo funcional neste momento, mas o código interno é um pouco confuso de todas as partes durante a fase de desenvolvimento. Espera-se que eu comece o teste / depuração final, mas meu instinto diz que agora devo de alguma forma limpar e / ou reescrever as coisas para fornecer uma arquitetura adequada que facilite a manutenção, etc.
Depois que o material é testado e aprovado, não faz sentido reescrevê-lo. Em uma base regular, eu permaneço lá com um protótipo 'pronto' em funcionamento e recebo um erro durante o teste e vejo que é o resultado de uma codificação não inteligente que é o resultado de todo o processo de desenvolvimento. Estou no meio de testes e a correção seria uma reescrita ... está uma bagunça!
Existem maneiras melhores / manuais, tenho certeza. Mas eu tenho que trabalhar em um ambiente de trabalho real, onde nem tudo é livro.
Então, como faço a transição do meu protótipo de trabalho para uma versão de lançamento com uma base de código estável? Talvez eu não deva considerar o desenvolvimento concluído assim que o fizer e realmente o vejo como a fase de limpeza ... Não sei, preciso de ajuda aqui.
EDITAR
Eu quero esclarecer algumas coisas.
Estou 100% do lado de fazê-lo logo antes e não depois, código limpo e legível. Mas eu também tenho que fazer as coisas e não consigo sonhar com a beleza do código, tudo limpo e brilhante. Eu tenho que encontrar um compromisso.
frequentemente, um novo recurso é realmente apenas algo que queremos experimentar e ver se faz sentido implementar algo assim. (especialmente em aplicativos móveis, para obter uma aparência real em um dispositivo real) Portanto, é algo pequeno que (imho) não justifica muito trabalho em uma primeira iteração "vamos ver". No entanto, às vezes, surge a questão QUANDO pago esta dívida técnica? É disso que se trata esta questão.
Se eu souber que metade dos recursos serão descartados um dia depois (já temos experiência suficiente em nossa empresa), acho realmente difícil acreditar que a melhor maneira de abordar meu problema é, no entanto, investir tempo extra para escrever tudo limpo, mesmo que a maior parte será descartada logo depois. Parece-me que economizarei tempo se fizer uma grande limpeza quando a coisa estiver sólida, daí a minha pergunta.