Está claro que la IA generativa ya está siendo utilizada por una mayoría (una gran mayoría) de programadores. Eso es bueno. Incluso si los aumentos de productividad son menores de lo que muchos piensan, 15% a 20% es significativo. Facilitar el aprendizaje de programación y comenzar una carrera productiva tampoco es nada de qué quejarse. Todos quedamos impresionados cuando Simon Willison le pidió a ChatGPT que lo ayudara a aprender Rust. Tener ese poder al alcance de tu mano es asombroso.
Pero hay una duda que comparto con un número sorprendentemente grande de otros desarrolladores de software program. ¿El uso de IA generativa aumenta la brecha entre los desarrolladores junior principiantes y los desarrolladores senior?
La IA generativa facilita muchas cosas. Cuando escribo Python, a menudo me olvido de poner dos puntos donde deben estar. Con frecuencia me olvido de usar paréntesis cuando llamo print()
aunque nunca usé Python 2. (Los hábitos muy antiguos son muy difíciles de eliminar, hay muchos lenguajes más antiguos en los que imprimir es un comando en lugar de una llamada a una función). Por lo common, tengo que buscar el nombre de la función de pandas que debo realizar. bueno, casi cualquier cosa, aunque uso mucho los pandas. La IA generativa, ya sea que makes use of GitHub Copilot, Gemini u otra cosa, elimina ese problema. Y he escrito que, para el principiante, la IA generativa ahorra mucho tiempo, frustración y espacio psychological al reducir la necesidad de memorizar funciones de biblioteca y detalles arcanos de la sintaxis del lenguaje, que se multiplican a medida que cada idioma siente la necesidad de captar a la altura de su competencia. (¿El operador de la morsa? Dame un respiro.)
Sin embargo, hay otro lado de esa historia. Todos somos vagos y no nos gusta recordar los nombres y firmas de todas las funciones de las bibliotecas que utilizamos. ¿Pero no es bueno tener que conocerlos? Existe la fluidez con un lenguaje de programación, al igual que con el lenguaje humano. No se adquiere fluidez utilizando un libro de frases. Eso podría ayudarte a pasar un verano viajando con mochila por Europa, pero si quieres conseguir un trabajo allí, tendrás que hacerlo mucho mejor. Lo mismo ocurre en casi cualquier disciplina. Tengo un doctorado en literatura inglesa. Sé que Wordsworth nació en 1770, el mismo año que Beethoven; Coleridge nació en 1772; en 1798 (más o menos algunos años) se publicaron muchos textos importantes en Alemania e Inglaterra; La revolución francesa fue en 1789. ¿Significa eso que algo importante estaba sucediendo? ¿Algo que vaya más allá de que Wordsworth y Coleridge escriban algunos poemas y Beethoven escriba algunas sinfonías? Da la casualidad de que así es. Pero, ¿cómo se le ocurriría a alguien que no estaba familiarizado con estos hechos básicos informar a una IA sobre lo que estaba sucediendo cuando todos estos eventos separados chocaron? ¿Se le ocurriría preguntar sobre la conexión entre Wordsworth, Coleridge y el pensamiento alemán, o formular concepts sobre el movimiento romántico que trascendió a los individuos e incluso a los países europeos? ¿O nos quedaríamos atrapados en islas de conocimiento que no están conectadas, porque somos nosotros (no las IA) quienes las conectamos? El problema no es que una IA no pueda establecer la conexión; es que no se nos ocurriría pedirle que hiciera la conexión.
Veo el mismo problema en la programación. Si quieres escribir un programa, debes saber lo que quieres hacer. Pero también necesitas una thought de cómo se puede hacer si quieres obtener un resultado no trivial de una IA. Hay que saber qué preguntar y, sorprendentemente, cómo preguntarlo. Experimenté esto el otro día. Estaba haciendo un análisis de datos easy con Python y pandas. Iba línea por línea con un modelo de lenguaje, preguntando “¿Cómo hago?” para cada línea de código que necesitaba (algo así como GitHub Copilot), en parte como un experimento, en parte porque no uso pandas con la suficiente frecuencia. Y la modelo me acorraló en un rincón del que tuve que salir. ¿Cómo llegué a ese rincón? No por la calidad de las respuestas. Cada respuesta a cada una de mis indicaciones fue correcta. En mi autopsia, revisé la documentación y probé el código de muestra que proporcionó el modelo. Me arrinconé por la única pregunta que no sabía que debía hacer. Fui a otro modelo de lenguaje, compuse un mensaje más largo que describía todo el problema que quería resolver, comparé esta respuesta con mi torpe truco y luego pregunté: “¿Qué significa el reset_index()
¿Qué método haces? Y luego me sentí (no incorrectamente) como un principiante despistado: si hubiera sabido pedirle a mi primer modelo que restablecera el índice, no me habrían arrinconado.
Supongo que podrías leer este ejemplo como “mira, realmente no necesitas conocer todos los detalles de los pandas, solo tienes que escribir mejores indicaciones y pedirle a la IA que resuelva todo el problema”. Me parece bien. Pero creo que la verdadera lección es que es necesario dominar los detalles. Ya sea que dejes que un modelo de lenguaje escriba tu código en fragmentos grandes o una línea a la vez, si no sabes lo que estás haciendo, cualquiera de los dos enfoques te causará problemas más temprano que tarde. Quizás no necesites conocer los detalles de los pandas. groupby()
funciona, pero necesitas saber que está ahí. Y necesitas saber eso reset_index()
está ahí. Tuve que preguntarle a GPT “¿No funcionaría mejor si usaras groupby()
?” porque le pedí que escribiera un programa donde groupby()
Period la solución obvia, y no fue así. Es posible que necesite saber si su modelo ha utilizado groupby()
correctamente. Las pruebas y la depuración no han desaparecido ni desaparecerán.
¿Por qué es esto importante? No pensemos en un futuro lejano, cuando la programación como tal ya no sea necesaria. Necesitamos preguntarnos cómo los programadores junior que ingresan ahora a este campo se convertirán en programadores senior si se vuelven demasiado dependientes de herramientas como Copilot y ChatGPT. No es que no deban usar estas herramientas: los programadores siempre han creado mejores herramientas para sí mismos, la IA generativa es la última generación en herramientas y un aspecto de la fluidez siempre ha sido saber cómo usar herramientas para ser más productivos. Pero a diferencia de generaciones anteriores de herramientas, la IA generativa se convierte fácilmente en una muleta; podría impedir el aprendizaje en lugar de facilitarlo. Y los programadores jóvenes que nunca adquieren fluidez, que siempre necesitan un libro de frases, tendrán problemas para dar el salto a los mayores.
Y eso es un problema. He dicho, muchos de nosotros hemos dicho, que las personas que aprenden a usar la IA no tendrán que preocuparse por perder sus trabajos debido a la IA. Pero hay otro lado de esto: las personas que aprenden a usar la IA sin tener que dominar lo que están haciendo con la IA también tendrán que preocuparse por perder sus trabajos debido a la IA. Serán reemplazables, literalmente, porque no podrán hacer nada que una IA no pueda hacer. No podrán encontrar buenas indicaciones porque tendrán problemas para imaginar lo que es posible. Tendrán problemas para descubrir cómo realizar pruebas y tendrán problemas para depurar cuando la IA falle. ¿Qué necesitas aprender? Ésa es una pregunta difícil y es posible que mis concepts sobre la fluidez no sean correctas. Pero estaría dispuesto a apostar a que las personas que dominan los idiomas y las herramientas que utilizan utilizarán la IA de forma más productiva que las personas que no lo hacen. También apostaría a que aprender a mirar el panorama common en lugar de la pequeña porción de código en la que estás trabajando te llevará lejos. Finalmente, la capacidad de conectar el panorama common con el microcosmos de los detalles minuciosos es una habilidad que pocas personas tienen. No. Y, si te sirve de consuelo, no creo que las IA tampoco lo hagan.
Entonces, aprenda a usar la IA. Aprenda a escribir buenas indicaciones. La capacidad de utilizar la IA se ha convertido en algo que está en juego para conseguir un trabajo, y con razón. Pero no te detengas ahí. No permita que la IA limite lo que aprende y no caiga en la trampa de pensar que “la IA lo sabe, así que yo no tengo que hacerlo”. La IA puede ayudarle a adquirir fluidez: la respuesta a “¿Qué significa?” reset_index()
¿hacer?” Fue revelador, incluso si tener que preguntar fue humillante. Ciertamente es algo que probablemente no olvidaré. Aprenda a hacer preguntas generales: ¿Cuál es el contexto en el que encaja este fragmento de código? Hacer esas preguntas en lugar de simplemente aceptar los resultados de la IA es la diferencia entre usar la IA como muleta y usarla como herramienta de aprendizaje.