Productividad inesperada: qué nos aportan las herramientas Low Code

Imagen de desarrollador programando en editor de texto

A lo largo de 20 años tuve la posibilidad de participar en muchos proyectos de desarrollo de software en entornos corporativos de la más variada índole. En todo este tiempo hubo una decisión que siempre estuvo presente: elegir el lenguaje, herramienta o framework de desarrollo.

La mayoría de las veces propuse utilizar herramientas Low Code como GeneXus pero en muchas otras considere el uso de lenguajes tradicionales (Java, Javascript, .Net, etc).

En este artículo voy a tratar de presentarles las características más relevantes que tuve en cuenta para adoptar una u otra.

Un programador promedio intentando aprender la cantidad de herramientas que hay en el mercado.

Antes de comenzar vamos a ver qué son las herramientas Low Code, y más especificamente GeneXus: si pudiera sintetizar qué es GeneXus diría que es una plataforma de desarrollo de software basada en inteligencia artificial que genera aplicaciones para diversas plataformas (Windows, Linux, Web, Android, iOS) y en diversos lenguajes (Java, .Net, .Net Core, Swift) y soporta además múltiples motores de bases de datos (MSSQL, MySQL, Oracle, DB2400 entre otros).

Se la denomina Low Code porque esconde prácticamente toda complejidad técnica necesaria para crear aplicaciones corporativas y realmente la cantidad de código necesario es poco y tiende a ser cada vez menos.

A diferencia de lo que ocurre con los lenguajes tradicionales, en las herramientas Low Code no es necesario crear cada uno de los componentes ya que muchos de ellos ya vienen incluidos, por ejemplo componentes para la seguridad de las aplicaciones, para integrar motores de I.A., para hacer chatbots, etc.

Esto es lo que nos permiten herramientas como GeneXus: relajarnos un poco más.

Hecha esta breve introducción ahora sí, pasemos a ver las características que considero al momento de tomar la decisión:

 

1) Tipo de aplicación a construir

Particularmente las divido en estas categorías:

Gestión de datos: si la aplicación va a tener una gran cantidad de ABM’s, típico en los sistemas de gestión tipo ERP, la elección suele ser GeneXus, ya que es el fuerte de la herramienta sin lugar a dudas y sobre todo con los patrones que se pueden aplicar hoy en dia (WW+, K2BTools, Ignia Framework) además de los que provee GeneXus en forma estándar.
La velocidad y calidad con la que puedo contar al desarrollar es inigualable en otro lenguaje.

Aplicaciones con Interfaces enriquecidas: en el desarrollo de la aplicaciones web donde es primordial contar con interfaces enriquecidas para lograr una mejor experiencia de usuario y una mejor interfaz de usuario (UI/UX) la utilización de GeneXus es considerada la mejor alternativa. En este sentido esta herramienta en particular ha crecido mucho en los últimos años ya que es posible importar CSS, crear User Controls basados librerías externas (por ejemplo en Bootstrap, Semantic UI y otras), importar diseños hechos en Sketch y otras muchas características que juntas han sobrepasado al nivel de flexibilidad que se tiene con lenguajes tradicionales.

Una alternativa es desarrollar la capa de interfaz de usuario en lenguajes tradicionales y la capa de servicios o “backend” con GeneXus.

Aplicaciones que requieren interfaces con dispositivos, sensores u otras aplicaciones: para este tipo de aplicaciones, que generalmente se trata de un módulo de una aplicación más grande, lo primero que intentamos, si se cuenta con una interfaz provista por el fabricante del dispositivo, es importar esa interfaz directamente en GeneXus y luego utilizarla como un programa externo. Cuando esto no es posible desarrollamos en Java o .Net esa librería y luego la importamos. De una forma u otra es posible hacerlo de manera integrada a GeneXus.

Interfaces con servicios Web: hoy en dia es difícil encontrar aplicaciones que no requieran tener interfaces con otros sistemas. Desde hace ya varios años, estas interfaces están basadas en SOAP y más recientemente en servicios REST.

Con GeneXus es posible integrar este tipo de interfaces de manera nativa y de una forma muy transparente para el desarrollador.

Hoy por ejemplo es posible utilizar toda la API de SAP y SAP B1 (interfaz OData), importando y luego tratando esas interfaces de la misma manera que si fueran transacciones nativas.

Hubo algunos casos donde encontré servicios de este tipo donde no era posible usarlo en forma directa, la mayoría de las veces porque se utilizaba algún tipo de encriptación o esquema de seguridad no estándar,  la solución fue escribir un wrapper en lenguaje nativo y luego importar el wrapper a GeneXus, escondiendo la complejidad o característica que impedía hacerlo directamente.

Basadas en flujos: este tipo de aplicaciones basadas en procesos son desarrolladas siempre con GeneXus ya que este cuenta con un motor muy potente de workflow (GxFlow) basado en el estándar BPMN.

 

2) Conocimiento en el equipo

Sobre esta característica suelo evaluar el conocimiento disponible en el equipo, no solo sobre un lenguaje determinado sino también sobre la problemática a resolver.

Una de las ventajas de las herramientas Low Code es que poseen una curva de aprendizaje sorprendentemente corta, es normal ver que programadores con experiencia luego de un mes o menos de capacitación ya puedan desarrollar componentes con un nivel aceptable de productividad, en el caso de programadores sin experiencia esto puede llevar entre 1 y 3 meses, lo cual sigue siendo impresionante comparado a otros lenguajes tradicionales.

 

3) Tiempos de Desarrollo

En muchos casos la variable del tiempo juega un rol principal, las veces que esto ha sucedido la primer opción a evaluar siempre fue una herramienta Low Code ya que estas brindan la posibilidad de completar el desarrollo rápidamente y con una calidad aceptable en los entregables.

 

4) Mantenimiento de la inversión

Una cuestión cada vez más presente en la toma de decisiones es que las aplicaciones desarrolladas sean a “prueba de futuro”.

Esto es algo que los empresarios han comenzado a notar en los últimos años, muchos se han embarcado con anterioridad en costosos proyectos basados en una tecnología de moda que luego resulta reemplazada por otra mejor y toda esa inversión se tira a la basura.

Sin lugar a dudas esta es la característica principal de GeneXus. Las aplicaciones desarrolladas con GeneXus que inicialmente se desarrollaron para una plataforma luego con un esfuerzo mínimo son convertidas a una distinta o más moderna. Hay sistemas que nacieron para RPG o Cobol (con pantalla verde en AS400) que fueron convertidas a aplicaciones Java para Windows y luego a Web. Y ahora; ¿por qué no a Android o iOS, con bases de datos en la nube, con procesos que corren Serverless en AWS Lambda? Las posibilidades son inmensas en este sentido.

 

5) Alta Performance

Una de las objeciones al uso de herramientas Low Code vs los lenguajes tradicionales a menudo suele ser la performance de las aplicaciones generadas. La realidad es que prácticamente no encontré ejemplos a lo largo de todos estos años en donde se haya demostrado esa suposición.

Específicamente en GeneXus podemos cuidar la forma de estructurar la aplicación de manera de que la mayoría del procesamiento quede del lado del servidor o de la ejecución de procedimientos almacenados que se importan y declaran como programas externos.

Esto puede pasarte si no te mantenés a flote en esta era digital.

Sin lugar a dudas existen muchas otras características a tener en cuenta para decidir si utilizamos una herramienta u otra. Una capacidad requerida de cualquiera de ellas, es que pueda adaptarse, crecer, evolucionar, porque es así como son los negocios y el que no lo pueda hacer tendrá serios problemas para mantenerse a flote en esta era digital.

Por último, tengan en cuenta también que no hay una herramienta correcta para resolver todo un sistema. Los sistemas son cada vez más complejos y debemos desarrollar y pensar en múltiples componentes interconectados ¿Por qué no desarrollar cada componente con la herramienta que mayores ventajas me de en cada caso? En uno de los últimos proyectos en los que participé el stack tecnológico fue:

  • Front End: VueJs, PHP
  • BackEnd: NodeJs, PHP, GeneXus

 

Por suerte cada vez hay más opciones para elegir, los equipos son cada vez más multidisciplinarios y heterogéneos. Y los proyectos ¡más divertidos que nunca!

Carlos es Ingeniero de Sistemas de Información (UTN) e Instructor GeneXus. Actualmente es el responsable técnico de todas las operaciones de Cultura IT.