fbpx

¿Puede la IA desarrollar aplicaciones realmente? Presente y futuro del Intelligent Coding

13 Sep 2022

Hace algo más de un año nos encontrábamos hablando sobre los inicios del Intelligent Coding, con iniciativas como GitHub Copilot o GPT-3. A día de hoy estos proyectos se acercan cada vez más a la realidad, y de hecho GitHub Copilot está disponible desde junio (a través de una suscripción) para cualquiera que quiera utilizarlo. Este progreso hace que muchos nos preguntemos hasta donde llegan las posibilidades de la Inteligencia Artificial en el mundo del desarrollo. ¿Podrá la IA programar realmente de forma independiente? ¿Ayudarán estos programas a reducir el problema del déficit de talento en la industria tecnológica? ¿Cuál es el presente y el futuro de la IA en el mundo del desarrollo? Aunque no tenemos una respuesta exacta a estas preguntas, en este artículo trataremos de analizar las posibilidades: desde obtener una imagen de un perro en monopatín hasta asegurar el mantenimiento de aplicaciones o llevar a cabo desarrollos complejos.

Alternativas en el mercado del Intelligent Coding

A día de hoy hay una gran suite de productos y soluciones que va mejorando constantemente. De hecho, ya comienza a haber competencia y existen distintas alternativas que en VASS estamos empezando a testar en algunos proyectos para descubrir todas las posibilidades. ¿Y cuáles son estas soluciones a día de hoy?

  • GitHub Copilot es una de las alternativas más potentes, ya disponible en el mercado.
  • GPT Code Clippy es una alternativa ligeramente diferente en la forma de trabajar, ya que con ella tendrás que entrenar tu propio modelo.
  • Por su parte, grandes compañías como Alibaba o Google están desarrollando sus propias soluciones.
  • También existen soluciones peculiares como la de Microsoft, con una herramienta que permite codificar directamente una interfaz de usuario (UI), dibujando la pantalla. Es decir, que codifica el front de cualquier aplicación partiendo de un dibujo base.
  • Por último, aparecen otras tecnologías no tan aplicadas al mundo del desarrollo pero bastante curiosas, como Dall-E, una IA capaz de generar imágenes a partir de una descripción como “Un perro negro montando en patinete por una calle de Nueva York”.

Es importante entender que el desarrollo va mucho más allá de crear una simple imagen, ya que requiere de un contexto. Por ejemplo, serán distintas las necesidades de un retailes que las de un banco, y podrán necesitar distintas funcionalidades. La lógica de la IA no será todavía capaz de contextualizar, y este parece uno de los grandes retos del Intelligent Coding.

Intelligent Coding para el mantenimiento inteligente de aplicaciones

Uno de los campos en los que la Inteligencia Artificial sí podrá ser de gran ayuda es el del mantenimiento inteligente de aplicaciones. En este caso, se reduce la complejidad del mantenimiento, permitiendo que perfiles con menor experiencia o conocimiento puedan encargarse de esta tarea. Las herramientas IA darán proposiciones para arreglar, modificar o tomar decisiones sobre ciertas partes del código, y es algo más sencillo que el desarrollo de código desde cero. Esta sí que parece una aplicación muy real y posible del Intelligent Coding, que reducirá las necesidades de personal especializado (o le permitirá dedicarse a otras tareas).

Pero, ¿qué pasa con el desarrollo desde cero? ¿Será realmente posible?

Desarrollo de aplicaciones desde cero con herramientas de Inteligencia Artificial

Más allá del mantenimiento de aplicaciones, nos planteamos si las áreas de negocio de las compañías podrían programar sin necesidad del área técnica (con aplicaciones No-Code). Mediante lenguaje natural podrías pedir a la herramienta qué quieres que haga, pero esto no es tan sencillo. En ocasiones, una explicación exacta de la funcionalidad podría ser incluso más compleja que la escritura del código. Es cierto que podrían desarrollarse aplicaciones sencillas, pero la cosa se complica cuando hablamos de grandes aplicaciones, con numerosas casuísticas, detalles, interdependencias, etc.

El reto a futuro es por tanto lograr simplificar el desarrollo de estas aplicaciones más complejas y hacer realmente viable un desarrollo guiado por el lenguaje natural. Otras barreras que encontramos y que hacen pensar que el papel del equipo de IT, desarrolladores, ingenieros, etc. seguirá siendo fundamental son:

  • En primer lugar, el usuario de negocio a día de hoy no suele conocer cómo están construidas las aplicaciones, cuáles son las dependencias, las integraciones a realizar, etc. Por el momento, no parece que la IA sea capaz de asumir estas ciertas variaciones.
  • Además, los escenarios son muy complejos a nivel de arquitectura, y tan importante es codificar como tener una buena base. Por ejemplo, en aplicaciones con gran demanda, con necesidad de aislar componentes, etc., será necesaria una persona que diseñe toda la arquitectura necesaria. Igualmente, si entramos en el mundo de la física cuántica y la computación cuántica, sus términos no parecen todavía asumibles por la IA.
  • Por otro lado, preocupa que la forma de aprender de la IA genere problemas de seguridad. Estos modelos se entrenan a base de un gran volumen de líneas de código, pero lo que hoy es seguro puede no serlo en apenas unos meses. Además, ya hemos observado cómo en algunos proyectos no siempre recomienda la mejor solución. Todo esto nos lleva al siguiente riesgo: los perfiles poco especializados.

¿Profesionales con menos experiencia para manejar las herramientas de Intelligent Coding?

Teniendo en cuenta que la IA no es infalible, tenemos un nuevo problema. Si una herramienta de Intelligent Coding ofrece una solución que tiene buena pinta (pero no es la mejor), probablemente un perfil junior o con poco conocimiento tomará como bueno el criterio. En ocasiones, estos errores no se detectarán hasta que se realice una integración o un QA, y esto podría ser un problema en los desarrollos. Por tanto, ¿cómo utilizar estas herramientas a día de hoy?

Por el momento, la IA será una ayuda para acelerar los desarrollos, pero requerirá de perfiles técnicos capaces de supervisarla correctamente (o podrá utilizarse en tareas como el mantenimiento u otras poco exigentes). Pero esto no significa que no sea un avance importantísimo, ya que nos ayudará a resolver los problemas de escasez de talento y permitirá que algunos perfiles lleguen a especializarse en tareas de mayor valor que las que realizan en la actualidad. En definitiva, el Intelligent Coding cambiará la forma de trabajar de los equipos de desarrollo, impulsará la transformación digital en que se encuentran sumergidos la mayor parte de los negocios y resolverá, hasta cierto punto, los problemas de escasez de personal especializado.

Share This