A través de los años he conocido diversas empresas. Generalmente todas tienen su propio framework construído in-house, casi siempre por un programador que ya no está. Lo que me lamenta es ver siempre frameworks que nunca son robustos, ni están bien diagramados, carecen de patrones, y prácticamente no tienen documentación. Tener una nota sobre los frameworks es algo para un post totalmente distinto; incluso una serie de ellos.
Pero este pensamiento disparó en mí ponerme a analizar sobre los generadores de código. Muy pocas empresas están utilizando esto a su favor, pero las que lo hacen realmente tienen una gran ventaja sobre sus competidores. Quizás sea la falta de interés del management o de quienes "tienen la decisión" en ponerse a evaluar qué necesita un sector de IT para elevar su productividad. ¿No les ha pasado de tener una gran idea, o aunque sea alguna pequeña, que podría incrementar mucho la productividad, el manejo, la prolijidad, la calidad o aunque sea los tiempos de su trabajo? ¿Y que después la respuesta sea "No tenemos tiempo ahora"?
Ahí es donde muchas empresas hacen agua. Aquellas ideas que están bien elaboradas y consensuadas generalmente logran impactar de tal manera en un sector que lo cambian por completo. Por ejemplo, en mi primer trabajo de .NET desarrollé completamente las librerías de acceso a datos, manejo de errores, auditoría, seguridad y controles de usuario, y con ello pude incrementar considerablemente el tiempo en que se tardaba en desarrollar una aplicación.
Bueno, un poco me fuí de tema, pero creo que lo mismo pasa con los generadores de código. Incrementan nuestra productividad al eliminarnos de tareas tediosas y repetitivas, que ya están resueltas y podrían siempre realizarse por generador. ABMs, Consultas, Reportes, Impresiones. Son las opciones más comunes para empezar a pensar en un generador de código propio. Una herramienta que estoy evaluando para hacer esto es CodeSmith. Ojo, no la recomiendo ni tampoco digo que es mala, ya que apenas me estoy interiorizando en el tema. Pero quizás a alguno de ustedes les sirva para empezar a averiguar sobre el asunto.
Algunos pueden conocer el generador de código del Enterprise Architect (excelente herramienta si la hay). Sin embargo, suele quedarse corto y muchas veces terminamos haciendo bastante código igual. Es probable que todavía no haya descubierto la forma de ingresar reglas de negocio que se puedan auto-generar, aunque sea por OCL, pero no me parece que la generación de código sea, al menos por hoy, el fuerte del EA. Si no conocen esta increíble herramienta de UML es hora de que la conozcan: Enterprise Architect.
En fin. ¿Podrían los generadores de código ser una buena herramienta para tu empresa o sector? Por supuesto. Ponte a revisar qué tareas son repetitivas y cómo se podrían automatizar. Fíjate qué es lo variable en ellas y analiza cómo configurarlo. Busca herramientas o evalúa si hacer tu propio soft de generación de código. Quizás usando templates o podrías hacerlo todo por código. Obviamente el approach de templates es mejor pero puede resultarte más costoso en tiempo para desarrollar.
Mi consejo final es.
* Para desarrolladores: Promuevan sus ideas y defiéndanlas. Refínenlas y asegúrense de que están seguros de que funcionarán. Finalmente, busquen el argumento desde lo económico y productivo. A menos trabajo en tareas repetitivas, menos tiempo de desarrollo de grandes sistemas, por ende mayores ganancias y competitividad.
* Para project leaders, project managers, gerentes de proyecto: Evalúen si poseen los recursos humanos para encarar un proyecto propio de generación de código. Sino, al menos dediquen un tiempo a evaluar las diferentes herramientas. Recuerden, salvarán tiempo que se convertirá en dinero que encima les quitará trabajo de encima.
* Para gerentes y managers por encima de IT: Recuerden que la empresa se sostiene gracias a sus procesos, ya sean de Marketing, Ventas o Sistemas. Traten de ver si pueden optimizarlos o al menos asignar un poco de tiempo a dicha tarea.
Esto simplemente fué una especie de brainstorming. Disculpen si por momentos mezclé temas o soné un poco confuso :).
Au Revoir
No comments:
Post a Comment