Me mudo

Este blog no recibirá ya más actualizaciones. Ve al nuevo blog enricflorit.com o averigua por qué me mudo.

domingo, 14 de octubre de 2012

Reescribir código o reutilizarlo?

"Contemple desecharlo; de todos modos tendrá que hacerlo." (Fred Brooks, The Mythical Man-Month, Capítulo 11)
Esta es una frase que leí referenciada hace algún tiempo en un artículo del hacker Eric S. Raymond, "La Catedral y el Bazar". En ese artículo se habla sobre el éxito de un desarrollo al estilo linux, pero no es el tema que traigo hoy. Hoy quiero hablar de algo distinto: ¿Es necesario desechar totalmente código de un proyecto (o parte de él) en el momento en que nos damos cuenta que hay una solución y/o implementación mucho mejor que la actual?
Difícil decirlo, ¿verdad?. Este es un tema que me suele preocupar bastante en mis desarrollos web. Como es lógico, jamás podrá nadie a estas alturas aprender todo cuanto se ha descubierto, escrito o dicho alguna vez. En cualquier ámbito pasa esto, excepto si nos metemos en un tema muy específico y limitado (y aún tendría serias dudas). Es imposible conocer absolutamente todo lo que está disponible en Internet, por ejemplo. ¿Tiene Google indexadas todas las webs del mundo? No, y cada día se crean aún más.
Pasemos a un ámbito más concreto, dejando de lado reflexiones existencialistas. El desarrollo web. Podríamos decir que esta parte de la informática incluiría, a grandes rasgos y sin contar la especialización, algunos pilares: HTML, CSS, algo de JavaScript, las bases del protocolo HTTP... Cualquiera que sepa esto se puede llamar desarrollador web? Lo dejaremos en que se le podría empezar a llamar así.
Ahora dejemos de lado los conocimientos básicos sobre la web, y diré que siempre existe la especialización. Pongo mi caso personal: estoy especializado en PHP y en su relación con AJAX. Ni de lejos soy el más bueno, ¡Me queda mucho por aprender! Pero cada vez que descubro algo nuevo que realmente me interesa, lo primero que quiero hacer es implementarlo. Probarlo. Experimentar con ese "algo" que me fascina, del cual quiero tener más conocimiento.
Ahí entramos en el problema: qué pasa si descubrimos algo que nos permitiría tener grandes beneficios (a nivel de código) en una parte de nuestra aplicación? Pondré un ejemplo práctico y de relativa actualidad (aunque aún no se ha manifestado demasiado): Backbone.js
Si habéis oído hablar de Backbone.js, sabréis que es un framework destinado a trabajar con proyectos web de gran complejidad del lado del cliente (aunque también se puede usar con node.js). Uno de los modos de uso que se proponen en la web del proyecto es la combinación con jQuery. Ahora supongamos que tienes un proyecto enteramente hecho con jQuery, y es bastante grande. ¡Backbone.js parece ser tu solución! Pero, espera un momento... La solución a qué? No está tu web acabada?
La decisión depende de tu situación
Si tu proyecto no está acabado, plantéate en qué estado de desarrollo está. Si te encuentras en una fase avanzada, no cambiarás, no? Lógico, sería desechar mucho trabajo.
Pero si hablamos de un código pequeño, que de momento es solo el esbozo de una idea, o incluso una parte a medias de una idea, contempla reescribir el código usando la herramienta nueva. Aquí es donde quería llegar con la frase del principio - si ya has resuelto un problema una vez, o ya sabes en qué dirección apuntar, será mucho más fácil resolver el problema con un nivel de complejidad mayor: la nueva herramienta. Es decir, en este caso SÍ reescribiríamos.
Pero, ¿Qué pasa si el proyecto está terminado? Excelente pregunta. Y creo que no debería quedar sin responder. Pero de nuevo daré la respuesta (o mejor, mi opinión) con condicionales. Si es un proyecto no demasiado grande, no tienes ideas para mejorarlo y/o tienes tiempo para reescribirlo... Hazlo, seguramente el cambio será para mejor. Pero si estás en lo contrario de uno de estos tres casos, lo mejor sería desarrollar cualquier parte nueva usando lo último que hayas aprendido, y aceptar que, lentamente, la parte antigua de tu código la irás modificando y modernizando con el tiempo. Dicho de otro modo, REUTILIZA tu código.
Cuál es tu opinión? Qué haces frente a un problema de cambio de código?

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...