Daily Archives: 23 April, 2008

Desarrollo Informática

Release early, release often

Si hace casi un año decía que estaba empezando a hacer algo parecido a la programación extrema, hoy puedo confirmar que es algo que sigo desde entonces a pie juntillas.

Y ha sido un proceso bastante natural, casi sin quererlo. La verdad es que llevo ya varios meses trabajando solo (y así será hasta que acabe la tesis). Eso hace que no se cumpla totalmente el concepto, pero se aproxima bastante. Como primera regla: al final de cada día hago un commit al servidor SVN con una versión estable y totalmente funcional del programa en el que esté trabajando en ese momento. Lo que toca últimamente es programar en Python unos scripts que van siendo bastante grandes y una batería de algoritmos genéticos/evolutivos.

Esta tarea permite seguir tranquilamente ese eslogan de “release early, release often“. Lo normal es empezar por la mañana con alguna funcionalidad nueva en Python. Esa funcionalidad suele estar testada a eso de las 12 de la mañana. Una vez que he comprobado que funciona con un conjunto de datos pequeño, lanzo unas cuantas miles de ejecuciones del script y me pongo a otra cosa, a la espera de que acabe la ejecución de esas tareas. Normalmente da tiempo para ponerse a añadir alguna funcionalidad nueva a un algoritmo genético.

Si acabo algo a eso de las 4’30 de la tarde, hago el commit y hasta el día siguiente. Aprovecho el rato que queda para estudiar algo, esbozar algún artículo,… Si no, se curra en ello hasta que queda una versión estable. La idea es no quedar nada pendiente para el día siguiente. Y otra normal importante: no se empieza nunca una funcionalidad complicada por la tarde porque sólo consigues llevarte problemas a casa.

Otro aspecto importante: aunque tengas que hacer funciones complejas, se divide la función en trozos pequeños y muy sencillos. Al final obtienes tropecientas funciones pequeñitas, pero muy modulares, manejables y entendibles.

¿Diseño? No hay. Simplemente se piensa un rato en lo que hay que hacer, me hago una idea mental del diseño que tendrá eso y a escribir. Nada de mariconadas.

¿Documentación? Eso se hace sólo los viernes de resaca. Es algo que aprendí en la primera empresa en la que trabajé y lo mantengo desde entonces. Si sales un jueves, el viernes no se programa porque vas a estropear lo que hayas hecho los días previos.

Supongo que puedo funcionar así gracias a que nadie me supervisa y me pongo mis propios plazos. Pero así y todo voy unos dos meses por delante de lo que esperaba (aún metiéndome en más charcos de los que debería).