17.9.05

Generadores de código

En algunos de los proyectos en los que he participado se han desarrollado herramientas que generaban código fuente. No eran herramientas para el cliente, sino para los propios desarrolladores, para facilitar su trabajo.

El código generado por estas herramientas era muy diverso: capa de persitencia, pruebas unitarias, clases para encapsular mensajes, frameworks para un conjunto de aplicaciones. Con el tiempo han aparecido frameworks y herramientas que hacen esto. No obstante, en ocasiones las peculiaridades de un proyecto o el entorno de éste, requiere que el desarrollo de este tipo de herramientas sea propio.

Creo que con la experiencia, todos descubrimos más y más tareas que se pueden automatizar. Considero que merece la pena pararse a pensar de vez en cuando en estas tareas, y dedicar algo de tiempo a la búsqueda de soluciones para automatizarlas. Podrían ser herramientas que ya existan, adaptaciones que se puedan hacer de herramientas que ya existan, o en otro caso, desarrollar herramientas propias.

Aún así, esto no es aplicable a todos los proyectos. En desarrollos pequeños o con los recursos muy justos (que suele ser lo habitual), dedicar tiempo a desarrollar estas herramientas no es viable. Distinto sería si se trata de algo que se vende varias veces, que sufre cambios, y que éstos pueden ser automatizados en cierta medida.

Este asunto va más allá de los propios lenguajes, y tiene mucho que ver con el entorno de desarrollo. Por ejemplo, encuentro que en el 'mundo Java' hay muchas más herramientas y frameworks pensados para todo lo que comento. Es más, uno de sus entornos de desarrollo por excelencia, Eclipse, es extensible por cualquiera, y gracias a eso cuenta con una infinidad de extensiones muy útiles para los desarrolladores. Es un entorno claramente colaborativo entre desarrolladores, muy diferente a otros, que cuentan con muy buenas herramientas, pero que no facilitan esta extensibilidad. Éstos están pensados para que se hagan las cosas de cierta manera, y para eso te dan todo el soporte que necesitas, pero si quieres hacer las cosas de otra manera, las cosa se complica, o simplemente resulta imposible.