Proyecto de desarrollo de aplicaciones: Low Code vs. IA

Hace unas semanas, el departamento de desarrollo de Kiteris recibió el encargo de realizar un aplicativo web que permitiese a los usuarios de un cliente final rellenar un formulario sencillo que reflejaba un informe técnico de inspección para el sector naval. El cliente quería que se implementara con las aplicaciones Low Code de Microsoft, del que en Kiteris no somos expertos pero sí contamos con partners especializados.

Aprovechando nuestras iniciativas internas de I+D al respecto de uso de herramientas de IA, decidimos en paralelo realizar también el proyecto con un enfoque de desarrollo a medida mediante el uso de GitHub Copilot para Vue.JS y .NET.

Así pues, el proyecto se abordó por parte de un equipo de desarrollo que utilizó IA, “compitiendo” contra los tiempos estimados por un proveedor externo especializado en Low Code con Power Apps.

A todas luces, nuestra intuición nos decía que realizar un desarrollo de cero podría suponer una merma en términos de productividad frente a una solución Low Code, aunque esto a la larga se viese compensado en fases posteriores. Veamos un breve repaso de pros y contras de cada tecnología:

Teniendo en cuenta que se trataba de un proyecto con una UX/UI sencilla y funcionalidad básica CRUD (Create, Read, Update and Delete) con subida de imágenes y Login sencillo, parecía lógico que la solución Low Code tendría claras ventajas de costes y tiempo a pesar de necesitar servicios externos a Power Apps para las imágenes y de necesitar expertos de SharePoint adicionales al equipo.

Y es aquí donde decidimos medir las posibilidades reales de la IA en el estado actual.

Como herramienta de asistencia al desarrollo mediante IA nos decantamos por la que ahora mismo está más consolidada y avanzada: Github Copilot.

 

Comenzamos nuestro desarrollo con IA

¿Cómo fue nuestra experiencia con Github Copilot?

Sinceramente, no pudo ser más satisfactoria. El equipo de desarrollo, formado intencionadamente por desarrolladores junior asistidos solo por un senior para valorar el escenario presuntamente más desfavorable, concluyó la aplicación en tiempo récord, similar al estimado por nuestro partner para hacerlo en low code.

Uno de los pocos inconvenientes de hacer uso de una herramienta de asistencia por IA es que la calidad y el resultado del código entregado dependen de la calidad de las instrucciones prompt recibidas. Pero, como indiqué anteriormente, se trataba de una solución CRUD de funcionalidad sencilla, por lo que no había espacio para los equívocos y no se precisaba de indicaciones pormenorizadas hasta la extenuación. Comenzar a describir brevemente el método a realizar ya daba un resultado similar al que produciría un desarrollador con años de experiencia en la tecnología en cuestión.

La introducción de un texto indicando que se desea un método de API que reciba una imagen y que esta se guarde en una dirección SFTP producía, como por arte de magia, un método donde se incluían todas las librerías necesarias, además de agregar sus paquetes correspondientes.

El código cumplía su cometido y lo hacía correctamente. Obviamente, se le pidió que hiciese las modificaciones pertinentes para sustituir los valores de usuario y contraseña en su correspondiente archivo de configuración en lugar de directamente en el código. Y se le hubiese podido pedir, de ser necesario, mejorar aún más la seguridad indicándole hacer uso de un servicio Key Vault del proveedor Cloud. Las posibilidades de modificación, como por ejemplo redimensionar la imagen, son infinitas y están a solo unos segundos de describirle el cambio a Copilot.

El desarrollo fue tan rápido y preciso, que se procedió a realizar mejoras no solicitadas para ver sus capacidades más allá de la funcionalidad básica.

Llegados a este punto, se procedió a realizar pruebas comparándolo con el asistente común de ChatGPT. En este punto, pudimos observar que en algunos casos ChatGPT daba soluciones interesantes más allá de la creación de un método, pero sus conocimientos “obsoletos” hacían que constantemente se tuviese que revisar su código por hacer uso de librerías y métodos deprecados.

Pero, de nuevo, tener la extensión de Github Copilot integrada en Visual Studio hace que esto no sea un problema, puesto que sus capacidades de detección de código obsoleto y la adaptación de este a las últimas actualizaciones hacen que el uso de código generado por herramientas externas sea también un aporte válido.

 

Conclusiones

Al finalizar el desarrollo requerido e ir más allá, pudimos concluir que:

En los escenarios donde es válido el uso de una solución Low Code (funcionalidad básica y/o con pocas o nulas adaptaciones o personalizaciones), puede ser también válido el desarrollo clásico apoyado por IA.

Creemos que en los proyectos similares al comentado en este documento (CRUD) las diferencias de tiempo de implementación necesario se ven claramente acortadas entre el desarrollo clásico y el low-code, que pasan a ser similares.

Además, se preservan las virtudes del desarrollo clásico (control total, posibilidades de personalización, capacidad de hacer un producto escalable) reduciendo significativamente sus carencias.

En el caso de desarrollo de aplicaciones CRUD, la decisión de optar por un entorno low-code o por un entorno de desarrollo clásico con IA depende de muchos factores económicos, estratégicos y organizativos de la empresa, siendo uno de los mas relevantes el equipo de desarrollo que está manteniendo el software, ya que este es el que tiene todo el conocimiento funcional y de negocio de la compañía.

Lo que sí nos queda claro es que el tiempo de implementación deja de ser ya una diferencia a favor del low-code.

Carlos Aisa Autor
CTO | Chief Architect