¿Vale la pena perder tiempo y reescribir código?
Habrá quien no le importe lo que voy a decir, a otros les parecerá curioso, a unos pocos les sorprenderá y sólo unos cuantos probablemente lleguen a escandalizarse.Recientemente, tres años después de terminar una Ingeniería Superior en Informática, he aprendido lo que significa el Modelo-Vista-Controlador y como aplicarlo. Cuanto menos curioso, ¿no? Uno de los patrones por excelencia y no sabía como utilizarlo en la práctica.
Bueno, de hecho, lo conocía, sabía lo que era, pero no lo estaba aplicando bien.
¿Qué tiene que ver esto con reescribir código? Bueno, básicamente todo.
Con este conocimiento en mi poder, ahora sé como hacer las cosas mejor de lo que lo hacía, de una forma más organizada, así que puedo continuar añadiendo código a la web de mecanografía tal y como venía haciendo, o puedo aplicar el MVC, haciendo así el código más mantenible para el futuro y más fácil de desarrollar para el presente.
Como siempre, cuando hay que hacer un gran cambio, uno se pregunta: ¿Vale la pena invertir todo este tiempo en ese cambio? ¿compensa el esfuerzo?
La respuesta correcta a esta pregunta sólo se conoce unos meses más tarde de haber tomado una elección. Si después de unos meses la reimplementación y/o reestructuración de código no ha sido beneficiosa de alguna manera, entonces no merecía la pena el esuerzo.
Hasta el momento, he tenido que tomar esa decisión 3 veces en mi carrera profesional. Considero que todas ellas han sido acertadas.
Para el que no se haya parado a pensarlo nunca, a continuación pongo una lista con los pros y las contras para reescribir o reestructurar código.
Las contras de reescribir/reestructurar código:
- Se invierte tiempo
- Surgen nuevos bugs (y luego tienes que invertir más tiempo extra en arreglarlos)
- Dejas de implementar nuevas funcionalidades (y la competencia te come)
Las ventajas de reescribir/reestructurar código:
- entiendes mejor tu programa
- tu código se hace más mantenible
- es más fácil escribir nuevas funcionalidades
- y en definitiva, te encuentras más agusto con tu código y con ello más feliz :)
Todos los días se aprenden cosas nuevas, uno no puede pasarse la vida reimplementando cosas sólo porque sabe hacerlo un poco mejor. Normalmente suele ser más importante implementar nuevas funcionalidades que aporten algo más al producto, que reescribir o reestructurar código.
¿Cuando pesa más pararse a reescribir código? Cuando sepas que a medio o largo plazo te va a aportar una ventaja competitiva o te haga tan conocedor de tu producto que seas capaz de implementar nuevas funcionalidades en la mitad de tiempo.
Un artículo muy interesante, relacionado parcialmente con el tema y que recomiendo sin lugar a dudas, son las 7 razones por las que Derek Sivers volvió a PHP después de pasar 2 años desarrollando en Ruby On Rails (en inglés - y desde aquí gracias a Héctor por el enlace).
Conclusión: al final voy a readaptar y reestructurar artypist usando MVC porque considero que voy a acabar con un código más estructurado, más mantenible y donde voy a poder añadir nueva funcionalidad más fácilmente (por no hablar que voy a meter todo el código de nuevo en mi cabeza).