A menos que haya estado viviendo aislado del mundo durante los últimos meses, sabe que OpenAI ha sacudido seriamente el mundo de la tecnología. El impresionante algoritmo de ChatGPT, ahora en versión beta para que todos lo puedan usar, puede generar resultados textuales increíblemente impresionantes con indicaciones simples. Y los resultados son creativos y completos, con capacidad para escribir artículos, guiones, poemas, letras de canciones y mucho más.
Pero quizás su faceta más disruptiva es el potencial para generar código sorprendentemente complejo y preciso.
Habiendo visto ChatGPT en acción, casi todos los expertos en desarrollo de software están de acuerdo en que la IA generativa es el futuro de la programación. Sin embargo, todavía no estamos seguros de cómo será la relación entre el programador y el asistente de IA.
ChatGPT es poderoso, como un autocompletado de texto con esteroides, pero no puede resolver todos los problemas de TI. Lo más probable es que no reemplace la necesidad de desarrolladores de software talentosos en el corto plazo. Sin embargo, los asistentes de IA -sin duda- acelerarán el ritmo del desarrollo y la experimentación de software. Esto tendrá un impacto permanente en los flujos de trabajo de codificación futuros, lo que influirá en una nueva clase de talento y mejores prácticas que probablemente surgirán e implicarán trabajar junto con un algoritmo.
Entonces, ¿cómo alterará exactamente la IA de generación de código el desarrollo de software y cuáles son las repercusiones? Esta es una pregunta que planteé recientemente en Twitter y LinkedIn que obtuvo algunas respuestas interesantes. A continuación, resumiremos lo que la IA de generación de código permitirá a los programadores individuales y las empresas en general. Veremos qué soluciona y qué no soluciona . También consideraremos qué nuevas habilidades se requerirán para trabajar de manera más efectiva en esta nueva era de programación respaldada por IA.
Generación de código AI: ¿Qué resuelve?
Generación instantánea de funciones y scripts. A nivel micro, la generación de código es muy buena para escribir funciones más rápido. “La IA es un autocompletado mejor”, escribió Jens Neuse, fundador de WunderGraph. “Aprendí rápidamente a escribir comentarios y código para ayudar a IA a sugerir lo que necesito”.
Como tal, la generación de código acelerará significativamente el ritmo de la programación. Por ejemplo, le pedí a ChatGPT que escribiera una función de JavaScript que tomara el cumpleaños de un usuario y calculara su edad, y este es el resultado.
function calculateAge(birthday) { const currentDate = new Date(); const currentYear = currentDate.getFullYear(); const birthYear = new Date(birthday).getFullYear(); const age = currentYear - birthYear; return age; }
Crear código de unión entre componentes. La integración con SaaS estándar puede ser un problema para algunos desarrolladores, ya que implica leer detenidamente la documentación de la API y probar las llamadas. Sin embargo, el autocompletado avanzado podría reducir el tiempo que lleva generar código que llame a fuentes externas, como API y bibliotecas comunes, en varios idiomas. Esto podría reducir significativamente el tiempo y el esfuerzo de escribir un código estándar que integre datos de aplicaciones de terceros.
Por ejemplo, a continuación un fragmento de curl generado desde el área de juegos de OpenAI que llama a la API de Salesforce y solicita una lista de clientes actuales:
curl --request GET \ --url https://yourInstance.salesforce.com/services/data/v20.0/query \ --header 'Authorization: Bearer yourAccessToken' \ --header 'Content-Type: application/json' \ --data '{ "query": "SELECT Name, Email, Phone FROM Account" }'
Habilita una experimentación más rápida. Los ingenieros a menudo quieren probar una nueva función para ver si funciona, pero la programación manual de una nueva aplicación para cada idea a medias puede consumir recursos. Sin embargo, los programadores podrían generar prototipos rápidamente con un conjunto de herramientas de generación de código como ChatGPT o Copilot. Esto hace que sea mucho más fácil probar rápidamente las ideas.
Mayor agilidad en general. Dada la mayor velocidad, la generación de código puede aumentar la agilidad general del negocio. Dado que gran parte de los negocios modernos están vinculados al diseño de software, la creación acelerada de código da como resultado pivotes más rápidos, lo que permite a la empresa responder a nuevas funciones y solicitudes.
Reducir la deuda técnica. No sorprende que muchas empresas se enfrenten a una deuda técnica cada vez mayor. Esto podría dejar a una empresa luchando por adoptar nuevas tecnologías para mantenerse al día con el cambio. La generación de código impulsada por IA podría ayudar en la conversión de código, lo que ayudaría a eliminar las dependencias de los lenguajes de programación heredados.
Por ejemplo, OpenAI convirtió fácilmente la función de cálculo de la primera edad en el lenguaje de programación Go:
package main import ( "fmt" "time" ) func calculateAge(birthday time.Time) int { currentDate := time.Now() currentYear := currentDate.Year() birthYear := birthday.Year() age := currentYear - birthYear return age } func main() { birthday := time.Date(1998, 11, 25, 0, 0, 0, 0, time.UTC) age := calculateAge(birthday) fmt.Println(age) }
¿Qué no resuelve (todavía)?
Fricción de pipeline de implementación. El hecho de que pueda generar fragmentos de código no significa que tenga una aplicación completamente funcional implementada para uso público. Todavía hay innumerables pasos entre el código y la punta de los dedos del usuario. Y aunque la integración y entrega continuas (CI/CD) se está automatizando cada vez más, todavía implica mucha intervención manual.
¿Qué empresas son los proveedores más importantes de IA e hiperautomatización? Haga clic aquí para ver la lista corta de los Top 10 en IA/hiperautomatización de Acceleration Economy, seleccionada por nuestro experto equipo de analistas profesionales
Uniendo la gran arquitectura. En el momento de escribir este artículo, las utilidades de generación de código no conciben bien el panorama general. A nivel macro, hay muchas decisiones arquitectónicas a considerar, como estructuras de código, marcos de desarrollo y patrones de diseño generales. Los ingenieros deben elegir qué entorno de nube utilizar y cómo integrar las herramientas adecuadas para ayudar a que sus aplicaciones se escalen correctamente.
Seguir el ritmo de los cambios de integración. Además, la generación de código impulsada por IA no está necesariamente actualizada con SaaS. Mantener las integraciones de API es complicado debido a la interfaz implícita creada entre el consumidor y el proveedor. Los cambios simples en el extremo del proveedor, como los nombres de los end-points, la autenticación o los tiempos de respuesta, pueden causar interrupciones si el consumidor del cliente no se actualiza constantemente con cada cambio de versión menor.
Vulnerabilidades de la cadena de suministro de software. El hecho de que un bot de IA cree su código no significa que ese código sea seguro. Las organizaciones seguirán necesitando un análisis de seguridad cibernética adicional y una vista de toda la plataforma de software para auditar posibles vulnerabilidades. La auditoría de seguridad eficiente requerirá un tipo diferente de automatización que se especialice en escanear software contra una base de datos de vulnerabilidades continuamente actualizada.
¿Qué nuevas habilidades requerirá?
Saber qué preguntas hacer. Trabajar con un asistente de IA es similar a trabajar con un motor de búsqueda: necesita saber qué preguntas deben hacerse. Y así como el público en general tardó un tiempo en aprender cómo realizar consultas de palabras clave en Google, los programadores encontrarán qué mensajes ofrecen los mejores resultados y ajustarán sus consultas con el tiempo. Por lo tanto, saber cómo construir mensajes de lenguaje natural elaborados para funciones complejas se convertirá en una habilidad por derecho propio.
Habilidades de organización adecuadas. Una vez que se dé cuenta del mensaje correcto, probablemente querrá reutilizarlo y compartirlo con otros miembros de su equipo. Por lo tanto, será importante mantener una biblioteca de indicaciones útiles para alimentar el algoritmo tanto para evitar la duplicación como para permitir prácticas de codificación consistentes en toda la organización.
Depuración de errores de IA. Naturalmente, se requerirá alguna intervención humana en el futuro de la programación. Pero en lugar de centrarse en escribir funciones de nivel básico, es probable que los ingenieros dediquen más tiempo al diagnóstico y la configuración de errores. En este nuevo paradigma, los errores podrían deberse a que la IA interprete el aviso de forma ligeramente diferente a la prevista. O bien, pueden surgir errores si hay errores presentes en el código fuente en el que se basa el modelo de ML.
Ingenio para lograr resultados comerciales finales verdaderamente únicos. En una sociedad capitalista, si todos los barcos suben, también suben todas las expectativas. Ahora que el poder de la creación de software avanzado está más democratizado, aumentará la competencia. Destacar en esta nueva economía requerirá ideas genuinamente innovadoras que brinden resultados tangibles al negocio. También enfatiza otras necesidades, como crear excelentes experiencias de usuario, usar tácticas de marketing creativas y conservar relaciones profesionales clave.
Abstracciones basadas en IA del mañana
Sin duda, la IA de generación de código actual es cada vez más influyente. Sin embargo, no creo que esto reemplace los trabajos en el corto plazo. En cambio, es más probable que la IA de generación de código aumente el flujo de trabajo diario del desarrollador. Todavía necesita conocimientos básicos de programación para diagnosticar errores. También necesita conocimientos arquitectónicos para unir los componentes, sin mencionar la implementación de aplicaciones de manera rentable y sostenible. Por último, una mentalidad de seguridad sigue siendo integral para detectar vulnerabilidades de código abierto y garantizar el cumplimiento de la normativa de datos.
En cambio, la IA abre nuevas oportunidades para que los ingenieros se pongan al día con sus trabajos pendientes y entreguen más funciones rápidamente. También podría abrir nuevas oportunidades para que los especialistas en IA desarrollen experiencia trabajando junto con algoritmos de generación de código y entrenándolos y comprendiendo los matices entre ellos.
Dicho todo esto, las limitaciones anteriores no están escritas en piedra (¡de ahí el “todavía”!). Todavía estamos en las primeras etapas de la IA generativa. Y los obstáculos mencionados anteriormente podrían muy bien convertirse en nuevas fronteras para las abstracciones basadas en IA del mañana.
Autor: Bill Doerrfeld
Artículo original aquí