Alan Zeichick | Redactor sénior | 8 de octubre de 2024
La IA generativa puede ayudar a escribir sonetos al estilo de Shakespeare, luego cambiar de tercio y redactar un plan de negocio viable basado en datos en bruto y análisis. Dados los insumos y la capacitación adecuados, la IA generativa puede incluso ayudar a crear un concepto de producto, un pegadizo jingle publicitario, un logotipo y un plan de marketing completo con asesoramiento sobre precios. Por lo tanto, no es difícil conseguir que la IA generativa ayude a los equipos de desarrollo de software a lo largo del ciclo de vida del desarrollo o incluso escriba código en Java, C++, JavaScript, SQL o cualquier lenguaje que prefiera su organización.
Para el sistema de IA generativa, la codificación no se diferencia en nada de escribir un poema en inglés, español o latín con un esquema específico de rima y métrica. Y el uso de la IA generativa para ayudar con el proceso de desarrollo de software representa una gran oportunidad: los analistas de PwC dicen que al trabajar con herramientas de generación de código con IA generativa, un equipo de desarrollo puede ver beneficios de rendimiento del 20 % al 50 % en este momento. Vemos cómo funciona.
La inteligencia artificial generativa, o IA generativa, es una tecnología en rápida evolución que puede ayudar a crear nuevo contenido extrapolando datos de entrenamiento. Los modelos de IA generativa funcionan mediante la creación y el uso de una red neuronal artificial codificada en software. Muchas redes neuronales comprenden miles de millones o incluso billones de parámetros específicos, o valores, que se "entrenan" a través del procesamiento de grandes cantidades de materiales. Afortunadamente, los modelos más eficientes pueden resultar excelentes programadores una vez que están entrenados con un conjunto razonablemente grande y diverso de ejemplos de código funcional, seguro y eficiente.
Cuando está aprendiendo a escribir código durante el proceso de entrenamiento, que da como resultado un modelo de lenguaje grande, o LLM, el sistema de IA generativa intenta predecir cuál debería ser el siguiente comando. Luego pone a prueba esa predicción; si el resultado es adecuado, los parámetros neuronales se ajustan de una sola manera. Si la predicción es mala, los parámetros se ajustan de otra forma. Con suficientes iteraciones, el sistema IA generativa ayuda a generar resultados basados en sus datos de entrenamiento. Entonces, cuando la precisión sea adecuada para el objetivo que se persigue, el sistema de IA generativa deberá generar nuevo código basado en los parámetros del imputo o el prompt. Si funciona bien, ya puedes usarlo. Y si no, bueno, es hora de que los científicos de IA descubran qué salió mal.
La buena noticia: no necesitas crear tu propio LLM centrado en el código. Eso ya lo han hecho por ti los principales proveedores de herramientas.
Conclusiones clave
En este texto, no esperes describir un programa complejo y que un sistema de IA generativa muestre una aplicación completa y lista para usar basada en el prompt. Todavía no hemos llegado a ese punto. Sin embargo, las herramientas de IA generativa se están utilizando para fortalecer el trabajo de los equipos de desarrollo empresarial, ayudándolos a mejorar la calidad del código y la productividad individual. Puede que te imagines la IA generativa como un miembro del equipo que desempeña uno o más roles.
La IA generativa es importante para el desarrollo de software porque puede ayudar a que los equipos de desarrollo sean más productivos en cada etapa del ciclo de vida de desarrollo de software. Esa cualidad resulta fundamental porque las empresas modernas funcionan con software, no hay duda de eso. Gran parte de ese software viene preconfigurado para funcionar sin mayores ajustes, como los procesadores de texto, las hojas de cálculo y los sistemas de contabilidad y recursos humanos, . Pero una ventaja competitiva proviene de la escritura de software personalizado para operaciones de backend, sitios web, bases de datos, aplicaciones móviles y más.
Pero eso presenta un desafío: para crear código de alta calidad se necesita tiempo y experiencia, ya sea con personal de desarrollo o contratistas. Cuando se necesitan nuevas aplicaciones para aprovechar una oportunidad o abordar un desafío, a menudo hay una acumulación de proyectos en la cola. La contratación de más desarrolladores es un proceso lento, al igual que su incorporación. El tiempo es oro. Con la IA generativa, se pueden llevar a producción antes las nuevas ideas, lo que ayuda a generar ingresos o ahorrar dinero, mejorar la satisfacción de los empleados y clientes y, además, ayuda a la organización a cumplir su misión.
La IA generativa puede resultar una gran incorporación para los equipos de desarrollo de software empresarial y, como es común con las herramientas que ayudan a los desarrolladores, su organización puede definir, medir y evaluar esas mejoras. Todas las plataformas de desarrollo que utilizan tecnologías modernas, como GitHub o sistemas de gestión de código fuente, recopilan métricas rutinarias sobre el rendimiento del desarrollador y del equipo, como líneas de código por día y calidad del código.
Los equipos de desarrollo que incorporan la IA generativa a todo el ciclo de vida, desde la planificación de proyectos hasta el diseño arquitectónico y el análisis de código y preguntas y respuestas, a menudo encuentran que funcionan bastante más rápido. Estas son algunas de las formas en que la IA generativa te puede ayudar:
La IA generativa puede ayudar al desarrollo de software empresarial al ayudar a mejorar la productividad de los desarrolladores y equipos individuales, ayudándoles a crear software de mejor calidad más rápido. Las áreas donde es particularmente útil incluyen la definición de arquitecturas de software, la creación de planes de productos y la generación de código.
La IA generativa también es eficaz en tareas repetitivas y genera el llamado código fijo, que es genérico para muchos programas y que un desarrollador humano puede personalizar y completar o usar en otros lugares. La IA generativa también puede ayudar a revisar el código fuente del software en busca de fallas y posibles problemas, como vulnerabilidades de seguridad y dónde la funcionalidad del código puede desviarse de los requisitos del usuario o los estándares corporativos.
Existen múltiples áreas en las que las herramientas de desarrollo basadas en IA generativa pueden actuar como asistentes para desarrolladores individuales de software empresarial o como miembros del equipo a todos los efectos. Estos son algunos de los lugares más comunes en los que la tecnología puede ayudar en la actualidad, desde el diseño de software hasta su implementación.
1. Detección y depuración de errores. Los sistemas GenAI pueden ayudar eficazmente a identificar y corregir errores en el código, o sugerir correcciones. Por supuesto, hay toda una industria construida en torno a la corrección de defectos; las herramientas comerciales y de código abierto pueden analizar el código fuente en busca de defectos funcionales o de seguridad, incluidos errores sutiles que solo podrían ocurrir si el sistema está muy cargado, o si se producen fugas de memoria, problemas con la ejecución multithread, intentos de acceder a la memoria protegida y mucho más.
La IA generativa puede agregar valor a la solución de bugs de varias formas. En primer lugar, podría utilizar prompts de datos para ayudar a analizar si el código hará lo que el desarrollador o la parte interesada pretendía, porque incluso si el código compila y se ejecuta correctamente, es posible que no realice la acción correcta o no brinde el resultado deseado. En segundo lugar, la IA generativa puede ayudar a resumir los informes de defectos de las herramientas tradicionales para ayudar a los equipos de prueba y desarrolladores a comprender los errores sutiles, encontrar patrones de código erróneo y sugerir correcciones.
2. Generador de código. La IA generativa puede automatizar la escritura de código en función de prompts o especificaciones. Como se ha mencionado, es poco probable que la IA generativa genere una aplicación de negocio compleja en el corto plazo. Sin embargo, puede ayudar a crear código fijo que los desarrolladores pueden completar, así como fragmentos de código que podrían implementar un algoritmo complejo, hacer una llamada de procedimiento difícil o acceder a recursos externos.
Por ejemplo, muchos desarrolladores saben cómo utilizar SQL para leer, escribir y actualizar información de la base de datos. Pero no es sencillo escribir procedimientos almacenados de SQL que puedan manejar tablas de bases de datos complejas y ejecutarse de manera eficiente en conjuntos de datos muy grandes, por ejemplo. Las herramientas de IA generativa pueden utilizar prompts para ayudar al programador a expresar los requisitos para el acceso a la base de datos y, a continuación, proporcionar una llamada o procedimiento SQL sugerido que se pueda copiar y pegar en la aplicación.
3. Revisión de código. La IA generativa puede ayudar a revisar la calidad, la seguridad y el cumplimiento de las mejores prácticas del código. Las revisiones de código son una parte esencial del proceso de desarrollo de software, donde un equipo analiza el código complejo en un entorno de grupo, proyectado en una pantalla o un monitor grande, con el objetivo de verificar que ofrece la funcionalidad adecuada y sugerir áreas de mejora. Los desarrolladores pueden encontrar estresantes las revisiones de código, especialmente cuando están en presencia de ingenieros de software más experimentados que no encuentran más que errores. Las revisiones de código también requieren mucho tiempo y muchas personas simplemente quieren tenerlas listas rápidamente, lo que puede resultar en una falta de diligencia.
La IA generativa puede ayudar guiando a los desarrolladores a través de una revisión preliminar del código para detectar errores obvios. Esto ayuda a los profesionales más júnior a aprender y puede acelerar las sesiones de revisión presenciales. La IA generativa también puede actuar como miembro participante del equipo de revisión de código de grupo, destacando áreas que requieran atención adicional, incluso ofreciendo su propia orientación sobre la mejor manera de realizar mejoras.
4. Documentación. La IA puede generar o mejorar automáticamente la documentación de las bases de código. Incluso con la mejor de las intenciones, los desarrolladores son propensos a preguntar: "¿En qué estaría yo pensando?" al revisar el software que escribieron solo unos meses antes. Es por eso que la documentación es tan importante en muchos niveles, incluso para la arquitectura completa del proyecto y los propósitos de módulos o microservicios específicos. Dentro de los módulos y servicios, la documentación puede explicar las decisiones tomadas para bibliotecas, API y algoritmos, especialmente cuando el desarrollador tiene una opción. Esto era por algo, pero, ¿por qué era? La IA generativa puede ayudar pidiéndole al desarrollador, mientras la codificación está en curso, que explique esas decisiones y, a continuación, amplíe esas explicaciones en una documentación fácil de entender.
Además, cuando se utiliza la IA generativa para ayudar a generar código en sí (consulta el número 2 anterior), puede escribir documentación completa que explique el porqué del fragmento de código o el microservicio y cómo utilizarlo correctamente.
5. Aprendizaje y formación. La IA generativa puede ayudar a proporcionar ejemplos y explicaciones instantáneos para mejorar las competencias de los desarrolladores. Los desarrolladores de software —incluso, o tal vez especialmente, los mejores codificadores— nunca dejan de aprender. Siempre hay nuevas tecnologías, como la IA y los microservicios, que se conectan, así como nuevas herramientas, nuevas funciones de lenguaje, nuevos patrones de diseño, nuevas vulnerabilidades de seguridad, nuevos estándares corporativos y mejores prácticas, e incluso nuevos requisitos de cumplimiento.
Si bien hay numerosos cursos y clases, así como la formación y la mentoría internas, la ayuda continua es valiosa. La IA generativa ofrece el potencial de ayudar a detectar cuándo un desarrollador tiene problemas, como cuando se producen diversos intentos de utilizar una función o una API obsoletas, y proporcionar formación instantánea y personalizada. También puede, a través de prompts, ayudar a proporcionar orientación instantánea cuando el desarrollador no sabe o recuerda cómo realizar una tarea nueva o rara vez utilizada. Es como una pantalla de ayuda, pero personalizada para esa situación exacta.
6. Refactorización. La IA generativa también puede ayudar a optimizar y reestructurar el código existente para mejorar el rendimiento. La refactorización es una parte esencial del ciclo de vida del desarrollo de software: es donde se toma una sección de código y, sin cambiar su funcionalidad, se consigue mejorar su funcionamiento. Eso puede significar incrementar su velocidad y escalabilidad, reducir su consumo de memoria, actualizar un algoritmo, aprovechar un nuevo acceso directo de microprocesador o usar una nueva instrucción de idioma. Los desarrolladores utilizan métricas de tiempo de ejecución para detectar áreas de código que son lentas, consumen demasiados recursos o provocan retrasos integrales y orientarlas a la refactorización.
La refactorización puede ser un lugar ideal para la generación de código de IA generativa, donde los desarrolladores alimentan el código problemático en el sistema y, esencialmente, preguntan: "¿Puedes hacer una versión que se ejecute más rápido?" Estamos simplificando las cosas en exceso, pero al ver qué hace el código y cómo funciona, las capacidades predictivas de la IA generativa a menudo pueden permitirle encontrar un mejor enfoque. Además, debido a que el código antiguo y el código refactorizado se pueden comparar y evaluar comparativamente, es fácil determinar los beneficios del proceso de refactorización, así como verificar que, de hecho, la funcionalidad subyacente no cambió.
7. Pruebas. La IA generativa puede ayudar a crear casos de prueba, automatizar procesos de comprobación y simular casos perimetrales. Cada metodología analizar aspectos específicos del proceso de prueba de software. Por ejemplo, el desarrollo controlado por prueba (TDD) insiste en que, antes de escribir una sola línea de código, se crean casos de prueba para garantizar que todo lo que se escribe funcione correctamente. En otras metodologías, el equipo de desarrollo puede hacer pruebas al final de un sprint; en otros, un equipo de pruebas dedicado hace pruebas. El papel de las partes interesadas en las pruebas resulta esencial y varía según la metodología: a veces, las partes interesadas participan constantemente y en otros casos solo revisan a los candidatos.
La IA generativa puede desempeñar varias funciones para ayudar a realizar y administrar pruebas. Hemos mencionado la detección de errores, pero la IA generativa también puede ayudar a escribir scripts que se puedan utilizar como herramientas de automatización de pruebas, un proceso que muchos desarrolladores encuentran tedioso. Estas herramientas mejoradas de GenAI también pueden ayudar a probar casos perimetrales, es decir, situaciones que es poco probable que se produzcan, pero que aún deben ser manejadas correctamente por un módulo de código, un procedimiento almacenado o un microservicio. Además, la IA generativa puede ayudar a revisar los casos de prueba, incluidos los escritos por humanos, para determinar si son buenas pruebas y abordan todas las situaciones probables, incluidas las condiciones de error y los intentos de hackear el código en tiempo de ejecución.
Como dijo el gran beisbolista Yogi Berra, "Es difícil hacer predicciones, especialmente sobre el futuro". La IA generativa es una nueva disciplina: los primeros ejemplos de la tecnología solo surgieron a principios de la década con productos como ChatGPT, que se centraron en generar texto, y DALL-E para crear imágenes. Muchos consumidores y ejecutivos empresariales comenzaron a poner la vista en la IA generativa en torno a 2022, hace solo dos años.
No importa cómo veas la IA generativa, la tecnología está tan solo dando los primeros pasos y sin duda encontraremos nuevos casos de uso de negocios en áreas como el desarrollo de software.
Pero vamos a dar un giro: ¿qué podemos esperar en los próximos años?
Para empezar, que la IA generativa haga todo lo que puede hacer hoy, pero mejor, en términos de apoyar a los equipos de desarrollo con la generación de código, el control de calidad, la documentación y la creación de casos de prueba. La IA generativa puede ser más conversacional y más capaz de interactuar con desarrolladores, y no desarrolladores, para guiarlos el proceso de definición de requisitos y luego convertir esos requisitos en planes de proyecto, documentación, casos de prueba y código.
Si realmente miramos a la bola de cristal, es posible que no sea necesario escribir nada para crear algún tipo de software. Los usuarios de negocios pueden simplemente decirle al sistema de IA generativa lo que desean lograr, y el software creará aplicaciones ad-hoc que realicen esa tarea exacta. Sea cual sea el futuro de la IA generativa en el desarrollo de software, es probable que tenga un enorme valor para las empresas que lo adopten.
La IA generativa de Oracle está disponible hoy en día con enormes capacidades integradas en aplicaciones empresariales, como Fusion y NetSuite, e incluidas en Oracle Database 23ai.
Una de las áreas más interesante que se deben analizar es cómo utilizar la IA generativa y Oracle APEX para el desarrollo de aplicaciones con poco código mediante una nueva función, APEX AI Assistant, que puede ayudar a los desarrolladores a realizar tareas complejas. Puedes registrarte para obtener una cuenta de Oracle Cloud Infrastructure (OCI) y obtener créditos gratuitos en la nube para probar los servicios de IA de Oracle, incluido GenAI. Pruébalo gratis.
Para una tecnología tan nueva, las aplicaciones de la IA generativa para el desarrollo de software son infinitas. Las probabilidades son que tus desarrolladores encuentren en la IA generativa un valioso asistente, y tal vez, un miembro clave del equipo.
Con los servicios de IA actuales, los desarrolladores pueden entrenar modelos personalizados, implementar herramientas de aprendizaje automático listas para usar y mejorar las aplicaciones y soluciones con capacidades de IA, sin necesidad de ser expertos en IA. Nuestro ebook muestra cómo puedes iniciar tu próximo caso de uso con 11 proyectos de IA del mundo real.
¿Cómo puedo utilizar la IA generativa en la codificación?
La IA generativa se puede utilizar durante muchas partes del proceso de desarrollo de software. Para la codificación, la IA generativa debe estar entrenado con el lenguaje de programación específico utilizado para el proyecto. Dale al sistema órdenes muy específicas, llamados prompts, para lo que deseas hacer, y debería poder generar código fuente terminado que esté listo para ser compilado y ejecutado o agregado a tu sistema de gestión de código fuente o repositorio en línea, como Github.
¿Puedo crear software con IA?
Puedes crear software utilizando la IA generativa de múltiples formas. Puede facilitar la generación de código, aunque en esta etapa del desarrollo de la tecnología, ese código solo realiza funciones relativamente simples. El valor real de la IA generativa, al menos ahora, es ayudar a tu equipo de desarrollo con tareas como la planificación de proyectos, el diseño de la arquitectura, la generación de casos de prueba, la realización de revisiones de código y la escritura de documentación.
¿Por qué supondrá la IA un desafío en el desarrollo de software?
La IA generativa sigue siendo nueva, especialmente para su uso dentro de un equipo de desarrollo. Podría decirse que el mayor desafío será la aceptación de la tecnología por parte de desarrolladores escépticos que se sienten cómodos con el status quo y reticentes al cambio en su método de trabajo, cadenas de herramientas y procesos. También puede haber algunos que ven la IA generativa como una amenaza potencial para sus carreras.
Más allá de eso, cada organización tendrá que generar confianza en el software creado con IA generativa. ¿Es el código sólido, seguro y eficaz? ¿Los casos de prueba son precisos y ofrecen cobertura de código completo? ¿La documentación cumple los requisitos? Las etapas iniciales del desarrollo de software asistido por IA generativa serán en gran medida experimentación. Los resultados, si la tecnología se aplica correctamente, deben mejorar en gran medida la productividad de los desarrolladores, llevando mejor software a producción más rápido y a un costo menor, para ayudar a la organización a cumplir su misión.
Finalmente, la ley aún está evolucionando en cuanto a la propiedad y la protección del código generado por la IA. ¿Se puede registrar un copyright en un software en el que se utilizó la IA para generar parte del código? Si utiliza un sistema comercial GenAI, ¿las condiciones del servicio exigen que devuelvas algún output al propietario del modelo? Deberías analizar estos problemas antes de embarcarte en el uso de la IA generativa para el desarrollo de software.
