En algún momento un programa está en desarrollo. Las características se están agregando o eliminando o cambiando todo el tiempo. Cada versión no es más que un prototipo. Así que no pierdo mucho tiempo escribiendo código súper limpio en ese momento porque nunca sé cuánto dura algo. Por supuesto, trato de mantener la calidad del código en ciertos estándares, pero el tiempo siempre es un problema.
Luego viene el punto en que el programa finaliza y los que toman las decisiones dicen "eso es todo". Tengo un prototipo funcional en este punto, pero el código interno está un poco desordenado por todas partes durante la fase de desarrollo. Se espera que comience la prueba / depuración final, pero mi instinto dice que ahora debería limpiar o reescribir las 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 ahí con un prototipo 'terminado' en funcionamiento 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 maneras mejores / de libro 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 hago la transición de mi prototipo funcional a una versión de lanzamiento con una base de código estable? Tal vez no debería considerar que el desarrollo haya terminado una vez que lo haga y realmente lo veo como la fase de limpieza ... No sé, necesito ayuda aquí.
EDIT
Quiero aclarar algunas cosas.
-
Estoy 100% dispuesto a 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) Así que es algo pequeño que (imho) no justifica demasiado trabajo en una primera iteración "a ver". Sin embargo, a veces surge la pregunta ¿CUÁNDO pago esta tech.debt? De eso se trata esta pregunta.
Si sé que la mitad de las funciones se eliminará un día después (ya tenemos suficiente experiencia en nuestra empresa), realmente me resulta difícil creer que la mejor manera de abordar mi problema es, sin embargo, invertir más tiempo para escribir todo. limpia incluso si la mayor parte se caerá poco después. Me parece que ahorraré tiempo si hago una gran limpieza una vez que la cosa está sólida, de ahí mi pregunta.