Software de Terceros: La temible zona de confort

Javier Alexander Chacón Samol

Estudiante de Ingeniería en Ciencias y Sistemas - USAC

Palabras Clave:
Framework, Grails, MVC, Groovy, confort, experiencia

Un framework es un conjunto de herramientas estandarizadas que proveen a los desarrolladores la agilidad de crear software de manera más rápida. Grails como framework web tiene la particularidad de proporcionar todo un ecosistema de librerías sólidas en Java (Hibernate y Spring por ejemplo), que nos permite desarrollar proyectos web de manera sencilla, aporta elementos importantes como Don’t Repeat Yourself (DRY) y Convención sobre Configuraciones (CoC), convirtiendo Grails en un framework web de alta productividad sobre Java. Con Groovy como lenguaje de programación que se ejecuta sobre Java con instrucciones más sencillas y simplificada. Proporciona un entorno totalmente orientado a pruebas y un entorno completo de desarrollo al incluir un servidor web, sin olvidar que trabaja con un patrón MVC.

La exigente demanda de muchas organizaciones de crear soluciones tecnológicas robustas de manera rápida, obliga a los departamentos de IT a buscar herramientas que faciliten el desarrollo de estas soluciones, es acá donde los framework toman importancia para estos departamentos, proporcionando librerías y herramientas de pruebas unitarias que reducen el esfuerzo por parte del desarrollador. En el entorno web, el lanzamiento de un framework de Javascript incita a los desarrolladores a evaluar las ventajas que puede tener ciertamente la nueva herramienta. Desde el punto de vista del estudiante es incluso intimidador el hecho que acabas de aprender a utilizar una herramienta y ya existen dos o tres más que son tendencia y que no manejas, es un tema alarmante y a la vez emocionante de nuestra carrera.

Tuve la oportunidad de trabajar hace tres años en una corredora de seguros de Guatemala, mi primer trabajo en desarrollo web con un framework que desconocía: Grails; además de trabajar con el famoso patrón MVC al cual en ese momento desconocía completamente. Al comenzar mi trabajo en ese lugar y luego de obtener la documentación correspondiente y realizar la investigación personal del funcionamiento de esta plataforma, estuve tan impresionado que una herramienta pudiese mediante una clase que representaba un Modelo, crear un CRUD básico en cuestión de segundos con un línea en consola “grails generate-all model”, al ejecutar creó un controller con los métodos que incluyera un CRUD común, además de los archivos gsp (vista html) y validaciones Javascript colocadas desde el archivo Model, luego ejecutar un “grails run-app” y ver compilado un proyecto donde ya tenía un CRUD básico almacenando correctamente en una base de datos sin crear un solo script gracias a la tecnología GORM (Hibernate de Java).

Continuando con mi curva de aprendizaje al mismo tiempo que ya desarrollaba pequeños módulos dentro del sistema, me encontré con un enorme “ecosistema” de plugins que pueden agregarse a los proyectos en una línea de código desde un archivo de configuración, similar a las librerías de Java o lo que hace hoy en día Maven. Al incluir un plugin el sistema automáticamente descarga las dependencias que necesitase el plugin reduciendo considerablemente el desarrollo para cualquier persona que lo necesitara. Bastaba entonces con buscar en el portal lo que uno necesitaba desarrollar, verificar que el autor tuviera buenos comentarios y puntuación para que adjuntáramos su plugin a nuestro proyecto (Enviar correos masivos, acortar url, convertidores de pdf, entre otros) y el desarrollo se enfocaba en crear código que realmente no existiese y que era personalizado para el negocio, porque todo lo demás ya existía en este ecosistema.

Con el paso del tiempo me di cuenta que la sostenibilidad de un framework, es justamente eso, evaluar cómo evoluciona la herramienta en función del tiempo, y lamentablemente fue donde Grails me dio una gran decepción. Existía una aplicación configurada (CoC) en un motor de base de datos no relacional (Mongo db) que en cierta ocasión se realizó una actualización, al finalizar esta acción se procedió a publicar nuevamente el proyecto, que para sorpresa no lograba compilar de manera exitosa debido a problemas con un controlador de la base de datos, y si bien MongoDb tenía sus actualizaciones constantes no era lo mismo para el plugin de Grails, para nuestra sorpresa el plugin no había sufrido ninguna actualización desde hace más de 8 años, dejando muy mal al “ecosistema” del cuál Grails se sentía muy orgulloso. Y es que realmente el tener software de terceros puede facilitarnos la vida, pero lo puede hacer de manera temporal o permanente, pero si se hace de manera temporal podemos tener este tipo de complicaciones, invertir tiempo de investigación para la corrección de errores que podría poner en riesgo el tiempo de vida de un software si fuese muy crítico.

Y eso no es todo con los software de terceros, y no es que esté en contra de ellos solo comento los puntos débiles que he encontrado durante mi experiencia laboral. Dos años después tuve la oportunidad de estar en el proceso de reclutamiento y selección para una plaza en una entidad bancaria, en la cual trabajo actualmente. Siguiendo el proceso de selección realicé una típica prueba para ingresar que requería principalmente un mantenimiento, para mi sorpresa estando allí y gracias al Framework con el cual trabaja desde hace dos años atrás, donde no había realizado nunca una conexión a base datos manual, tuve la penosa dificultad que no poder realizar algo tan básico como una conexión, y quizá me limitó en tiempo que pudiera demostrar que realmente sí tenía el conocimiento y experiencia en programación que mencionaba en mi curriculum, justo en ese momento tuve que buscar en Google: “How to connect Database to your C# program” lo sé, si eres un desarrollador como yo, sabrás lo vergonzoso que fue para mí haber dejado eso en el historial del ordenador en el que me encontraba realizando la prueba.

Si bien existen este tipo de herramientas que facilitan nuestro trabajo como desarrolladores, no debemos quedarnos fuera del mercado laboral con las nuevas tendencias en software. El hecho de estar cómodo en un cargo laboral donde quizá ya manejas las herramientas de la organización nos limita a buscar nuevas y mejores oportunidades de trabajo ya que no solo estamos quedando fuera del mercado laboral sino perdemos aquella habilidad y pasión con la que iniciamos nuestra carrera, que en su momento nos identificó: aprender nuevas tecnologías.

No existe una solución puntual que pueda evitar estos problemas pero ciertamente podemos realizar algunas acciones que puedan mitigarlo. Para el tema de integración de software de tercero: realizar investigaciones más exhaustivas acerca licenciamiento, verificar constancia en actualizaciones, autores, herramienta alternativa si llegase a quedar obsoleta. Y referente al tema de nuevas tecnologías suelo apartar cierto tiempo a mi semana a noticias tecnológicas, y aprender alguna herramienta novedosa en mis tiempos libres simplemente por hobby, quizá en un futuro tenga una nueva oportunidad laboral y deseo estar preparado.

Conclusiones

  • Las capacitaciones constantes son necesarias para que no quedar fuera del mercado laboral, podemos tener la experiencia pero quizá no la habilidad de utilizar otras herramientas en otras organizaciones.

  • El uso de herramientas de terceros es de gran ayuda, sin embargo es importante considerar que no debemos acomodarnos a ellos en un cien por ciento ya que podríamos perder la oportunidad de conocer nuevas herramientas.

  • Debemos prepararnos para futuras oportunidades de crecimiento laboral. El mejorar nuestros perfiles, en cuanto a capacitaciones y nuevas tecnologías nos permitirá tener una mejor oportunidad en el mercado laboral.

Referencias

  • [1] [grails] [Smooth Java integration. Grails seamlessly and transparently integrates and interoperates with Java, the JVM, and existing Java EE containers] Recuperado de: https://grails.org.

  • [2] [grails] [Plugins. Developers can build plugins that extend and enhance Grails, or they can access existing plugins published by a vibrant plugin community] Recuperado de: https://grails.org.