La IA es una moda y la programación está muerta: Una perspectiva matizada sobre ChatGPT, AutoGPT y el futuro de los trabajos de desarrollo.
Hoy en día, las dos opiniones más populares en las redes sociales son que la programación como carrera está esencialmente muerta y que los modelos de lenguaje como ChatGPT y LLaMA son solo trucos de fiesta con poco valor práctico.
Sin embargo, creo que la realidad es mucho más matizada, y ambos puntos de vista pueden ser perjudiciales o causar ansiedad para aquellos que apenas comienzan o consideran la ingeniería de software como una trayectoria profesional. En este artículo, hablaré sobre cómo la IA cambiará el panorama del desarrollo de software en los próximos años.
Puntos clave
- 🤖 La IA seguirá mejorando, probablemente en forma de curva en S, pero no sabemos en qué punto de la curva nos encontramos actualmente.
- 🔥 Es poco probable que los LLM quiten puestos de trabajo a los ingenieros de software, pero permitirán a los equipos y a los colaboradores individuales ser más eficientes y hacer más con menos tiempo y recursos.
- ⚙️ Las herramientas como ChatGPT suelen requerir que se den instrucciones detalladas en un formato lógico para obtener buenos resultados de código, esto es esencialmente el papel de un programador sólo que en un lenguaje nuevo y esotérico.
- 👀 Si la IA mejora hasta el punto de eliminar por completo a los humanos del proceso de software, entonces habremos llegado prácticamente a la AGI, momento en el que tendremos problemas mucho mayores de los que preocuparnos basándonos en nuestra actual estructura social.
Suscríbete a la Newsletter de AI MafIA, la #1 más leída sobre IA en español 🤖👌
Y ahora sigamos viendo como la IA va a afectar a los programadores del futuro…
Mejora de la IA y la curva en S
La IA ha mejorado drásticamente en los últimos años, con avances en la generación de texto y código, así como contenido generado por IA como videos, voz e imágenes.
Estos rápidos avances pueden parecer un progreso exponencial, pero la historia sugiere que los avances tecnológicos a menudo siguen sucesivas curvas en S.
La pregunta principal es dónde nos encontramos actualmente en la curva; quizás estemos justo antes de la meseta, con una pequeña cantidad de avance restante para la IA y los modelos de lenguaje.
LLMs como el siguiente paso en el avance de los IDE
Herramientas como ChatGPT, GitHub Copilot y Copilot X han mejorado la eficiencia de los desarrolladores en todo el mundo. Sin embargo, no están reemplazando a los programadores; son herramientas que permiten a los programadores trabajar de manera más eficiente. Del mismo modo que los entornos de desarrollo integrado (IDE) como JetBrains revolucionaron la productividad, las herramientas de IA representan el siguiente paso lógico en las mejoras del desarrollo de software.
Pero no sustituyen a los programadores, sino que son herramientas que les permiten trabajar mejor.
La primera vez que pasé de un editor de texto como Sublime a un IDE JetBrains completo fue una locura. Mi productividad se disparó porque de repente tenía acceso a autocompletado, refactorización automatizada, pruebas integradas y conexiones más profundas con las dependencias de mi proyecto. Pude producir código más limpio a un ritmo mucho más rápido.
Estas herramientas de IA son el siguiente paso lógico en ese mismo proceso de mejora.
Llevo utilizando Copilot y ChatGPT en mis proyectos personales desde principios de año, y he notado una mejora similar de la eficiencia.
Gran parte del trabajo realizado en los nuevos proyectos son tareas en las que no tengo que pensar mucho ni esforzarme mucho, pero que ocupan tiempo. Creación de pruebas automatizadas, plantillas frontend, nuevas clases, o el formato de salida de datos, puedo completar estos elementos 10x más rápido ahora que tengo la ayuda de estas herramientas.
Yendo más allá, ha habido ocasiones en las que he necesitado crear un cuerpo de función complicado o trabajar con una biblioteca con la que no estoy muy familiarizado. Puedo escribir un comentario básico para lo que estoy tratando de construir en ese instante, y la IA escupe un bloque de código que suele ser útil para satisfacer los requisitos que estoy buscando.
Por ejemplo, hace poco estaba en una aplicación PHP y quería trabajar con una popular biblioteca FFMpeg con una documentación bastante complicada. En lugar de eso, simplemente escribí lo siguiente
public function formatVideo($video)
{
// usa ffmpeg para convertir el video a un gif
}
Al pulsar enter después de hacer ese comentario obtuve un código sucinto que pude usar en el resto del proyecto, con unos pequeños retoques.
Pero lo cierto es que me ahorró mucho tiempo. Si hubiera conocido los detalles exactos de la biblioteca, seguro que me habría ahorrado uno o dos minutos. Pero como estaba en este terreno entre conocer el lenguaje pero no una biblioteca en particular, sabía exactamente lo que podía preguntar y podía usar el código que me daban inmediatamente. Todo ello sin tener que dedicar tiempo a estudiar la documentación, las preguntas de Stack Overflow o el método de ensayo y error.
Aquí es donde estas herramientas y la IA para programar realmente brillan, te permiten trabajar mejor.
Sin embargo, hay dos cosas.
- Es demasiado confiada. Ha habido múltiples ocasiones en las que la IA ha alucinado con argumentos o funciones que no existen en mi proyecto o en una librería que estoy usando. Puede que sea capaz de darle un empujoncito en la dirección correcta después de algunos reintentos, pero a veces se sale completamente de los raíles y escribe código que directamente no consigue lo que yo quería. Esto ha sido bastante raro, sin embargo.
- No está conectado. ChatGPT y Copilot son grandes en la creación de fragmentos de código que realizan una función específica de entrada dada. Una aplicación completa está todavía un poco fuera de nuestro alcance. En primer lugar, hay una barrera para la cantidad de texto, ya que incluso GPT-4 está limitado por 8K tokens (alrededor de ~6k palabras). En segundo lugar, incluso con el uso de bases de datos vectoriales y AutoGPT, a los modelos les cuesta ceñirse a un único estilo de desarrollo o cumplir una directiva general en un programa que apenas supera la complejidad moderada. Pídeles que creen una aplicación de tareas y es probable que sea totalmente funcional. Pídeles algo como un CRM para gestionar los clientes potenciales de una barbería y es más probable que empiece por el buen camino, pero acabará con funcionalidades que faltan o código ineficaz.
Esta última parte en particular nos lleva directamente a la siguiente sección.
Programadores como traductores para un lenguaje lógico
En esencia, los programadores son traductores para un lenguaje que trata la lógica. Su trabajo es tomar conceptos, ideas y flujos de trabajo en lenguaje humano y traducirlos a un lenguaje que una computadora pueda entender. Esta es la esencia de la programación y una de las principales razones por las que la profesión persistirá, incluso a medida que avancen las herramientas de IA.
Si le preguntas a mucha gente cuál es su definición de programador, probablemente obtendrás muchas respuestas que se reducen a «alguien que escribe código». Y aunque esto no es incorrecto, también omite una parte importante. Un programador, ingeniero de software, desarrollador o cualquier otro título que elijas, es un traductor de un lenguaje lógico.
Tu objetivo como programador es tomar un concepto, una idea o un flujo de trabajo en un lenguaje que puedas entender y traducirlo a un lenguaje que pueda entender un ordenador. Este lenguaje de programación está diseñado para evitar declaraciones ambiguas y tratar con lógica pura.
Mirando al presente, intentar construir una aplicación con un LLM con las limitaciones actuales de los modelos significa que probablemente vas a tener que juntar algunas de las piezas tú mismo. Esto todavía constituye programación, y necesitarás saber algunas cosas básicas sobre cuál es el lenguaje en el que te ha producido el código y dónde poner las piezas que te ha dado.
La AGI y la explosión de inteligencia transformarán todo
La IAG (Inteligencia Artificial Global), a diferencia de la inteligencia artificial especializada que conocemos actualmente, tendría la capacidad de comprender o aprender cualquier tarea intelectual que un ser humano pueda realizar. Esto tendría un impacto profundo y transformador en la forma en que funcionan nuestras economías, sistemas educativos y estructuras políticas.
Alcanzar el nivel de IAG implicaría que la IA podría manejar trabajos altamente especializados en medicina, ciencia, arte, ingeniería y otras disciplinas, superando a los humanos en términos de eficiencia y precisión. A medida que la IAG experimente una explosión de inteligencia, mejorándose a sí misma de manera exponencial, podríamos enfrentar estos desafíos de maneras que antes eran inimaginables.
Sin embargo, alcanzar el punto de la IAG y enfrentar una explosión de inteligencia también plantea preocupaciones éticas y de seguridad. El control y la regulación de la IA avanzada se convertirían en cuestiones críticas, ya que su mal uso podría tener consecuencias catastróficas. Además, deberíamos abordar el problema del desplazamiento laboral masivo y garantizar que las personas afectadas por la automatización tengan acceso a la educación, la capacitación y las oportunidades para prosperar en este nuevo paradigma.
En resumen, si llegamos al punto de la IAG nuestra sociedad enfrentaría cambios radicales en todos los aspectos de la vida. La programación sería solo una de las muchas profesiones afectadas por la automatización, y tendríamos que adaptarnos y enfrentar los desafíos y oportunidades que surgirían en este nuevo mundo dominado por la inteligencia artificial general en constante evolución.
La realidad: Los programadores y la IA coexistirán y evolucionarán
En conclusión, la IA continuará mejorando, probablemente siguiendo un patrón de curva en S. Sin embargo, es poco probable que los LLM quiten empleos a los ingenieros de software. En cambio, permitirán que los equipos y los individuos trabajen de manera más eficiente con menos recursos. Si bien puede haber cambios en la profesión de programación, se adaptará y seguirá existiendo como una parte vital del proceso de desarrollo de software.
Las herramientas generadas por IA tendrán sus limitaciones, y los programadores seguirán siendo necesarios para traducir las ideas humanas en código comprensible por computadoras. Además, si alguna vez alcanzamos el punto de la IAG, tendremos preocupaciones mucho más grandes que abordar dentro de nuestra sociedad.
Al final, la relación entre la IA y la programación no es una propuesta de uno u otro. En cambio, ambos coexistirán, evolucionarán y se apoyarán mutuamente a medida que avance la tecnología. La clave para los desarrolladores y los programadores aspirantes es adaptarse, aprender y adoptar las nuevas herramientas y técnicas que surjan, asegurándose de seguir siendo contribuyentes relevantes y valiosos en el mundo siempre cambiante del desarrollo de software.