inteligencia artificial y desarrollo de aplicaciones programacion

La Inteligencia Artificial copa cada vez más titulares. Asociada fundamentalmente al machine learning, no siempre se entiende que afecta al mundo del software y al desarrollo de aplicaciones Los usos de la misma son múltiples y la automatización es una de las principales beneficiadas.

Publicidad

Hablamos de RPA, desarrollo e Inteligencia Artificial, un cóctel que promete mejorar claramente la productividad empresarial. Los CIOs, de hecho, consideran que la inversión en RPA e Inteligencia Artificial debería ser una de las prioridades de las empresas tal y como se desprende de un informe de IDC Research España en el que se pone de manifiesto que la automatización de procesos a través de procesos digitales y la inteligencia artificial son una las prioridades de inversión más importantes en el ámbito de la digitalización al menos para el 41% de los CIOS en 2020.

En ese informe se revela que el mercado español de software de automatización robótica de procesos alcanzará una tasa de crecimiento anual compuesto del 44,5% hasta 2023. Esto tiene sus consecuencias de tal forma que las empresas dejarán de buscar habilidades físicas y manuales para empezar a hacerlo con aquellos perfiles que destaquen en habilidades tecnológicas, sociales y emocionales.

Momento de cambio

Estamos ante un momento de cambio. Debido al auge que va a experimentar la automatización, las empresas van a empezar a replantearse la organización del trabajo. Una reorganización que afectará a los empleados que van a ver cómo van a cambiar de ocupación y las empresas van a invertir en formación para que éstos entrenen estas nuevas habilidades.

Tal y como se desprende del estudio, la mayoría de las empresas son conscientes de que la implantación de la automatización tendrá un impacto positivo en su organización. Entre ellas destacan que va a haber una mayor satisfacción del empleado, una mejora en la atención al cliente, la creación de nuevas oportunidades de ingresos, diferenciación competitiva y ahorro de costes.

Sí, la automatización va a cambiar la forma en que las empresas operan. Si a este tipo de herramientas se le añade el vector de la inteligencia artificial, gracias a la cual la programación pasa a un segundo plano, ya que no va a ser necesario tener unos conocimientos de programación para el desarrollo de aplicaciones gracias a las plataformas de RPA.

Las ventajas para las empresas de la automatización son cada vez más valoradas. No hace falta darse cuenta para saber por qué las empresas miran con ojos golosos a estas soluciones. Pablo Méndez, especialista en IA y gerente de Altia, da algunas de estas claves: “Las máquinas trabajan 24 horas al día, no necesariamente necesitan luz para trabajar (pueden hacerlo a oscuras) y pueden trabajar en condiciones extremas, no esperan mejorar sus condiciones de trabajo (mejoras salariales, reducción de jornada, conciliación familiar, …), no fuman ni toman café, se les prepara para su trabajo en minutos (instalando un software) y no semanas o meses, tienen menores errores que los humanos en tareas sencillas recurrentes, etc. Esta visión “cruda” se traduce en frases como “mejora de la productividad”, “ahorro de costes”, “mejora de procesos” (hacer más en menos tiempo), “mejor calidad” (menos errores en fabricación), “más trazabilidad” (todos los datos de producción disponibles), etc. El problema es que la robotización y la adaptación a la IA no serán una opción: en una visión darwiniana del problema, la empresa que no se adapte se extinguirá”.

Es decir, como cualquier tecnología disruptiva, la automatización y la RPA entra por donde puede hacerse un hueco que no es otro que el de la reducción de costes, y además, en este caso, la reducción de problemas derivados. Pero las ventajas son mucho más amplias. Como asegura Fernando García Estevez, responsable de Automatización en IBM, la ventaja de tecnologías como RPA, “es la eliminación de tareas repetitivas por parte de los empleados, mejorando por un lado su productividad al focalizarse en tareas de mayor valor añadido, y por otro lado reduciendo los errores que se producen inevitablemente cuando una persona ejecuta una tarea monótona y repetitiva durante mucho tiempo. Integrando estas tecnologías RPA con las soluciones de orquestación de procesos las empresas podrán estructurar, optimizar y automatizar sus procesos empresariales de forma más eficiente al delegar en bots tareas que requieren un alto consumo de recursos y tiempo pero que no aportan valor de negocio”.

La inteligencia artificial va a cambiar tecnologías como RPA. Xabi Uribe-Etxebarria, fundador y CEO de Sherpa.ai, es una de las voces más reconocidas dentro del panorama nacional e internacional de la inteligencia artificial. En su opinión, antes de nada hay que entender que es la IA y diferenciarla de la robotización: “la Inteligencia Artificial principalmente es software, se trata de simular comportamientos del cerebro humano con software. Es cierto que necesitas unos servidores o algún tipo de hardware para procesar los algoritmos pero cuando se habla de IA casi siempre se habla de algoritmos como Redes Neuronales, GAN, etc que son software. La robotización es otra cosa. Se trata de simular o ayudar al humano en trabajos más físicos. En este caso normalmente sí que se asocia a robots físicos, pero también es cierto que esos robots son accionados por un software que en la mayoría de los casos y cada vez más tienen inteligencia artificial”.

La sociedad asocia la IA a los robots físicos pero la RPA también se beneficia de la inteligencia artificial. La introducción de la Inteligencia Artificial y la automatización robótica de procesos están transformando el mundo del software y la forma en la que se desarrolla. Gracias a estas dos herramientas, se están estandarizando tareas rutinarias de este trabajo y se cuenta con una importante ayuda para identificar mejoras en el desarrollo de nuevas aplicaciones desde el punto de vista del cliente. Appian es la compañía que lidera las plataformas RPA y una de las que más está apostando por la IA. En este sentido, desde esta multinacional aseguran que “con la inteligencia artificial, los procesos de automatización van a tomar decisiones sin ningún tipo de orden humana. El binomio IA y RPA promete introducir en el mundo automatizado muchos más procesos, afectando a todo el tejido productivo y a la práctica totalidad de los sectores, además de aportar un incremento espectacular de la productividad, ya que estas tareas son más eficientes y menos costosas cuando se realizan por cualquier tipo de máquina o de software”.

Lenguaje natural y tendencias

Si se habla de Inteligencia Artificial, el procesamiento del lenguaje natural es donde más se ha avanzado en lo que se refiere a la automatización de procesos. Rafael Quintana, regional director de Qlik en España y Portugal, afirma que “efectivamente, el procesamiento del lenguaje natural o NLP ha sido uno de los campos donde más aplicación se le ha dado en los últimos años. En el campo del business intelligence, por ejemplo, ya es posible “conversar” con nuestros datos de manera natural. Esto supone una gran mejora en la experiencia de uso, especialmente para usuarios de negocio. Hace posible que, por ejemplo, para bucear en nuestros datos, el usuario de negocio no precise de queries o conocimientos avanzados, sino que use algo tan natural como su voz y el lenguaje. En el sector de la inteligencia de negocio, estamos pasando de simplemente visualizar nuestros datos a interactuar e incluso hablar con ellos (por ejemplo, realizando preguntas mediante voz)”.

Pero aunque el procesamiento del lenguaje natural representa ahora mismo la quintaesencia de la IA en la automatización de procesos, hay un factor que también cambiará este mundo tal y como se conoce hasta ahora. Uno de ellos es el que se refiere a la programación y concretamente los asistentes de programación inteligente que cambiarán de forma radical la manera en la que se desarrollan las aplicaciones empresariales. Tal y como afirma Pablo Díez, CTO de UGROUND, “los asistentes de desarrollo, ya sea para generar código o para recomendar el uso de una función u objeto, permiten que los desarrolladores vayan más rápido y cometan menos errores en su trabajo. Gracias a la IA en los entornos de desarrollo, no solo se mejora el código fuente, sino que a demás se reduce el tiempo de pruebas, dado que al final el código está estandarizado por la propia máquina, y se mejora la ejecución del mismo. Esto, al final, mejora la experiencia del usuario final, que es el propósito de nuestro trabajo”.

Es una realidad cada vez más cercana: la inteligencia artificial va producir cambios inevitables en el sector de la programación y la labor de los programadores, en el sentido de que van a tener que realizar una reorientación de sus habilidades, ya que el perfil de desarrollador que se busca cambiará. Los programadores tendrán que especializarse para ejercer su profesión en entornos de automatización marcados por el auge de la IA. Como explica Franck López de UiPath, “al igual que un robot diseñado para automatizar cualquier otro proceso, los asistentes de programación inteligente no van a quitar los trabajos de los programadores, ya que siempre serán necesarios para aportar la creatividad humana que necesita la tecnología. La IA no ha sido creada por ordenadores ni robots sino por humanos y siempre hay un equipo de programadores detrás que revisa, monitoriza, actualiza y reprograma donde sea necesario. La inteligencia artificial siempre va a necesitar las capacidades humanas para mantenerla en funcionamiento”.

La inteligencia artificial va producir cambios inevitables en el sector de la programación y la labor de los programadores

Actualmente muchos entornos de programación incluyen funciones inteligentes para guiar al programador en sus tareas. Si bien en la mayoría de los casos nos sugieren la mejor manera de autocompletar el código, pocos lo hacen basados en el contexto donde nos encontramos. “Para incluir más contexto, pero sobre todo para aprender de los mejores y no solo basarse en reglas, estos sistemas ya están aprendiendo de repositorios de código abierto en GitHub o permitiendo aprender de los propios de la empresa. Quizás los programadores podrán en un futuro centrarse en la estrategia o arquitectura a alto nivel dejando los detalles de la implementación a los asistentes, pero actualmente, la ayuda que reciben no es suficiente para confiar ciegamente en las sugerencias y muchas veces no es mejor que una simple búsqueda en Google”, afirma Susana Duran, Conversational AI & Mobile Director de Sage.

La clave de esta revolución radica en que en gran medida, los sistemas de IA no se programan, sino que se aprovechan del machine learning. Esto hace que el programador disponga de unos conocimientos en otras materias, además de los lenguajes de programación, tales como conceptos matemáticos, físicos o lingüísticos. Como asegura Jesús Guerra, Manager de Innovación y Tecnología de Oracle, “para facilitar su trabajo, los programadores se apoyan en este tipo de asistentes de programación inteligente, sin los cuales no sería posible construir los sistemas de IA con las garantías y funcionalidades requeridas en cada caso”. De esta forma, “los programadores cada vez contarán con más herramientas que les faciliten realizar ciertas actividades en su trabajo, con sistemas capaces de entender y en algunos casos predecir el objetivo a completar y proponer soluciones al desarrollador. El trabajo del programador deberá evolucionar para tener en cuenta estas soluciones, saber en que casos le pueden permitir avanzar más rápido y evitar errores en su trabajo”, tal y como explica Fernando García de IBM.

Depuración de errores

La depuración de errores es una de las claves mientras se desarrolla cualquier aplicación. Se trata de eliminar los errores desde el código. Mediante herramientas específicas los desarrolladores inspeccionan dicho código, encuentran los errores que se hayan producido en la programación y los corrigen. Es, en definitiva, una ardua tarea que la IA promete simplificar o incluso eliminar dentro de la labor que tiene cualquier programador. El desarrollo de aplicaciones, más aún en entornos ágiles y DevOps, requiere de una estrategia clara de Quality Assurance (QA) para la identificación continua y lo más temprana posible de defectos. Albert Tort, CTO de Sogeti, considera que “esta es la forma de reducir riesgos y poner en producción software con ciertas garantías de calidad. En la actualidad, el número de posibles pruebas a realizar crece exponencialmente (distintos tipos de usuarios, de plataformas, de dispositivos, más operativas, más funcionalidades…). No podemos probar, por tanto, todas las casuísticas. Y allí, nuevamente, se requiere inteligencia” y es donde la Inteligencia Artificial va a jugar un papel relevante.

Xabi Uribe-Etxebarría es un convencido que cree que la IA va a jugar un papel esencial en esta tarea. En su opinión, “se trata de uno de los aspectos en los que la IA tiene un mayor potencial para facilitar el proceso de creación tecnológica. En un contexto en el que cada vez hay un mayor volumen de datos que analizar y someter a prueba con el objetivo de minimizar los posibles errores de las aplicaciones, la IA tiene la capacidad de acelerar este proceso al no requerir la intervención humana”. Y no requerir la intervención humana, además de hacer que el programador se encargue de tareas más importantes, posibilita que esa Inteligencia Artificial saque adelante herramientas con menos errores, cumpliendo además con el famosos time-to-market. Hay que tener en cuenta que los departamentos de TI de una empresa reciben un promedio de 3.000 alertas diarias sobre fallos de sus aplicaciones y que de estos tan solo el 26% son realmente importantes para el negocio y requieren intervención. Sólo con este dato y tal y como señalan desde Dynatrace, “nos podemos hacer una idea clara del valor que aporta la IA en tiempo y en recursos. La complejidad para controlar la nube ha crecido por encima de la capacidad humana y está mermando la capacidad de los equipos de tecnología para poder ejercer el control de las organizaciones debido a que antes de actuar han de discernir cuales de estas alertas son críticas o no para el negocio. Este proceso de selección requiere un 15% del tiempo total de los equipos y un coste medio de 1,35 millones de euros al año”.

Los desarrolladores suelen tener dos problemas cada vez tienen más datos con los que trabajar y además se les exige sacar adelante aplicaciones en el menor tiempo posible. Esto sólo implica que muchas aplicaciones salen con muchos errores con lo que a posteriori es necesario estar parcheando de forma continua la aplicación. Por ello, la Inteligencia Artificial es un campo en el que se resuelven buena parte de estos problemas. Tal y como afirman desde Appian, “la depuración de errores es uno de los procesos críticos en el desarrollo de software que se ha transformado radicalmente con la aplicación de la Inteligencia Artificial. A medida que crece de forma considerable el volumen de datos que debe someterse a pruebas, crecen de manera directamente proporcional la posibilidad de que se produzcan errores humanos y que aparezcan fallos no detectados. Las herramientas de depuración de errores basadas en inteligencia artificial y algoritmos de aprendizaje automático pueden desempeñar un papel clave en esta área, ayudando a corregir bases de código sin intervención humana y potenciando el valor del trabajo del ingeniero de pruebas hacia tareas menos repetitivas”.

Y entonces, apareció la seguridad

La seguridad es una de las exigencias de las empresas. Ya han quedado atrás los tiempos en que los directivos consideraban eso de “a mi no me va a afectar”. La realidad es que todas las organizaciones, independientemente del tamaño y del sector al que pertenezcan, son conscientes de que pueden sufrir un ciberataque en cualquier momento. Sin embargo, el time-to-market se impone sobre cualquier otro elemento y la seguridad no se aplica al desarrollo de las aplicaciones desde el primer momento, lo que hace que esas aplicaciones tengan, en muchas ocasiones, agujeros que pueden ser aprovechados por cibercriminales. Según el estudio “Estado de la seguridad del software”, hasta el 85% de las aplicaciones tiene alguna brecha de seguridad, de las cuales un 13% supone una amenaza crítica. El hecho de que el informe revele que el 69% de los fallos se puede mitigar, refuerza la idea de que, aplicando Inteligencia Artificial en la fase de depuración de errores, la posibilidad de que este ratio descienda es real.

La IA, más concretamente Machine Learning, puede solventar este problema. En soluciones automatizadas, de hecho, juega un papel más que importante. Pero hay que diferenciar entre seguridad del sistema y de las aplicaciones, en la que los retos son similares a cualquier otro entorno, y la seguridad en la ejecución de los bots. En este segundo caso, y tal y como afirma Fernando García de IBM, “un bot replica las tareas que una persona haya realizado previamente, y tendrá el acceso y permisos que tenga esa persona o que se le hayan dado durante el desarrollo, por lo que no debería suponer un problema de seguridad añadido por el hecho de la tarea esté automatizada frente a los requerimientos de seguridad necesarios en tareas realizadas por personas. Además, gracias a la inclusión de inteligencia artificial durante el desarrollo y ejecución de los bots, se pueden fijar unas salvaguardas, o niveles mínimos de confianza, para que el sistema continúe ejecutando la tarea, y definir las posibles excepciones y acciones a realizar cuando su nivel de confianza baje de un cierto umbral”.

Como hemos dicho, la seguridad es un aspecto fundamental durante el entrenamiento de los sistemas automatizados pero es necesario recordar que “dicho entrenamiento permitirá al sistema comportarse de una manera predecible ante un número muy elevado de situaciones reales. Dichos escenarios tienen, en la mayoría de los casos, una componente de seguridad muy importante. Evitar que un sistema de navegación proporcione acciones erróneas, proporcionar predicciones médicas fiables o realizar cálculos de riesgos con la mayor exactitud son solo algunos ejemplos en los que la IA debe proporcionar a los sistemas automatizados las suficientes garantías en el capítulo de la seguridad. La única forma de conseguir ese objetivo es incluyendo todos los aspectos de seguridad durante el entrenamiento de los sistemas de IA” afirma Jesús Guerra de Oracle.

Es ingenuo pensar que absolutamente todo lo que el programador querrá implementar vendrá guiado o sugerido por un sistema de IA, un programador experto aplicará creatividad y el uso de las tecnologías que domine más el dominio del negocio hará que muchas veces no exista una guía completa posible. Pero como afirma la portavoz de Sage, “aquellos caminos por los que podamos ser guiados, serán menos propensos a errores ya que el sistema los conocerá y habrá estudiado los posibles errores o excepciones que deban contemplarse. Incluso las recomendaciones actuales solo son válidas en un determinado porcentaje ya el criterio y experiencia del programador prevalece a las decisiones de la IA. ¿Esto lo hace inseguro? Esto de momento lo hace más efectivo en determinados casos, pero con el tiempo estos sistemas sabrán adaptarse y nos ofrecerán guía seguras inclusos para los más experimentados”.

Veremos herramientas con capacidad de aprender y con suficiente experiencia en entornos muy concretos y definidos 

Como conclusión podemos extraer que la inteligencia artificial creará entornos más seguros pero si se tienen en cuenta algunos condicionantes como asegura Albert Tort de Sogeti: “Siempre que tengan un buen motor de aprendizaje que permita reaccionar, actuar sistemáticamente y descubrir reacciones más rápido que un humano. Aún así, uno de los mejores aceleradores para el aprendizaje en IA es la habilidad humana de buscar soluciones ante retos desconocidos (muy comunes en el ámbito de la seguridad día a día). En la combinación de IA y de habilidades humanas encontramos la fórmula de un mayor éxito”.

Programar sin programadores

Llegados a este punto sólo queda intentar hacer de adivinos para descubrir si alguna vez se podrá desarrollar una aplicación sin necesidad de recurrir a la labor humana. De momento, ya tenemos plataformas low-code e incluso no-code que permiten crear aplicaciones sin apenas tener conocimientos de programación, pero ¿llegará un momento en el que lancemos a un asistente de vos la creación de una determinada aplicación y sea una máquina la que lo desarrolle en un breve periodo de tiempo, sin errores y sin fallos de seguridad? Pues parece ser que no, al menos en el corto o medio plazo. Albert Tort considera que “pasará tanto tiempo como el que vamos a necesitar para pasar de la Narrow Artificial Intelligence (NAI), en la que ya somos capaces de abordar ámbitos específicos de lo que un humano es capaz de realizar, a la General Artificial Intelligence (GAI), en la que una máquina sea capaz de razonar de manera genérica ante cualquier situación creativa, que es lo que nos distingue como humanos. La programación tiene su valor en su proceso creativo vital y, hoy por hoy, esta creatividad con alma y sentimientos nos continúa identificando como humanos. El software es parte de la sociedad y requiere de estos elementos”.

Sin embargo, en determinados entornos y si se trata de aplicaciones sencillas y que no son esenciales en el negocio de una empresa, sí es posible que veamos esta posibilidad con más cercanía. Así lo afirma el portavoz de IBM que asegura que “veremos herramientas con capacidad de aprender y con suficiente experiencia en entornos muy concretos y definidos donde será posible que la intervención humana sea mínima o nula con ciertas prevenciones. Para otros entornos más complejos o heterogéneos creo que todavía estamos lejos de disponer de este tipo de soluciones”. En los próximos años veremos como cada vez más, los entornos de desarrollo integrado nos ofrecen componentes inteligentes que nos guían y sugieren las mejores alternativas de código, sugerencias de patrones o avisos sobre errores potenciales que nuestro código va a tener si seguimos en esa línea de programación. “Aunque no queda tanto para tener asistentes que liguen las tecnologías low code o no code con asistentes que a partir de nuestras ordenes creen soluciones automáticamente, esto generará soluciones simples. La creatividad y conocimiento necesario para programar soluciones complejas es difícil de imaginar en los asistentes virtuales que conocemos hoy en día. Sin embargo, no podemos descartar que para pequeños módulos si se genere automáticamente el código que el programador ensamble como una pieza en el puzle que vaya diseñando. Dicho esto, el momento donde las tengamos herramientas de programación autónoma llegará y será más pronto que tarde”, afirma Susana Durán de Sage. Una opinión que comparte Jesús Guerra de Oracle: “Existen diferentes disciplinas que están investigando sobre este nuevo campo tales como: self-coding, self-testing, AI-aided programming, etc. Muchas iniciativas se encuentran en fase de laboratorio, y existen interesantes referencias al respecto lideradas por el MIT y universidades tan prestigiosas como Standford. Es difícil predecir las fechas y las soluciones que aparecerán en este campo tan pionero. Lo que sí es cierto es que será una realidad en un futuro próximo”.