
[27/07/2023] La inteligencia artificial generativa se ha apoderado de la imaginación popular y ha iniciado una nueva fiebre del oro tecnológico. Si bien se ha centrado mucha atención en las herramientas de inteligencia artificial (IA) que producen prosa en lenguaje natural y arte visual, en los círculos tecnológicos la inteligencia artificial está ganando un mayor interés por sus capacidades de codificación. Puede describir el programa que desea a un chatbot de IA, y le devuelve el código ejecutable en segundos, algo que intriga y desconcierta al programador promedio.
[Reciba lo último de CIO Perú suscribiéndose a nuestro newsletter semanal]
La perspectiva de la programación usando IA ha dado lugar a algunas predicciones bastante grandiosas sobre el futuro de la industria del software; en particular por parte de los ejecutivos de la alta gerencia, los consultores y los expertos que los siguen. Pero ¿qué pasa con los programadores y gerentes que trabajan con herramientas de inteligencia artificial en el día a día? Le preguntamos a un puñado de personas que programan con IA generativa cómo les está yendo hasta ahora. Lo que aprendimos es que la inteligencia artificial realmente está cambiando la forma en que las personas trabajan, pero las máquinas no reemplazarán a los codificadores humanos en el corto plazo.
Cómo la inteligencia artificial ayuda a los programadores
Las dos herramientas de inteligencia artificial generativa más utilizadas por los desarrolladores con los que hablamos fueron ChatGPT -el conocido chatbot de inteligencia artificial de OpenAI- y GitHub Copilot, que se integra en Visual Studio y otros IDE. Si bien ambas herramientas pueden generar código basado en consultas de lenguaje natural, Copilot y su sucesor experimental, Copilot X, pueden ir un paso más allá del modelo conversacional, actuando como una especie de autocompletado IDE mejorado que anticipa en qué está trabajando el desarrollador.
Vanessa Freudenberg, cofundadora y arquitecta en jefe de Croquet.io, afirma que usa GitHub Copilot en su codificación diaria con Visual Studio Code. Ella explica cómo funciona.
Si escribo la línea:
let x = this.leftMargin + this.width / 2;
sugerirá la siguiente línea:
let y = this.topMargin + this.height / 2;
Y sabe que necesita reemplazar "ancho” e "izquierda” con "alto” y "superior”. Eso me ahorra mucha escritura.
Panickos Neophytou, cofundador y CTO de NetBeez, afirma que usa Copilot X y ChatGPT cada vez que codifica. Describe dos enfoques diferentes para ir más allá del autocompletado con estas herramientas. La primera es sistemática. "Describa una función muy bien definida con entradas específicas, ejemplos de salidas esperadas, así como los modelos de datos involucrados, que incluyen tablas de bases de datos con asociaciones implícitas”, afirma Neophytou. "La inteligencia artificial generalmente puede inferir las asociaciones. Pídale que la implemente en un lenguaje y formas específicos. Las 'tareas' definidas en las herramientas de gestión de proyectos deben definirse como este tipo de aviso”.
Neophytou también cree que una técnica más informal y conversacional puede producir buenos resultados. En este modo, afirma él, "mientras usted realiza una tarea, hace preguntas que surgen en su mente sobre cómo hacer ciertas cosas. Es como tener un ingeniero experimentado a su lado respondiendo sus preguntas y guiándole para terminar la tarea”.
Independientemente de la técnica que utilice, aprender a activar la inteligencia artificial correctamente es todo un arte. "Utilizo indicaciones de cadena de pensamientos para asegurarme de obtener el verbo correcto destinado a comenzar y refinar mi indicación”, sostiene Shanea Leven, fundadora y directora ejecutiva del proveedor de software, CodeSee. "Elegir los verbos correctos y ser descriptivo es realmente importante para crear un buen mensaje”. (La ingeniería rápida se está convirtiendo en una disciplina en auge por esta misma razón).
Los puntos fuertes de codificación de la inteligencia artificial
Los desarrolladores con los que hablamos ofrecieron una variedad de casos de uso en los que las herramientas de inteligencia artificial les ayudaron a realizar su trabajo. Esto es lo que se destacó.
Generación de documentación a partir del código: La documentación del software es un formato bastante estructurado, que es un área donde la inteligencia artificial prospera. "Algo que me encanta al usar ChatGPT es escribir documentación [o] comentarios en mi código”, afirma Chris Love, fundador de la consultora web, Love2Dev. "Eso lleva mucho tiempo hacerlo a mano. Pero una vez que tengo una función completa, puedo darle la función y tener una buena página de documentación escrita en uno o dos segundos. ¡Me encanta eso!”
...y viceversa: la inteligencia artificial también puede generar código a partir de comentarios o documentación. Freudenberg de Croquet.io dio un ejemplo simple de Copilot generando código a partir de una sola línea de comentario, donde el siguiente comentario:
// get file name from our url
Produjo este output:
let fileName = window.location.pathname.split("/").pop();
"Probablemente habría escrito esto de otra manera -soy una chica de expresiones regulares- pero es una solución perfectamente simple y posiblemente más legible, así que simplemente la aceptaría”, afirma. "No solo es un gran ahorro de tiempo, sino que a veces también me enseña modismos que tal vez no haya descubierto”.
Soluciones a problemas resueltos: Los desarrolladores saben que parte de la programación está constantemente reinventando la rueda. Puede ser frustrante trabajar en un problema que uno sabe que alguien, en algún lugar, ya ha resuelto. Jeff Wills, líder de práctica de ingeniería en la firma de desarrollo de software Rise8, ve esto como un dominio maduro para la asistencia de inteligencia artificial. "Digamos que hago un método para calcular la distancia entre dos puntos en una esfera”, explica Wills. "Copilot saldrá automáticamente y encontrará el algoritmo Haversine y generará todo ese código”.
Wills encuentra este caso de uso particularmente útil en los casos en que la alternativa al código generado por inteligencia artificial es agregar una gran biblioteca a su aplicación. "Digamos que no quiero traer una biblioteca de geometría completa a mi código e inflar la base de código”, explica Wills. "Realmente solo necesito ese algoritmo. Probablemente lo escribiré yo mismo y lo incluiré, o usaré ChatGPT o Copilot para ayudarme a producirlo. Ese es lo mejor de lo mejor para la inteligencia artificial en este momento”.
Actualización o limpieza del código: Chris Love de Love2Dev considera que ChatGPT es especialmente útil para actualizar el código que ya ha escrito. "He abordado la actualización de módulos antiguos de Node.js que no he actualizado solo porque el tiempo que lleva escribir el código es más largo de lo que vale”, afirma Love. "La situación más común que busco es convertir funciones antiguas basadas en promesas para usar async/await. Esta última es una sintaxis más limpia, pero no era tan común cuando escribí el módulo. También uso sintaxis más modernas como desestructuración y convertir declaraciones de variables de var a const y let”.
Codificación más rápida (quizás): Muchos desarrolladores con los que hablamos afirmaron que trabajar con Copilot o ChatGPT les hizo sentir que podían hacer su trabajo más rápido, aunque admitieron que no necesariamente podían cuantificar eso. "Lo que creo que hace al final es ayudarme a escribir un mejor código un poco más rápido”, señala Love. "Es difícil decir qué porcentaje es más rápido, pero es tangible para mí”.
"Siento que puedo iterar a través de posibles soluciones más rápido”, anota Wills de Rise8. "En teoría, eso debería acelerarme, ¡pero tal vez estoy buscando más soluciones posibles! Así que tal vez no obtenga una recompensa a tiempo, sino en calidad, porque pude iterar un poco más”.
Qué tener en cuenta
Por otro lado, casi todas las personas con las que hablamos enfatizaron que las herramientas de inteligencia artificial no son mágicas, y que había muchas trampas para tener en cuenta -así como realidades inesperadas que usted podría encontrar al usarlas.
Sea muy específico: Las funciones de lenguaje natural de los chatbots de inteligencia artificial pueden parecer casi mágicas, pero probablemente no entiendan tanto como podría pensar (o esperar) que entiendan. Debe ser lo más explícito y específico posible para obtener los mejores resultados. "Actualmente, ChatGPT no puede ver lo que está codificando en las aplicaciones de terceros que está utilizando”, afirma Liam Edwards, CEO de Liam's Professional Websites. "Por esta razón, debe brindarle la mayor cantidad de información sobre el problema de codificación o la consulta que tiene. Por ejemplo, si afirmara: 'escríbame CSS personalizado que haga que el fondo del botón sea blanco', obtendría un código que puede funcionar o puede que no. Si afirmara: 'escríbame un código CSS personalizado que haga que el fondo de un botón sea blanco (la clase del botón es .button)', obtendría una respuesta mucho más precisa para mi situación”.
Obtendrá más valor cuando sea posible hacer preguntas sobre el código base específico de una empresa, y luego hacer que la inteligencia artificial realice la tarea real por usted. Eso hará que la inteligencia artificial realmente sea revolucionaria.
Para Edwards, esto ejemplifica otro punto importante sobre el uso de estas herramientas: necesita tener experiencia y conocimientos de codificación para aprovecharlas al máximo. Su ejemplo, afirma él, "muestra cómo una persona que no codifica bien tardaría más y obtendría respuestas menos precisas”.
Hágalo simple: Peter Surowski, CTO de la agencia de diseño y desarrollo web, Brain Jar, afirma que usa inteligencia artificial cuando está escribiendo código, "pero solo es útil para tareas pequeñas, para las que normalmente usaría Google. Por ejemplo, si necesito un código repetitivo solo para configurar las cosas, ChatGPT es excelente para eso. O si no puede recordar cómo escribir una declaración de cambio o una función ternaria en cualquier idioma, usted puede preguntarle a ChatGPT. Pero para cualquier cosa más complicada, es inútil. Creo que las personas que decían que les quitaría el trabajo estaban siendo tontas”.
Leven de CodeSee afirma que "en este momento, ChatGPT es bueno en las respuestas de código generales, pero no necesariamente excelente en la generación de código específico de dominio, el andamiaje y el autocompletado. Es excelente para buscar, pero al mismo tiempo está limitado principalmente por el pequeño tamaño del contexto”.
Aun así, Leven afirma: "espero que esto mejore con el tiempo. Tendrá más valor cuando sea posible hacer preguntas sobre el código base específico de una empresa, y luego hacer que la inteligencia artificial realice la tarea real por usted. Eso hará que la inteligencia artificial realmente sea revolucionaria”.
Las pruebas son imprescindibles: La mayoría de las tiendas de software se han movido a un régimen de desarrollo en el que el código debe pasar un amplio conjunto de pruebas automatizadas antes de entrar en producción. El código generado por inteligencia artificial no es la excepción. Si bien eso puede no ser un inconveniente, en sí mismo, puede ser una decepción para quienes tienen una visión poco realista de lo que la tecnología puede lograr. "Tengo que revisar todo y, por supuesto, probarlo”, afirma Love de Love2Dev. "Hay demasiados desarrolladores que históricamente han tomado lo que está en Stack Overflow y lo han aceptado como la respuesta correcta; estoy seguro de que sucede lo mismo con ChatGPT”.
Es necesario ordenar un poco: Casi nadie nos indicó que estaban cortando y pegando código generado por inteligencia artificial sin modificarlo. "Por lo general, debe asegurarse de que el código producido sea correcto y esté probado”, señala Neophytou de NetBeez. "La mayoría de las veces necesita ser refinado un poco, no reescrito en gran medida. Pero en algunos casos raros, el código que produce es exactamente lo que necesitaba, y esos momentos son simplemente deslumbrantes y muy gratificantes (y, al mismo tiempo, atemorizantes)".
"Por lo general, tendrán que trabajar en algunas cosas de la guía de estilo para que coincida con el código base”, afirma Wills de Rise8. Este trabajo incluye "cambiar el nombre de los métodos, cambiar un poco el formato y mantener todo limpio y consistente, como si el código base fuera escrito por una sola persona”.
Tenga en cuenta la seguridad: Cualquier técnica nueva que se utilice para escribir código inevitablemente abrirá una superficie de ataque para actores malintencionados de maneras que son difíciles de anticipar, y la inteligencia artificial generativa no es la excepción. En un ejemplo reciente, los investigadores de seguridad descubrieron que las alucinaciones de ChatGPT pueden incluir paquetes npm inexistentes -y que un atacante podría predecir esos nombres de paquetes, crearlos y llenarlos con código malicioso.
Surya Sanchez, fundadora de DeepIdea Lab, que utiliza ampliamente la inteligencia artificial como parte de su flujo de trabajo, afirma que la forma de combatir este tipo de ataques es "ejecutar el código localmente, identificar errores y comprender que el código generado por la inteligencia artificial se refiere a paquetes no inexistentes”. En esas situaciones, reescribimos el código manualmente, brindando instrucciones más claras para enfocarnos en secciones particulares en lugar de todo el código. Sánchez también aconseja que "evite compartir secretos o claves API, ya que la inteligencia artificial podría ser revisada por terceros. Queremos asegurarnos de que la información confidencial relacionada con la producción permanezca segura”.
De alguna manera, las limitaciones actuales de la inteligencia artificial sirven como una función de seguridad integrada, al menos por ahora. "En mi opinión, las limitaciones de tamaño del token o de la solicitud/respuesta le protegen contra el código malicioso”, afirma Love. "Le obliga a revisar todo en pequeños fragmentos”.
Herramientas de inteligencia artificial en las escuelas y en el trabajo
Como profesor que trabaja con estudiantes de programación informática en la Universidad de Ámsterdam, Max van der Broek tiene una perspectiva un tanto única sobre cómo los programadores emergentes están pensando en la inteligencia artificial. Recientemente realizó una encuesta que encontró que más de la mitad de los estudiantes en su programa usaban ChatGPT para la codificación. (Este es un porcentaje más alto que aquellos que lo usan para tareas de escritura). Un resultado intrigante de la encuesta es que los estudiantes quieren pautas para el uso de ChatGPT, y encuentran que la política actual es poco clara y demasiado estricta: quieren que se permitan algunos usos, pero no todos.
"Me puedo imaginar un futuro en el que usar inteligencia artificial generativa sea ilegal en el primer año a medida que uno aprende los fundamentos, y se permita como copiloto en años posteriores a medida que crea proyectos más grandes y complejos”, afirma van der Broek, y agrega que "las mejores prácticas que tenemos ahora seguramente quedarán obsoletas el próximo año”.
Los desarrolladores en el lugar de trabajo también querrán saber cómo y cuándo pueden usar inteligencia artificial en el trabajo, por lo que es imperativo que los gerentes comiencen a descubrir las reglas, porque con toda probabilidad, algunos de ellos ya lo están haciendo. En Rise8, Wills afirma que el uso de la inteligencia artificial fue un fenómeno de arriba hacia abajo y de abajo hacia arriba. "Brian Kroger, nuestro fundador, estaba muy interesado”, comenta Wills. "Le gusta estar al tanto de lo que es la tecnología más actual, por lo que planteó preguntas en nuestros canales de ingeniería para que reflexionáramos al respecto. Pero, al mismo tiempo, teníamos personas que, cuando ChatGPT realmente explotó, estaban allí de inmediato como primeros usuarios, y comenzaron a usar ese recurso para ver qué estaba produciendo y cómo podían integrarlo en su flujo de trabajo diario”. Wills también afirma que Rise8 ha presupuestado dinero que los desarrolladores pueden usar para pagar las herramientas que les resulten útiles. Muchos han optado por pagar por el acceso a ChatGPT-4, que según él produce mejores resultados que el ChatGPT-3.5 gratuito.
¿Qué depara el futuro?
Una de las mayores preocupaciones que ha generado la inteligencia artificial generativa es que eliminará decenas de trabajos humanos que parecían a salvo de la automatización, entre ellos la codificación. Si bien es imposible decir lo que depara el futuro, los desarrolladores y gerentes con los que hablamos se mostraron en su mayoría escépticos. "Puede escribir fragmentos de código, y eso es muy impresionante”, indica Surowski de Brain Jar. "Pero no puede implementarlo, convertirlo en un complemento, probarlo y solucionar problemas. Eso es lo que hace un desarrollador. No somos solo escritores de código. De hecho, esa es una parte bastante pequeña de nuestro trabajo. Y es la única parte en la que la inteligencia artificial puede ayudar”.
En general, Leven de CodeSee está de acuerdo. "Creo que habrá empresas que elijan reducir el tamaño de sus equipos de ingeniería”, afirma Leven, pero "las mejores empresas con visión a futuro no harán eso. Mantendrán su lugar para superar a sus competidores y ganar su espacio. Las empresas que hacen esto seguirán necesitando buenos desarrolladores porque la verdad es que la inteligencia artificial no puede razonar, sopesar compensaciones o manejar nada no lineal o complejo todavía; por lo que, por ahora, su ayuda es limitada a menos que usted esté construyendo algo simple. Hemos visto los mejores resultados de varias compañías que usan humanos e inteligencia artificial juntos”.
Basado en el artículo de Josh Fruhlinger (InfoWorld) y editado por CIO Perú
Puede ver también: