Abstracto y Concreto

Recientemente he estado desarrollando una herramienta de web scraping para un sitio web de imágenes y esto me ha hecho reflexionar profundamente. Implementé el prototipo rápidamente, pero luego quise dotarlo de una mayor generalidad, es decir, de abstracción. Sin embargo, me encontré refactorizando sin cesar. Tirar abajo y empezar de nuevo constantemente consumió mucho tiempo; el software parecía mejorar, pero no se añadían nuevas funcionalidades, lo que me causaba cierta frustración.

Si hubiera definido desde el principio la mejor forma de escribirlo, tal vez habría evitado algunos desvíos. Pero continuar abstrayendo indefinidamente, sin un fin claro, facilita caer en la trampa del sobre-diseño; es decir, escribir durante medio mes y aun así no ser capaz de sacar un prototipo con funcionalidad básica. En el mundo actual, que persigue resultados inmediatos, esto es realmente un gran error.

La adaptabilidad y la funcionalidad del software deben evolucionar de forma gradual y mutua; Roma no se construyó en un día. Con un pequeño objetivo cada día, poco a poco acabará surgiendo un árbol robusto.