En algún momento se está desarrollando un programa. Las características se agregan o eliminan o cambian todo el tiempo. Cada versión no es más que un prototipo. Entonces no pierdo mucho tiempo escribiendo código súper limpio en ese punto porque nunca sé cuánto dura algo. Por supuesto, trato de mantener la calidad del código a ciertos estándares, pero el tiempo siempre es un problema.
Luego llega el punto en el que finaliza el programa y los tomadores de decisiones dicen "eso es todo". Tengo un prototipo que funciona en este momento, pero el código interno es un poco desordenado de un lado a otro durante la fase de desarrollo. Se espera que comience a probar / depuración final, pero mi instinto dice que ahora debería de alguna manera limpiar y reescribir cosas para darle una arquitectura adecuada que facilite el mantenimiento, etc.
Una vez que las cosas han sido probadas y aprobadas, no tiene sentido volver a escribirlas. De manera regular, estoy parado allí con un prototipo 'terminado' que funciona y recibo un error durante las pruebas y veo que es el resultado de una codificación no inteligente que es el resultado de todo el proceso de desarrollo. Estoy en medio de las pruebas y la corrección de errores sería una reescritura ... ¡es un desastre!
Hay mejores formas de libros de texto, estoy seguro. Pero tengo que trabajar en un entorno de trabajo real donde no todo es un libro de texto.
Entonces, ¿cómo paso mi prototipo de trabajo a una versión de lanzamiento con una base de código estable? Tal vez no debería considerar el desarrollo terminado una vez que lo hago y realmente verlo como la fase de limpieza ... No sé, necesito ayuda aquí.
EDITAR
Quiero aclarar algunas cosas.
Estoy 100% en el lado de hacerlo justo antes y no después, código limpio y legible. Pero también tengo que hacer las cosas y no puedo soñar con la belleza del código, todo limpio y brillante. Tengo que encontrar un compromiso.
a menudo, una nueva característica es realmente algo que queremos probar y ver si tiene sentido implementar algo como esto. (especialmente en aplicaciones móviles, para obtener una apariencia real en un dispositivo real). Por lo tanto, es algo pequeño que (en mi humilde opinión) no justifica demasiado trabajo en una primera iteración de "veamos". Sin embargo, a veces surge la pregunta ¿CUÁNDO pago esta deuda técnica? De eso se trata esta pregunta.
Si sé que la mitad de las funciones se eliminarán un día más tarde (suficiente experiencia en nuestra empresa por ahora), realmente me cuesta creer que la mejor manera de abordar mi problema es sin embargo invertir tiempo extra para escribir todo limpio, incluso si la mayor parte se eliminará poco después. Me parece que ahorraré tiempo si hago una gran limpieza una vez que la cosa sea sólida, de ahí mi pregunta.