Por Federico de los Santos
Soy programador. Pero no es que trabaje de eso todos los días. A veces se da. Depende del proyecto. Decir ser programador es más definir un estilo de vida, no solo una profesión. Actualmente me encuentro programando algo chiquito, modesto, pero que son algunas miles de líneas. Decidí usar Inteligencia Artificial Generativa para que me ayude a ir más rápido. Y estos son los problemas, desafíos y tribulaciones con las que me encontré. Y cómo puede que impacten en el futuro.
Aprender a programar es algo que tiene muchas aristas. Sobre todo, hoy en día. Primero, uno tiene que aprender de lógica y matemática. Hay que saber detectar patrones, representar ideas abstractas y entender los caminos de tomas de decisiones. Eso hubo que saberlo siempre. Pero también hay que conocer el lenguaje en que uno programa. El problema es que una aplicación actual, requiere saber al menos 4 o 5 lenguajes. Y los lenguajes cambian. Cambian muy rápido. En 2001 comencé a programar con una tecnología renovada y de avanzada. Dejé las tecnologías viejas y monolíticas que usaba antes. En 23 años, el lenguaje nuevo, C# (se pronuncia c-sharp, si-sharp si uno quiere ser más fifí) tuvo 10 versiones. Cada nueva versión cambia y mejora cosas. Y ese es uno de los cinco lenguajes que debo usar cuando programo.
Estoy lleno de libros de programación viejos. Los compraba o me los regalaban en las primeras épocas para aprender a programar. Y eran libros de referencia. Si uno sabía cómo eran los lenguajes de programación, iba al libro, leía el capítulo o las secciones que le interesaba conocer y había aprendido. Escribía ese código y listo.
En los últimos 20 años, Internet se llenó de sitios webs de preguntas y respuestas que los programadores alimentamos durante 20 años con nuestras preguntas y sus respuestas. Sitios como Stack Overflow son los primeros resultados de cuando uno busca en un buscador de internet sobre su pregunta. Y en lugares como GitHub, y antes CodeProject, uno puede encontrar ejemplos completos de aplicaciones, que en la mayoría de los casos son libres de copiarse y a veces el costo más alto es simplemente declarar en nuestro código fuente que usamos código de esa aplicación que esa otra persona programó primero.
Ni la música ni la cocina tienen el nivel de colaboración que logramos los creadores de software desde que empezamos a programar computadoras hace seis décadas. Gracias al impulso de la Fundación para el Software Libre, así como otros actores, entre académicos y no gubernamentales, que impulsaron el compartir las mejoras al código fuente de la misma forma que lo hizo el creador original, es que logramos que millones de personas más fueran cada vez más productivas y pudieran programar. No hay industria más abierta que la del software. Indiscutible.
Durante todo ese tiempo, algunas empresas eligieron ayudar a los programadores con herramientas que programaran por ellos. Son los generadores de código. En Uruguay se desarrolló GeneXus. No deja de tener su propio lenguaje, pero que luego es interpretado y escribe código más complejo y contiene mucho complemento de cosas que siempre se hacen igual. Esos generadores de código le dan la oportunidad al programador que se dedique al negocio, no a los fierros. Y eso simplifica mucho y acelera los tiempos de desarrollo. Compañías más tradicionales, se enfocaron en hacer que la escritura de código sea más rápida, generando plantillas y haciendo que el programador tuviera que teclear menos. Llegan incluso a proponer líneas enteras de código y a sugerir nombres de elementos que normalmente inventaría el programador. Yo soy de los que programa de esa forma y me encanta.
Ahora, con la Inteligencia Artificial Generativa (una de las tantas inteligencias artificiales que existen y existirán) se ha llegado al punto en que una computadora nos dice cómo programar una computadora en base a una simple descripción de lo que queremos que haga el programa. No es que ya no se necesite saber programar. Es como que alguien se leyó 200 páginas de preguntas, comentarios y respuestas en Stack Overflow, unió todos los puntos y nos da la solución. Pero obtener la respuesta que realmente nos sirva, requiere que sepamos expresarla, de que podamos conocer la lógica que se debe seguir y de que podamos entender si el código entregado hace lo que queremos que haga, o mejor aún, lo que necesitamos que haga.
Ahora, esa inteligencia artificial se alimentó de contenido ya existente. Si dejamos de hacer preguntas en sitios y foros de internet, si dejamos de publicar nuestros blogs, si dejamos de compartir nuestro código en repositorios abiertos, ¿de qué se va a alimentar la inteligencia artificial en el futuro? ¿De ella misma?
El problema de una retroalimentación cerrada es que no se generan ideas nuevas y algunas de esas ideas terminarán ganando sobre otras, incluso cuando otras sean mejores. Lo que empieza a estar en juego es la innovación de la industria y eso depende del equilibrio entre quienes creen tecnología y nuevas ideas y quienes la usen solo por razones productivas. Sin duda, ya debe haber gente pensando en cómo resolver esto. Lo que no sabemos es si hay una solución o una nueva forma de inteligencia artificial sustituirá a la generativa y a los grandes modelos de lenguaje.